Cita:
Iniciado por admado He leído todo el tema de este foro así como “Factura Electrónica en México” y he probado las líneas que aquí se han expuesto pero aun NO lo logro que el sello digital sea correcto. Yo estoy haciendo la factura electrónica en PHP, pero a mí no me dan los resultados esperados. Baje un validador y lo instale en mi máquina para hacer pruebas. [URL]http://www.validacfd.com/[/URL] Porque como todos no había podido pasar el validador del SAT, con esta aplicación pude saber los errores que estaba cometiendo. Con el XML que expongo si paso el validador del SAT, pero no logro sacar el sello digital que ahí se muestra. prueba_01 (sello).xml
Código:
<?xml version="1.0" encoding="UTF-8"?>
<Comprobante xmlns="http://www.sat.gob.mx/cfd/2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sat.gob.mx/cfd/2 http://www.sat.gob.mx/sitio_internet/cfd/2/cfdv2.xsd " version="2.0" serie="A" folio="1" fecha="2010-09-02T16:30:00" noAprobacion="122956" anoAprobacion="2010" formaDePago="Pago en una sola exhibicion" noCertificado="30001000000100000800" subTotal="350" descuento="0" total="406" metodoDePago="Efectivo" tipoDeComprobante="ingreso" sello="ndqRTaREJtNEBkajhRc2vQ3clCtCGgpAHgLIbkXM4g56vF9DL8Vu/3WvTn0jbETZSoRvjKQgjdC65f6Fl5w4fKYBbgLT4cqVclSHE7F5F4TkfoXTrdudXFHb5W4NGgUULaOu7qlHZdPj+3W0SPFCwcK0ig9Hp4cfqBSS0knWP1k=" certificado="MIIE/TCCA+WgAwIBAgIUMzAwMDEwMDAwMDAxMDAwMDA4MDAwDQYJKoZIhvcNAQEFBQAwggFvMRgwFgYDVQQDDA9BLkMuIGRlIHBydWViYXMxLzAtBgNVBAoMJlNlcnZpY2lvIGRlIEFkbWluaXN0cmFjacOzbiBUcmlidXRhcmlhMTgwNgYDVQQLDC9BZG1pbmlzdHJhY2nDs24gZGUgU2VndXJpZGFkIGRlIGxhIEluZm9ybWFjacOzbjEpMCcGCSqGSIb3DQEJARYaYXNpc25ldEBwcnVlYmFzLnNhdC5nb2IubXgxJjAkBgNVBAkMHUF2LiBIaWRhbGdvIDc3LCBDb2wuIEd1ZXJyZXJvMQ4wDAYDVQQRDAUwNjMwMDELMAkGA1UEBhMCTVgxGTAXBgNVBAgMEERpc3RyaXRvIEZlZGVyYWwxEjAQBgNVBAcMCUNveW9hY8OhbjEVMBMGA1UELRMMU0FUOTcwNzAxTk4zMTIwMAYJKoZIhvcNAQkCDCNSZXNwb25zYWJsZTogSMOpY3RvciBPcm5lbGFzIEFyY2lnYTAeFw0xMDA3MzAxNjU4NDBaFw0xMjA3MjkxNjU4NDBaMIGWMRIwEAYDVQQDDAlNYXRyaXogU0ExEjAQBgNVBCkMCU1hdHJpeiBTQTESMBAGA1UECgwJTWF0cml6IFNBMSUwIwYDVQQtExxBQUEwMTAxMDFBQUEgLyBBQUFBMDEwMTAxQUFBMR4wHAYDVQQFExUgLyBBQUFBMDEwMTAxSERGUlhYMDExETAPBgNVBAsMCFVuaWRhZCAxMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDD0ltQNthUNUfzq0t1GpIyapjzOn1W5fGM5G/pQyMluCzP9YlVAgBjGgzwYp9Z0J9gadg3y2ZrYDwvv8b72goyRnhnv3bkjVRKlus6LDc00K7Jl23UYzNGlXn5+i0HxxuWonc2GYKFGsN4rFWKVy3Fnpv8Z2D7dNqsVyT5HapEqwIDAQABo4HqMIHnMAwGA1UdEwEB/wQCMAAwCwYDVR0PBAQDAgbAMB0GA1UdDgQWBBSYodSwRczzj5H7mcO3+mAyXz+y0DAuBgNVHR8EJzAlMCOgIaAfhh1odHRwOi8vcGtpLnNhdC5nb2IubXgvc2F0LmNybDAzBggrBgEFBQcBAQQnMCUwIwYIKwYBBQUHMAGGF2h0dHA6Ly9vY3NwLnNhdC5nb2IubXgvMB8GA1UdIwQYMBaAFOtZfQQimlONnnEaoFiWKfU54KDFMBAGA1UdIAQJMAcwBQYDKgMEMBMGA1UdJQQMMAoGCCsGAQUFBwMCMA0GCSqGSIb3DQEBBQUAA4IBAQArHQEorApwqumSn5EqDOAjbezi8fLco1cYES/PD+LQRM1Vb1g7VLE3hR4S5NNBv0bMwwWAr0WfL9lRRj0PMKLorO8y4TJjRU8MiYXfzSuKYL5Z16kW8zlVHw7CtmjhfjoIMwjQo3prifWxFv7VpfIBstKKShU0qB6KzUUNwg2Ola4t4gg2JJcBmyIAIInHSGoeinR2V1tQ10aRqJdXkGin4WZ75yMbQH4L0NfotqY6bpF2CqIY3aogQyJGhUJji4gYnS2DvHcyoICwgawshjSaX8Y0Xlwnuh6EusqhqlhTgwPNAPrKIXCmOWtqjlDhho/lhkHJMzuTn8AoVapbBUnj"><Emisor rfc="SAT970701NN3" nombre=" Servicio de Administración Tributaria
"><DomicilioFiscal calle="AV. HIDALGO" noExterior="77" municipio="CUAUHTÉMOC" estado="DISTRITO FEDERAL" pais="MÉXICO" codigoPostal="06300"/></Emisor><Receptor nombre="Rosa María Calderón Uriegas" rfc="CAUR390312S87">
<Domicilio calle="PRIV. CEIBA" codigoPostal="62900" colonia="BOSQUE" estado="MORELOS" localidad="JOJUTLA" municipio="JOJUTLA" noExterior="114" pais="México"/>
</Receptor><Conceptos><Concepto cantidad="10" unidad="Caja" descripcion="Vasos decorados" valorUnitario="20" importe="200"/><Concepto cantidad="1" unidad="pieza" descripcion="Charola metálica" valorUnitario="150" importe="150"/></Conceptos><Impuestos><Traslados><Traslado impuesto="IVA" tasa="16.00" importe="56.00"/></Traslados></Impuestos></Comprobante>
CadenaOriginal
Código:
||2.0|A|1|2010-09-02T16:30:00|122956|2010|ingreso|Pago en una sola exhibicion|350|0|406|SAT970701NN3|Servicio de Administración Tributaria|AV. HIDALGO|77|CUAUHTÉMOC|DISTRITO FEDERAL|MÉXICO|06300|CAUR390312S87|Rosa María Calderón Uriegas|PRIV. CEIBA|114|BOSQUE|JOJUTLA|JOJUTLA|MORELOS|México|62900|10|Caja|Vasos decorados|20|200|1|pieza|Charola metálica|150|150|IVA|16.00|56.00||
CadenaOriginalUTF8
Código:
||2.0|A|1|2010-09-02T16:30:00|122956|2010|ingreso|Pago en una sola exhibicion|350|0|406|SAT970701NN3|Servicio de Administración Tributaria|AV. HIDALGO|77|CUAUHTÉMOC|DISTRITO FEDERAL|MÉXICO|06300|CAUR390312S87|Rosa MarÃ*a Calderón Uriegas|PRIV. CEIBA|114|BOSQUE|JOJUTLA|JOJUTLA|MORELOS|México|62900|10|Caja|Vasos decorados|20|200|1|pieza|Charola metálica|150|150|IVA|16.00|56.00||
DigestionMD5 con PHP : 1d973db0a57ee828d52594d7593fec94 , esta cadena en el validador del SAT también da el mismo resultado; si trato de sacar la digestión con OPENSSL me da( 89a2f2c25a60997eba7b523b924dc07e) lo cual es incorrecto Código PHP:
<?PHP
$cadenaOriginal = "||2.0|A|1|2010-09-02T16:30:00|122956|2010|ingreso|Pago en una sola exhibicion|350|0|406|SAT970701NN3|Servicio de Administración Tributaria|AV. HIDALGO|77|CUAUHTÉMOC|DISTRITO FEDERAL|MÉXICO|06300|CAUR390312S87|Rosa María Calderón Uriegas|PRIV. CEIBA|114|BOSQUE|JOJUTLA|JOJUTLA|MORELOS|México|62900|10|Caja|Vasos decorados|20|200|1|pieza|Charola metálica|150|150|IVA|16.00|56.00||";
$cadenaUTF8 = utf8_encode($cadenaOriginal);
$cadenaMD5 = md5($cadenaUTF8);
echo "Cadena UTF8: ";
echo $cadenaUTF8;
echo "<br><br>";
echo "Cadena MD5: ";
echo $cadenaMD5;
?>
Para crear la llave
Código:
OPENSSL> PKS8 –inform DER –in aaa010101aaa_csd_01.key –passin pass:a0123456789 –out clave.key.pem
Para crear el certificado, al abrirlo con bloc de notas el contenido es el mismo que ésta en el XML
Código:
OPENSSL> X509 –inform DER –outform PEM –in aaa010101aaa_csd_01.cer –pubkey –out cert.cer.pem
He intentado sacar el sello, pero no logro que sea igual al del XML.
Código:
OpenSSL> dgst -md5 -sign d:\clave.key.pem -out d:\sello1.txt d:\cadenaOriginalUT
F8.txt
OpenSSL> base64 -in d:\sello1.txt
SELLO
Código:
XdIEi59DVJp+fuPaDsk/cUGfidRMeoVQK3o2xM12uve4g4gbVeF48xkcbLBkBJrh
RWWzzbGudEHJDw1xxmMDlOHOlOQ+/EmZ3L6trcvb4RyVtHzBaKs7pLcyXVKG0lHm
IJ48G6fHBVCSctsZV5jWO8n4ROnGsBHrHpQqCcDcrDw=
Copié la cadena original que tu estas utilizando, bajé los nuevos certificados de prueba que publicó el sat y la sellé con el certificado "aaa010101aaa_csd_01" y el sello que obtuve es el siguiente:
Código HTML:
AgHtOey41FYT0tDo5frjTEDLsL7PHOU+Rs4yBUmAr74jJWkQK/n8vzl3xrakD4/n8ub1r19txGPnuTZQmERJEeUruoMc+Po16/I/2BgIPIH4Kuin8AVsK/xUUfoVs8Yr6m3ui2fCk7awmjqUioLlcfFlw2kBiGAtwvgZU/2bkSM=
Las instrucciones que utilizo de OSSL son:
Código HTML:
openssl dgst -md5 -sign aaa010101aaa_csd_01.pem cadOr_utf8 > sellobin
openssl enc -base64 -A -in sellobin > selloDigital
No te fies mucho de los ejemplos publicados por el SAT hay muchos ejemplos mal
Espero te sirva