Development

Cómo Integrar AFIP en PHP gratis con la Librería afip-php-libre

7 min de lecturaAdrián Barabino

🚀 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

  1. 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.
  2. 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
  3. Copiar el contenido de la carpeta res a tu aplicación:Es importante que la carpeta Afip_res no 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.
  4. Reemplazar el certificado y la clave:
    • Reemplazá Afip_res/cert por tu certificado provisto por AFIP.
    • Reemplazá Afip_res/key por la clave generada.
    Para más información sobre cómo generar la clave y el certificado, podés visitar la documentación de AFIP.

🛠️ 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

  1. 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.
  2. 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.

Obtener Certificado de Homologación

  1. Instalar OpenSSL:
    • Linux/Unix: OpenSSL viene preinstalado.
    • Windows: Descargá OpenSSL desde SourceForge. Luego, copiá la carpeta bin a C:\ y renombrala a OpenSSL.
    Abrí una consola en modo administrador y navegá hasta C:\OpenSSL.
  2. 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] 2048 Reemplazá [nombre de archivo] con el nombre que querés darle al archivo key. Por ejemplo: openssl genrsa -traditional -out keytest 2048
  3. Generar el Certificate Signing Request (CSR):Con la key generada, ejecutá el siguiente comando para crear el CSR: openssl 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
  4. 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

  1. Instalar OpenSSL:Abrí una consola en modo administrador y navegá hasta C:\OpenSSL.
  2. 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] 2048 Reemplazá [nombre de archivo] con el nombre que querés darle al archivo key. Por ejemplo: openssl genrsa -traditional -out keyproduccion 2048
  3. 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
  4. 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».
    Guardá el certificado generado en tu computadora junto con la key.

📄 Configuración

  1. Configurar la librería:Creá un archivo afip_config.php en 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

  1. 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!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *