Skip to content
This repository has been archived by the owner on Jan 3, 2024. It is now read-only.
Mauro Gesuitti edited this page Mar 3, 2019 · 8 revisions

¡Bienvenidos a la wiki de Neofactura!

¿Por dónde comenzamos?

Deberías generar un certificado de homologación para probar tu sistema (Luego pasarías a generar el de producción cuando estés seguro del correcto funcionamiento)

Es importante entender que haremos uso de dos webservice de AFIP, uno se llama WSAA que sirve para autenticarse y otro que se llama WSFEV1 que sirve para emitir la factura electrónica.

¿Cómo genero un certificado para el webservice de autenticación de AFIP llamado WSAA?

  1. Si utilizas Windows bajar http://www.slproweb.com/products/Win32OpenSSL.html y si utilizas Linux puedes instalar openssl desde consola.
  2. Generar clave privada en consola, utilizaremos como nombre de archivo "privada":

openssl genrsa -out privada 2048

  1. Generar archivo CSR en consola (Es necesario para subir en el sistema de afip y que nos den el certificado correspondiente):

openssl req -new -key privada -subj "/C=AR/O=TUEMPRESA/CN=TUSISTEMA/serialNumber=CUIT XX-XXXXXXXX-X” -out ARCHIVOCSR

  1. Subir el archivo “ ARCHIVOCSR” en afip, y con eso te dejan descargar un archivo (certificado): ponerle el nombre “certificado.pem”
  2. Los 2 archivos “privada” y “certificado.pem” deben copiarse en la carpeta ./key/homologacion/ de Neofactura o ./key/produccion/ según corresponda.

¿Cómo emito una factura electrónica?

Es importante que tus primeras factura las realices conectándote en modo de homologación.

    $afip = new Wsfev1($cuit, Wsaa::MODO_HOMOLOGACION); 

    $result = $afip->init(); //Crea el cliente SOAP

    if ($result["code"] === Wsfev1::RESULT_OK) {

        $result = $afip->emitirComprobante($voucher); //$voucher debe tener la estructura esperada (ver a continuación de la wiki)

        if ($result["code"] === Wsfev1::RESULT_OK) {

            //La facturacion electronica finalizo correctamente

            //$result["cae"] y $result["fechaVencimientoCAE"] son datos que deberías almacenar

        } else {

            //No pudo emitirse la factura y $result["msg"] contendrá el motivo

        }

    } else {

        //No pudo crearse el cliente de conexión con AFIP  y $result["msg"] contendrá el motivo

    }

Estructura del comprobante esperada por Neofactura

La estructura esperada es un arreglo con los datos necesarios para el comprobante, los nombres no concuerdan con el Manual WSFEV1 ya que se especificó una estructura que permita enviar la misma estructura a distintos webservice sin tener que adaptarla a cada uno.

El ejemplo se puede ver en los archivos test[Comprobate].php (Comprobante = FacturaA, FacturaB, etc)