🚀 Introducción
Integrar los servicios de la Administración Federal de Ingresos Públicos (AFIP) en tus proyectos PHP puede ser un desafío. Por suerte, Afip PHP Libre es una librería que simplifica muchísimo esta tarea. Está basado en el proyecto afip.php, que actualmente es un proyecto pago, pero su versión del 2022 permite hacer la integración de forma gratuita. Además, está bajo licencia MIT, lo que significa que podés usarla, modificarla y distribuirla sin problemas. En este artículo, te voy a guiar paso a paso para que puedas utilizar esta herramienta en tu aplicación PHP.
Hace poco me topé de nuevo con este proyecto y decidí integrarlo en una de mis aplicaciones. Sin embargo, al intentar pasarlo a producción, me di cuenta de que ahora hay que pagar para poder usar la versión más reciente de la librería. Afortunadamente, la versión gratuita del 2022 sigue disponible y funciona de 10.
🔧 Instalación de la librería afip-php-libre
- Descargar la versión gratuita de afip-php-libre):Podés obtener la versión gratuita de la librería desde el siguiente enlace: afip-php-libre en GitHub.
- Clonar el repositorio o descargar el contenido:Cloná el repositorio con git o descargá el archivo zip:
git clone https://github.com/adrianbarabino/afip-php-libre - Copiar el contenido de la carpeta
resa tu aplicación:Es importante que la carpetaAfip_resno sea accesible desde internet, ya que allí se guarda toda la información para acceder a los web services. Además, esta carpeta deberá tener permisos de escritura. - Reemplazar el certificado y la clave:
- Reemplazá
Afip_res/certpor tu certificado provisto por AFIP. - Reemplazá
Afip_res/keypor la clave generada.
- Reemplazá
🛠️ Generación de Certificados
Para integrar correctamente la librería afip-php-libre, necesitamos generar un certificado válido utilizando OpenSSL.
Habilitar Administrador de Certificados
- Agregar la aplicación «WSASS – Autogestión Certificados Homologación»:Ingresá en «Administrador de Relaciones de Clave Fiscal». Si tenés permiso para administrar las relaciones de otros contribuyentes, elegí el que querés administrar. De lo contrario, se elegirá el tuyo automáticamente.
- Seleccioná
Adherir servicio. - Elegí
AFIP > Servicios interactivos > WSASS - Autogestión Certificados Homologación. - Confirmá y tendrás acceso a la aplicación desde tu escritorio de AFIP.
- Seleccioná
- Agregar la aplicación «Administración de Certificados Digitales»:Ingresá en «Administrador de Relaciones de Clave Fiscal».
- Seleccioná
Adherir servicio. - Elegí
AFIP > Servicios interactivos > Administración de Certificados Digitales. - Confirmá y tendrás acceso a la aplicación desde tu escritorio de AFIP.
- Seleccioná
Obtener Certificado de Homologación
- Instalar OpenSSL:
- Linux/Unix: OpenSSL viene preinstalado.
- Windows: Descargá OpenSSL desde SourceForge. Luego, copiá la carpeta
binaC:\y renombrala aOpenSSL.
C:\OpenSSL. - Generar la clave de cifrado (key):En la consola, ejecutá el siguiente comando para generar el archivo key:
openssl genrsa -traditional -out [nombre de archivo] 2048Reemplazá[nombre de archivo]con el nombre que querés darle al archivo key. Por ejemplo:openssl genrsa -traditional -out keytest 2048 - Generar el Certificate Signing Request (CSR):Con la key generada, ejecutá el siguiente comando para crear el CSR: o
penssl req -new -key [nombre de archivo key] -subj "/C=AR/O=[nombre de la empresa]/CN=[nombre del certificado]/serialNumber=CUIT [CUIT]" -out [nombre de archivo para el CSR]Reemplazá los valores entre corchetes según corresponda. Por ejemplo:openssl req -new -key keytest -subj "/C=AR/O=Brote/CN=Test1/serialNumber=CUIT 11111111111" -out csr-test1 - Generar el certificado (cert):
- Ingresá en «WSASS – Autogestión Certificados Homologación» desde tu escritorio de AFIP.
- Seleccioná «Nuevo Certificado».
- Ingresá el nombre del certificado y pegá el contenido del CSR.
- Hacé clic en “Crear DN y obtener certificado”.
- Guardá el certificado generado en tu computadora junto con la key.
Obtener Certificado de Producción
- Instalar OpenSSL:Abrí una consola en modo administrador y navegá hasta
C:\OpenSSL. - Generar la clave de cifrado (key):En la consola, ejecutá el siguiente comando para generar el archivo key:
openssl genrsa -traditional -out [nombre de archivo] 2048Reemplazá[nombre de archivo]con el nombre que querés darle al archivo key. Por ejemplo:openssl genrsa -traditional -out keyproduccion 2048 - Generar el Certificate Signing Request (CSR):Con la key generada, ejecutá el siguiente comando para crear el CSR:
openssl req -new -key keyproduccion -subj "/C=AR/O=Nombre Empresa/CN=Test1/serialNumber=CUIT 11111111111" -out csr-produccion - Generar el certificado (cert):
- Ingresá en «Administración de Certificados Digitales» desde tu escritorio de AFIP.
- Seleccioná «Agregar alias».
- Ingresá el nombre del alias y seleccioná el CSR.
- Hacé clic en “Agregar Alias”.
- En la lista de Alias, seleccioná «ver» y luego «descargar».
📄 Configuración
- Configurar la librería:Creá un archivo
afip_config.phpen tu proyecto y agregá la siguiente configuración:<?php include 'ruta/a/la/libreria/src/Afip.php'; use Afip\Afip; $afip = new Afip(array( 'CUIT' => '12345678901', // TU CUIT 'production' => false, // Modo sandbox, cambiar a true para producción 'cert' => 'Afip_res/cert', // Ruta al certificado 'key' => 'Afip_res/key', // Ruta a la clave privada 'passphrase' => '' // Passphrase de la clave privada ));
📋 Ejemplo Práctico
- Generar una Factura Electrónica:A continuación, te muestro un ejemplo de cómo generar una factura electrónica:
<?php include 'afip_config.php'; $data = array( 'CantReg' => 1, 'PtoVta' => 1, 'CbteTipo' => 6, 'Concepto' => 1, 'DocTipo' => 80, 'DocNro' => '20123456789', 'CbteDesde' => 1, 'CbteHasta' => 1, 'CbteFch' => date('Ymd'), 'ImpTotal' => 121, 'ImpTotConc' => 0, 'ImpNeto' => 100, 'ImpOpEx' => 0, 'ImpIVA' => 21, 'ImpTrib' => 0, 'FchServDesde' => null, 'FchServHasta' => null, 'FchVtoPago' => null, 'MonId' => 'PES', 'MonCotiz' => 1, 'Iva' => array( array( 'Id' => 5, 'BaseImp' => 100, 'Importe' => 21 ) ) ); $res = $afip->ElectronicBilling->CreateVoucher($data); echo 'CAE: ' . $res['CAE'] . "\n"; echo 'Fecha de Vencimiento: ' . $res['CAEFchVto'] . "\n";
📚 Documentación
La librería afip-php-libre cuenta con una documentación completa que podés encontrar en el repositorio de GitHub. Esta documentación incluye ejemplos detallados y guías de uso para los distintos servicios que ofrece AFIP. Aquí te dejo un resumen de lo que podés encontrar:
Acceso a los métodos de Facturación Electrónica
Los métodos de este Web Service se encuentran disponibles en $afip->ElectronicBilling.
La especificación de este Web Service se encuentra disponible en Manual del Desarrollador.
Métodos disponibles
Obtener número del último comprobante creado
$last_voucher = $afip->ElectronicBilling->GetLastVoucher(1, 6); // Punto de venta 1 y tipo de comprobante 6 (Factura B)
Crear y asignar CAE a un comprobante
$res = $afip->ElectronicBilling->CreateVoucher($data);
echo 'CAE: ' . $res['CAE'];
echo 'Fecha de Vencimiento: ' . $res['CAEFchVto'];
Crear y asignar CAE a siguiente comprobante
$res = $afip->ElectronicBilling->CreateNextVoucher($data);
echo 'CAE: ' . $res['CAE'];
echo 'Fecha de Vencimiento: ' . $res['CAEFchVto'];
echo 'Número asignado: ' . $res['voucher_number'];
Obtener información de un comprobante
$voucher_info = $afip->ElectronicBilling->GetVoucherInfo(1, 1, 6); // Comprobante 1, punto de venta 1 y tipo de comprobante 6 (Factura B)
if ($voucher_info === NULL) {
echo 'El comprobante no existe';
} else {
echo 'Información del comprobante:';
echo '<pre>';
print_r($voucher_info);
echo '</pre>';
}
Obtener tipos de datos disponibles
$voucher_types = $afip->ElectronicBilling->GetVoucherTypes();
$concept_types = $afip->ElectronicBilling->GetConceptTypes();
$document_types = $afip->ElectronicBilling->GetDocumentTypes();
$aloquot_types = $afip->ElectronicBilling->GetAliquotTypes();
$currencies_types = $afip->ElectronicBilling->GetCurrenciesTypes();
$option_types = $afip->ElectronicBilling->GetOptionsTypes();
Transformar formato de fecha
$date = $afip->ElectronicBilling->FormatDate('19970508'); // Devuelve 1997-05-08
Obtener estado del servidor
$server_status = $afip->ElectronicBilling->GetServerStatus();
echo 'Estado del servidor:';
echo '<pre>';
print_r($server_status);
echo '</pre>';
✅ Conclusión
Integrar AFIP en tu aplicación PHP es ahora más sencillo gracias a la librería afip-php-libre. Aunque la versión actual del proyecto es paga, esta versión te permite hacer esta integración de manera gratuita. Siguiendo estos pasos, podés empezar a emitir facturas electrónicas de forma rápida y eficiente. No dudes en consultar la documentación completa para aprovechar al máximo todas las funcionalidades que ofrece esta herramienta.
Espero que este artículo te sea útil y puedas implementarlo sin problemas. Si tenés alguna pregunta o necesitas más detalles, ¡no dudes en preguntar!
También te puede interesar
Más lecturas cerca de este destino o tema.

Deja un comentario