Ayuda con Sello del Emisor Invalido

Es tan comun este tema que he decidido abrir un foro especial para este caso. Se trata de programadores que tienen problemas para crear el Sello Digital y que no pasan la validacion
Heckez
Mensajes: 3
Registrado: Jue Dic 06, 2012 12:34 am

Ayuda con Sello del Emisor Invalido

Mensajepor Heckez » Jue Dic 06, 2012 12:56 am

Hola que tal!
Acudo a ustedes para ver si me pueden orientar en la solución de mi problema.
Estoy creando mi archivo XML versión 3.2 en PHP y al momento de generar el sello con codificación SHA-1, me marca en ValidaCFD, Sello del Emisor Invalido.

Al comparar la cadena original que yo genero, con la cadena del validador, no encuentro ninguna diferencia, la cadena que estoy generando es la siguiente:

||3.2|2012-12-06T00:15:53|ingreso|Pago en una sola Exhibición|431.03|500.00|Eféctivo|México|NZO880207DF5|NEW MOTHER, S.A. de C.V.|Republica de Uruguay|25|15|Centro|Distrito Federal|Cuahutemoc|Distrito Federal|México|06000|Republica de Uruguay|25|15|Centro|Distrito Federal|Cuahutemoc|Distrito Federal|México|06000|IFLE860118KW6|Emmanuel Islas|Calzada de Guadalupe|26|San Marcos|Distrito Federal|Cuahutemoc|Distrito Federal|Mexico|02020|1|pieza|R9-NBC-DLTK-GP|Base Enfriadora Cooler Master Notepal D-Lite|250.00|250.00|1|pieza|C-WM02|Accesorio CH Mouse Cruiser inalambrico|250.00|250.00|IVA|16|68.97|68.97||

Les anexo mi archivo xml
Espero puedan asesorarme
Saludos!
Adjuntos
20121206-NZFA-1.xml
Archivo xml
(3.59 KiB) Descargado 331 veces

RickAlanis
Mensajes: 288
Registrado: Jue Ago 04, 2011 9:41 pm

Re: Ayuda con Sello del Emisor Invalido

Mensajepor RickAlanis » Jue Dic 06, 2012 12:27 pm

Hola Heckez:

Varias observaciones a tu XML.

a) Los atributos noAprobacion y AnoAprobacion no deben existir en un CFDi
b) En el elemento Emisor te falta el elemento hijo RegimenFiscal que, aunque ya lo derogó el SAT, al menos debes incluirlo con un "NA" o "No Aplica" o algo por el estilo
c) Mi validador no pudo verificar el sello. El certificado que incluyes en el XML es un certificado de prueba, por lo que has de estar timbrando con un certificado real pero que tal vez por error el certificado que incluyes no es con el que firmas.

Espero que eso te pueda ayudar.

¡Saludos!

Heckez
Mensajes: 3
Registrado: Jue Dic 06, 2012 12:34 am

Re: Ayuda con Sello del Emisor Invalido

Mensajepor Heckez » Jue Dic 06, 2012 5:17 pm

RickAlanis escribió:Hola Heckez:

Varias observaciones a tu XML.

a) Los atributos noAprobacion y AnoAprobacion no deben existir en un CFDi
b) En el elemento Emisor te falta el elemento hijo RegimenFiscal que, aunque ya lo derogó el SAT, al menos debes incluirlo con un "NA" o "No Aplica" o algo por el estilo
c) Mi validador no pudo verificar el sello. El certificado que incluyes en el XML es un certificado de prueba, por lo que has de estar timbrando con un certificado real pero que tal vez por error el certificado que incluyes no es con el que firmas.

Espero que eso te pueda ayudar.

¡Saludos!


Muchas gracias por responder RickAlanis!

Fíjate que aun sigo teniendo el mismo problema.
Ya corregí los dos primeros puntos que bien me aclaraste, muchas gracias!, y por ende, a la cadena original se le agrego un campo mas, pense que tal vez ese seria el problema, pero aun no puedo solucionarlo.

Actualmente estoy usando los certificados y llaves de prueba que brinda el SAT, ya que mi cliente aun, no me entrega en forma, los archivos correspondientes para poder usarlos como tal.

Sin embargo he visto que aun utilizando los archivos que brinda el SAT, se puede validar el sello, es correcto esto?

Me surgió otra pregunta que no se si venga de la mano, cuando agregue el nodo hijo del regimen fiscal, tambien tuve que agregarlo a la cadena original.
Mi pregunta es, ¿Puede mandarme error en el sello, debido a que en la cadena original, me falten datos requeridos? o esto no tiene nada que ver?

Gracias!
Anexo los archivos prueba que estoy utilizando y como quedo mi ultimo xml por cualquier cosa.
Adjuntos
20121206-NZFA-1.zip
archivos
(4.42 KiB) Descargado 363 veces

RickAlanis
Mensajes: 288
Registrado: Jue Ago 04, 2011 9:41 pm

Re: Ayuda con Sello del Emisor Invalido

Mensajepor RickAlanis » Jue Dic 06, 2012 5:33 pm

Perdón, pasé por alto 2 errores que también son importantes.
Aunque por un centavo, pero el subtotal y el total en el nodo Comprobante, no son iguales a los calculados en los conceptos. Como subtotal reportas 431.03 y como total 500.00; pero en los conceptos de 215.52, que sumados dan 431.04 y, al sumar el IVA de 68.97, da un total de 500.01.

Aparte de esto, me parece que estás calculando mal la cadena original.
Para validar el sello o firma de cualquier CFD(i) hay que calcular la cadena original, a la que hay que aplicarle el HASH SHA-1. Un bit diferente y el resultado del SHA-1 sale completamente diferente. Entonces, el SAT tiene publicado un archivo XSLT y existe una herramienta que se llama Transformación XSLT que toma tu XML, el archivo XSLT del SAT y genera automáticamente la cadena original, con todas las reglas del SAT.
Me parece que, si el sello no pudo ser validado y tú estás calculando bien tu sello (aún con un certificado de prueba), el problema ha de estar en la cadena que calculas.

Te anexo la cadena que genera mi sistema para que la compares con la que tú calculas (recuerda: yo la obtengo con esa transformación XSLT):

Código: Seleccionar todo

||3.2|2012-12-06T16:38:09|ingreso|Pago en una sola Exhibición|431.03|500|Efectivo|México|NZO880207DF5|NEW MOTHER, S.A. de C.V.|Republica de Uruguay|25|15|Centro|Distrito Federal|Cuahutemoc|Distrito Federal|México|06000|Republica de Uruguay|25|15|Centro|Distrito Federal|Cuahutemoc|Distrito Federal|México|06000|Regimen General de Ley Personas Morales|IFLE860118KW6|Emmanuel Islas|Calzada de Guadalupe|206|San Maros|Distrito Federal|Cuahutemoc|Distrito Federal|Mexico|02020|1|pieza|Base Enfriadora Cooler Master Notepal D-Lite|215.52|215.52|1|pieza|Accesorio CH Mouse Cruiser inalambrico|215.52|215.52|IVA|16|68.97|68.97||


Otra cosa muy importante es que la cadena debe estar codificada en utf-8. Muchas personas que calculan su propia cadena se olvidan de eso y eso precisamente provoca el error de invalidar el sello.

Espero que te sirva de algo.

¡Saludos!

Heckez
Mensajes: 3
Registrado: Jue Dic 06, 2012 12:34 am

Re: Ayuda con Sello del Emisor Invalido

Mensajepor Heckez » Vie Dic 07, 2012 7:11 pm

Hola nuevamente, aun no puedo resolver mi problema, y comienza a ser un poco frustrante, y mas porque ya se viene el tiempo encima con esto de la facturación electrónica.

Aun no puedo descifrar el motivo por el cual pase esto.

Cuando yo genero mi cadena original me queda de la siguiente manera ya guardada en un archivo .txt:

||3.2|2012-12-07T15:45:45|ingreso|Pago en una sola Exhibición|1250.00|1450.00|Efectivo|México|NZO880207DF5|NEW MOTHER, S.A. de C.V.|Republica de Uruguay|25|15|Centro|Distrito Federal|Cuahutemoc|Distrito Federal|México|06000|Republica de Uruguay|25|15|Centro|Distrito Federal|Cuahutemoc|Distrito Federal|México|06000|Regimen General de Ley Personas Morales|LOMF890523RL2|Fabian Martinez López|Calzada de Guadalupe|1540|Tepeyac|Distrito Federal|Gustavo A. Madero|Distrito Federal|México|05679|2|pieza|Accesorio CM Bracket Core I-7 LGA1366|129.31|258.62|1|pieza|Accesorio Corsair Diadema Vengeance 1300|991.38|991.38|IVA|16|200.00|200.00||

