// Ejemplo en C++ para sellar un CFDI con libfacturista // Llame al programa desde la línea de órdenes de esta manera: // ./ejemplo_cpp_sellado.bin archivoLLavePrivada contrasena archivoCertificado archivoDestino // ./ejemplo_cpp_sellado.bin /tmp/aaa010101aaa__csd_01.key 12345678a /tmp/aaa010101aaa__csd_01.cer /tmp/cfdi_sellado_cpp.xml // g++ -lfacturista -o ejemplo_cpp_sellado.bin ejemplo_cpp_sellado.cpp #include <cstdio> #include "libfacturista.h" int main(int argc, char **argv) { char rutaCFDI[]="cfdi_sinsello_cpp.xml"; hcfdi h=cfdi_comprobante("3.2", "A", "1234", "2013-01-12T18:43:11", "Pago en una sola exhibición", "6172.50", "12.34", "USD", "7124.75", "Efectivo", "ingreso", "Campeche, Campeche", "3849", "3463", "ABC", "2012-01-11T11:11:11", "24493.38"); hcfdi he=cfdi_emisor(h,"AAA010101AAA","facturista.com"); if(he==0) { printf("\n%s\n",cfdi_error(h)); return -1;} cfdi_emisor_regimen(he,"Regimen General de Ley"); cfdi_emisor_regimen(he,"Otro regimen (opcional)"); hcfdi hr=cfdi_receptor(h,"X&XX010101AAA","José Ángel & 'Niño' & \"Niña\""); cfdi_receptor_domicilio(hr,"Paseo de Montejo", "1234", "456", "Col. €uropea", "Ciudad de los Niños", "Municipio de Mérida", "Yucatán", "México", "38294", "Por la cascada"); hconcepto hc=cfdi_concepto(h,"10", "PZA", "1", "Memoria USB", "123.45", "1234.50"); cfdi_concepto_informacionaduanera(hc,"12345", "2011-01-01","Aduana nogales"); hc=cfdi_concepto(h,"10", "PZA", "2", "Memoria USB", "123.45", "1234.50"); cfdi_concepto_cuentapredial(hc,"3836463729385495"); hc=cfdi_concepto(h,"10", "PZA", "3", "Memoria USB", "123.45", "1234.50"); cfdi_concepto_parte(h,"10", "PZA", "3", "Parte 1", "123.45", "1234.50"); cfdi_concepto_parte(h,"10", "PZA", "3", "Parte 2", "123.45", "1234.50"); hc=cfdi_concepto(h,"10", "PZA", "4", "Memoria USB", "123.45", "1234.50"); cfdi_concepto_ComplementoConcepto(hc); hc=cfdi_concepto(h,"10", "PZA", "5", "Memoria USB", "123.45", "1234.50"); hcfdi hi=cfdi_impuestos(h,"35.35","987.60"); //cfdi_impuestos_retencion(hi,); cfdi_impuestos_retencion(hi,"ISR","12.12"); cfdi_impuestos_retencion(hi,"IVA","23.23"); cfdi_impuestos_traslado(hi,"IVA", "987.60", "16.00"); cfdi_impuestos_traslado(hi,"IEPS", "0.00", "0.00"); if(cfdi_xml_guardar(h,rutaCFDI,1)) cfdi_xml_guardar(h,0,1); //Imprimimos en la salida estándar else { printf("\nError al guardar: %s",cfdi_error(h)); return -2; } printf("\n%s\n",cfdi_cadena_original(h)); if(cfdi_sellar_pkcs8(h,argv[1],argv[2],argv[3],argv[4],1)) ; else { printf("\nError al sellar: %s",cfdi_error(h)); return -3; } return 0; }