-
Notifications
You must be signed in to change notification settings - Fork 12
Home
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.
- Si utilizas Windows bajar http://www.slproweb.com/products/Win32OpenSSL.html y si utilizas Linux puedes instalar openssl desde consola.
- Generar clave privada en consola, utilizaremos como nombre de archivo "privada":
openssl genrsa -out privada 2048
- 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
- Subir el archivo “ ARCHIVOCSR” en afip, y con eso te dejan descargar un archivo (certificado): ponerle el nombre “certificado.pem”
- Los 2 archivos “privada” y “certificado.pem” deben copiarse en la carpeta ./key/homologacion/ de Neofactura o ./key/produccion/ según corresponda.
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
}
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)