Y al codificarla en SHA-1 me da:
OpenSSL> dgst -sha1 cadenatemp.txt
SHA1(cadenatemp.txt)= 355301759fbcb5b4b83f93e323b5729d6d22ce36


Y si copio tal cual la cadena original que me da el validador validaCFD:

||3.2|2012-12-07T18:52:28|ingreso|Pago en una sola Exhibición|1250.00|1450.00|Efectivo|México|NZO880207DF5|NEW MOTHER, S.A. de C.V.|Republica de Uruguay|25|15|Centro|Distrito Federal|Cuahutemoc|Distrito Federal|México|06000|Republica de Uruguay|25|15|Centro|Distrito Federal|Cuahutemoc|Distrito Federal|México|06000|Regimen General de Ley Personas Morales|LOMF890523RL2|Fabian Martinez López|Calzada de Guadalupe|1540|Tepeyac|Distrito Federal|Gustavo A. Madero|Distrito Federal|México|05679|2|pieza|Accesorio CM Bracket Core I-7 LGA1366|129.31|258.62|1|pieza|Accesorio Corsair Diadema Vengeance 1300|991.38|991.38|IVA|16|200.00|200.00||

Al codificarla en SHA-1, me da el mismo valor del validador:

SHA1 = 365DCD2CE683A637135C6F65C9161753D2FCB5C2


Ya verifique los dos archivos txt con el programa Free Hex Editor Neo, para ver si tenian alguna variación, pero ambos archivos son idénticos.

Ahora, tengo una duda.
Yo en mi sistema web, hecho en PHP, estoy generando la cadena original manualmente, es decir, para generar mi cadena, recupero datos de una base de datos, y algunos otros son mandados por formulario al archivo donde estoy generando mi XML, Cadena Original, Sello y PDF.

Esta cadena original se va armando en una variable, con los distintos parámetros, dependiendo del cliente y los artículos que se vendan.
Ahora, si yo pongo en una variable, la cadena estática, tal cual me la manda el validador, al momento de codificarla, no tengo ningun problema. La codificación SHA-1, es la misma.

Pero el problema esta cuando yo voy armando manualmente la cadena, la cadena esta codificada en UTF-8.

No entiendo, a que se deba este cambio en la codificación.
¿La base de datos tiene que ver?

Saludos!
Adjunto mis archivos
Adjuntos
NZI.zip
(3.15 KiB) Descargado 322 veces

RickAlanis
Mensajes: 288
Registrado: Jue Ago 04, 2011 9:41 pm

Re: Ayuda con Sello del Emisor Invalido

Mensajepor RickAlanis » Vie Dic 07, 2012 11:41 pm

Veamos.

De entrada, las dos cadenas son distintas únicamente en la hora de timbrado:

Código: Seleccionar todo

||3.2|2012-12-07T15:45:45|ingreso

contra

Código: Seleccionar todo

||3.2|2012-12-07T18:52:28|ingreso

y, como te explicaba, basta un bit diferente para conseguir HASH diferentes.
Ten cuidado de dónde sacas la hora de la creación del XML, que los dos tienen tiempos diferentes.

Yo creo que debes usar las funciones DOM de PHP para construir tanto el XML como la cadena original, esta última a través de el XSLT, así no le vas a fallar, porque tanto el validador del SAT, como el ValidaCFD como el mío y tantos otros utilizan esa función para generar la cadena y luego el SHA1 y validar el sello cifrado.

Hace tiempo bajé un PHP que me ayudó mucho a entender la creación del XML y la cadena original con herramientas ortodoxas. Lo puedes bajar de aquí.

Espero que eso te sirva.
Platica aquí mismo cómo te fue, por si a alguien le sirve.
Por supuesto, si sigues con problemas, comenta.

¡Saludos!


Volver a “SELLO DIGITAL INVALIDO”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 5 invitados