| |||
| Voy a especificar muy bien mi problema para ver si me pueden ayudar: Lo que quiero es: GENERAR SELLO DIGITAL EN PHP PARA FACTURA ELECTRÓNICA EN MÉXICO CON LOS REQUERIMIENTOS DEL SAT Para ello contamos con: INFORMACIÓN SOBRE COMO HACER LA FACTURA ELECTRÓNICA SEGÚN EL SAT: Anexo 20: http://www.sat.gob.mx/sitio_internet...s/15_3445.html Los archivos de ejemplo se encuentran en: http://www.sat.gob.mx/sitio_internet...s/15_6522.html Dentro trae: ftp://ftp2.sat.gob.mx/asistencia_ser...uestra_xml.zip - Un xml de muestra (Muestra.xml) del CFD (Comprobante Fiscal Digital) ftp://ftp2.sat.gob.mx/asistencia_ser.../Cer_Sello.zip - Certificados de muestra Cer_Sellos.zip y dentro trae: - Certificados de muestra pero quiero que hagan enfasis en: - aaa010101aaa_CSD_01.cer (El primer certificado solo necesitamos 1) - aaa010101aaa_CSD_01.key (La primera key y solo necesitamos 1) - Contraseña de Clave Privada.txt (Pass para abrir el key) Nos facilita también una cadena original: ||A|1|2005-09-02T16:30:00|1|ISP900909Q88|Industrias del Sur Poniente, S.A. de C.V.|Alvaro Obregón|37|3|Col. Roma Norte|México|Cuauhtémoc|Distrito Federal|México|06700|Pino Suarez|23|Centro|Monterrey|Monterrey|Nuevo Léon|México|95460|CAUR390312S87|Rosa María Calderón Uriegas|Topochico|52|Jardines del Valle|Monterrey|Monterrey|Nuevo León|México|95465|10|Caja|Vasos decorados|20|200|1|pieza|Charola metálica|150|150|IVA|52.5|| Y su digestión MD5: 8aa2b617944427353697e694a2e35a07 PROBLEMA CON ARCHIVOS DE EJEMPLO EN EL SAT Hasta aquí todo va bien, tenemos todo claro y suficiente información de muestra, pero... al pasar el xml de muestra esta mal, pueden constatarlo en: https://www.consulta.sat.gob.mx/SICO...Validador.html Según el marco teórico mostrado en el Anexo 20, y otros recursos, podemos ver que es un proceso extremadamente sencillo, sin embargo, cuando validamos nos arroja que el sello no es válido. DESARROLLO DE SELLO DIGITAL EN PHP Voy a documentar el ensayo que hice para ver si ustedes me pueden auxiliar en ver que parte esta mal: Como referencia usare Muestra.xml que tiene una estructura válida, y cuya cadena esta provista y pasa el validador como correcta y también la digestión MD5 que también es correcta, entonces lo que haré es generar un sello para dicho xml y posteriormente pegarlo para intentar pasar el validador, lo cual debería darme un resultado correcto pero no es así, pero bueno ahora puntualizo el procedimiento que seguí: 1. Primero generamos el PEM en base al key: pem.php
Código php:
Ver originalCopiar En este punto generamos: aaa010101aaa_CSD_01.key.pem 2. Posteriormente lo usaremos en: seal.php
Código php:
Ver originalCopiar Hasta aqui el sello que obtengo es: cLBps3/cBUFelW/uxxNmKGvxThUva3AjvppfCxioTBlgqttkrV0yjPvRmA2592l7W QfwN1iXCQT4eyRtblXQre37a+EV4+vGuJD5Oah6ED1U/sVP2ak53nH31RhnQQeQN8NV2TtpjKQaNn64doKwVg9SGDn8Ppk pzlPBiqH5164= Ahora lo que hice para checarlo es pegar dicho sello a Muestra.xml, quedando así:
Código xml:
Ver originalCopiar RESULTADO Pero a la hora de validarlo con el certificado de ejemplo (aaa010101aaa_CSD_01.cer) en: https://www.consulta.sat.gob.mx/SICO...Validador.html Este sello no es válido. Me gustaría saber si alguien lo obtiene de manera diferente, no puse validaciones ni como generar el xml ya que lo que básicamente me interesa es que el sello sea válido y espero que también les sea de utilidad. Saludos a todos. Última edición por jam1138; 29/10/2008 a las 09:37 |
| |||
| También encontré este código: http://www.lacorona.com.mx/fortiz/sat/ La desventaja es que es muy muy largo y es difícil encontrar el punto al que me refiero, pero en esencia el hace esto: http://www.lacorona.com.mx/fortiz/sat/xml.php Código PHP: Si alguien tiene alguna idea se los agradeceré. |
| |||
| El problema es que en el Chat del SAT no hay personal calificado para responder este tipo de preguntas, no saben ni a que te refieres, ya me dejaron dos veces colgado el chat, estoy una tercera vez para ver que me responden, y llegar a la conclusión de que es lo que esta mal, si los archivos, el validador o el algoritmo. Les comentaré la respuesta en cuanto la tenga, mientras si alguien mas detecta el bug, bienvenido. Última edición por phpnewbie; 30/10/2008 a las 12:50 |
| |||
| Hago notar un error mio, pero aun así este no fue el causante... esto sigue inválido: en vez de el certificado que puse el valor es: 10001200000000022517 en vez de 00001000000000000114 en "noCertificado", realmente no afecta este valor ya que no se incluye en la cadena original, pero dejo aqui el ejemplo corregido:
Código:
<?xml version="1.0" encoding="UTF-8"?> <Comprobante fecha="2005-09-02T16:30:00" folio="1" noAprobacion="1" noCertificado="10001200000000022517" sello="cLBps3/cBUFelW/uxxNmKGvxThUva3AjvppfCxioTBlgqttkrV0yjPvRmA2592l7WQfwN1iXCQT4eyRtblXQre37a+EV4+vGuJD5Oah6ED1U/sVP2ak53nH31RhnQQeQN8NV2TtpjKQaNn64doKwVg9SGDn8PpkpzlPBiqH5164=" serie="A" version="1.0"> <Emisor nombre="Industrias del Sur Poniente, S.A. de C.V." rfc="ISP900909Q88"> <DomicilioFiscal calle="Alvaro Obregón" codigoPostal="06700" colonia="Col. Roma Norte" estado="Distrito Federal" localidad="México" municipio="Cuauhtémoc" noExterior="37" noInterior="3" pais="México"/> <ExpedidoEn calle="Pino Suarez" codigoPostal="95460" colonia="Centro" estado="Nuevo Léon" localidad="Monterrey" municipio="Monterrey" noExterior="23" pais="México"/> </Emisor> <Receptor nombre="Rosa María Calderón Uriegas" rfc="CAUR390312S87"> <Domicilio calle="Topochico" codigoPostal="95465" colonia="Jardines del Valle" estado="Nuevo León" localidad="Monterrey" municipio="Monterrey" noExterior="52" pais="México"/> </Receptor> <Conceptos> <Concepto cantidad="10" descripcion="Vasos decorados" importe="200" unidad="Caja" valorUnitario="20"/> <Concepto cantidad="1" descripcion="Charola metálica" importe="150" unidad="pieza" valorUnitario="150"/> </Conceptos> <Impuestos> <Traslados> <Traslado importe="52.5" impuesto="IVA"/> </Traslados> </Impuestos> </Comprobante> Última edición por phpnewbie; 29/10/2008 a las 13:29 |
| ||||
| Respuesta: Facturacion electronica en México saludos... fijate que estoy intentando igual esto de la facturacion electronica, pero empece por esto de cifrar y todo el roollo. tengo una linea cparecida a la tuya. pero a mi no me sale, inclusive he estado intentando directamente en linea de comandos de openssl. openssl dgst -md5 -sign C:\WEB_SAT\aaa010101aaa.key.pem C:\WEB_SAT\cadenamd5.txt | openssl enc -base64 -a > C:\WEB_SAT\seal.txt pero no me da nada, podrias ayudarme? Saludss..... colega. |
| |||
| Respuesta: Facturacion electronica en México Cuando ya sea válido será open source, así que si alguien sabe la falla ayudaría bastante, podemos convertir este post en un tutorial, ya que a la fecha no existe un tutorial "probado". |
| |||
| Respuesta: Facturacion electronica en México Me comenta el autor de: http://phylevn.mexrom.net/index.php/blog/show/145.html esto: Cita: Haré un ensayo y lo documentaré si funciona, si no, publicaré lo que salio mal para ver si ya queda esto. El problema con el validador de SAT es que solo soporta la version 1.0, para la version 2.0 hay nuevos campos que cuándo generas el Sello Digital, el validador de SAT no los reconoce por ende el Sello te lo manda erroneo, si generas el sello con el procedimiento que pongo con los campos de la version 1.0 no tienes problemas. |
| |||
| Respuesta: Facturacion electronica en México buenas!! la propuesta de dejarlo como tutorial es buena, creo que a mas de uno nos interesa el tema aunque algunos con poca experiencia como su servidor leemos para aprender ya que no tenemos mucho que poder aportar un saludo!!
__________________ ¡El Respeto al Derecho Ajeno Es la Paz! |
| |||
| Respuesta: Facturacion electronica en México bueno eso que el validador solo funciona para la version 1.0 es falsa existen dentro del sat 2 validadores, el mas actual en su interface no tiene pesañas y es posible utilizar xml con el certificdo incluido. y ese validador es completamente para ambas versiones, en la pagina www.verificaCFD.com.mx una empresa coloco de manera libre su validador, que aunque tiene algunos defectos al no reconocer un CFD de honorarios jejeje. pero = funciona muy bien, por otro lado, si se documentan mejor podrian lograrlo, lo de la corona tiene unos lijeros errores, sean listos y arreglenlos, o adquieran una consultoria de www.rexsystemssoftwaredeveloper.com bueno saludos, no se desesperen, a los que les interesa implementar con java en JSP o java desktop o php consultenme soy la unica empresa que dota de consultoria para tecnologia JAVA u PHP. aprenderan los mas importante que es respetar el formato para la version 2.0 que pues si no se han dado cuenta ese es su error, un mal formato ocaciona una mala cadena original y por ende un mal sello. bien ya les dije el error, y les repido el verificador del sat funciona muy bien. mis CFD pasan sin problemas saludos... |
| ||||
| Respuesta: Facturacion electronica en México ps le verdad me parece interesante, me gustaria que compartieras lo ke pueda servirnos. yo publico mis avances en diversos foros he publicado ensayos y codigos. NO VENGO A HACER NEGOCIO. Vengo a aprender y compartir. Saludsss. |
| |||
| Respuesta: Facturacion electronica en México Mira amigo yo estoy completamente deacuerdo con lo que dices de compartir, yo ya les dije cual es su error y que hacer para resolverlo, no es sencillo si no tienes pasion por la programacion, en otras palabras no es para amateurs, php no se equivoca lo que estan haciendo mal es que no siguen el formato establecido, lean el anexo 20 y la diferente informacion que proporciona el sat es lo unico que necesitan. Otra cosa mi estimado compañero que posteo, es licencia gnu aprender no cuesta, pero se sincero, para que quieres aprender eso?, si es porque tu trabajas por honorarios y deseas proporcionar cfd's, existe mi version gratuita. Y como lo dije en el otro post si tu trabajas para alguna empresa no seas valin compa, porque eso es no respetar gnu, ya que tu utilizarias a una comunidad para dar ganancia a otros. Lee las normas gnu. Y se sincero para que buscas esa informacion, porque en tu trabajo necesitan algo asi, o por mero aprendisaje. Si es por lo segundo congusto te proposiono todo lo que necesites para que lo logres, si es lo primero pues no seas valin y respeta las normas gnu. El programador de la corona proporciono completamente todo, tiene ciertos errores que para programadores amateur son imperceptibles. Yo aprendi por gusto, ya que trabajaria en una empresa por honorarios y comence a documentarme hasta que lo logre eso duro 2 meses, de pruebas y pruebas horas y horas de trabajo. Ing en informatica ricky lopez edad: 22 años saludos, les repito, lean el estandar del sat y encontraran los problemas, y respeten gnu. |
| ||||
| Respuesta: Facturacion electronica en México saludos gracias, he estado revisando el anoxo 20 como lo habias posteado y si hay muchas diferncias estoy en eso. me da gusto que pienses en eso, pues yo tambien aprendo por gusto, asi comence con progress, 4gl, php, myslq, java, visual, C#..... y he logrado hacer cosas padres que son mias(GNU), no de una empresa, y las pongo a disposicion de mis cuates que ncesitan de ayuda. cualquiera que sea su necesidad. me gusta programar, me gusta lo que hago. colega ya somos dos. y los que vienen en esto del php. respeto tu esfuerzo y creeme colega, esto es pura vidaaaa...... y por eso busco quien pueda ayudarme, siempre lo hago en la web. y libros. me encanta los retos. somos informaticos, solos aveces no contamos con la suficiente informacion o el camino adecuado para aprender, colegas como tu que ya lo hicieron posible es lo que me agrada, y si me gustaria que nos ayudaras, digo posiblemente algunos de este foro se sientan intocables pero yo si quisiera que ME hecharas la mano. si quisiera aprender mas de esto que esta de BOOOM. saludss colega Lic. en informatica. Hernan Sanchez Glez 24. Última edición por GatorV; 05/11/2008 a las 11:36 |
| ||||
| Respuesta: Facturacion electronica en México Hola Nanox, Es bueno que quieras aprender, pero recuerda que el foro es para retroalimentarnos todos, por lo que no esta permitido intercambiar emails dentro del foro, si quieres contactarlo enviale un mensaje privado. Saludos. |
| |||
| Respuesta: Facturacion electronica en México bueno aca les dejo esta direccion http://phylevn.mexrom.net/index.php/blog/show/Script_PHP_para_generar_Sello_Digital_requerido_po r_el_estandar_de_SAT_para_facturacin_ele.html segun su creador ya esta funcionando, y es libre y eso, en mi opinion personal esta mal implementado, quiza esta correcto lo que genere sin embargo la manera en que lo hace no es muy recomendable. pero bueno esa es mi humilde opinion, para los que no han encontrado la solucion pues en el link que les pase la muestran. bueno los dejo saludos. |
| ||||
| Respuesta: Facturacion electronica en México fijate que aun tengo el problema de que no obtengo un sello valido puedo generar un xml, pero ya lo revise contra la estructura que da el anexo 20 y da correcto reviso uno por uno los nodos, pero al sacar la cadena y sellar, lo valido y ps nada. colega como le hago para obtener una cadena valida, y ps antes de eso un xml valido. agradecere cualquier comentario al respecto saludsss..... |
| |||
| Respuesta: Facturacion electronica en México Hola, soy nuevo aquí y también tuve muchos problemas al iniciar este proyecto de factura digital. Aunque yo programo en Visual Studio 2005 creo que la "médula espinal" de todo esto es la misma. Con relación a conseguir una validación correcta, yo también tuve broncas, pero ahora les cuento como le hice. Para empezar, y aunque quizá ya lo sepan, el SAT tiene 2 validadores: 1. La versión 1.0 (ó 1.5, no recuerdo bien) que es la que, en su interfaz, contiene 2 pestañitas. 2. La versión 2.0 (la que no tiene pestañas) Es importante que al validar sepan cuál de las 2 versiones usar, que en teoría debería ser siempre la versión 2, pues es la que compara contra el esquema XML (.XSD) más reciente, expedido por el SAT. Este "validador" hace una revisión, tanto de la SINTAXIS como del Sello digital que generado. Lo primero que tenemos que lograr, es "pasar con 10 :)" la validación de la sintaxis, ya después nos fijamos en el sello. Pasar el examen de la sintaxis es muy simple, solo tenemos que seguir al pie de la letra el "anexo 20", que indica claramente la forma y orden que tenemos que seguir al generar nuestro archivo XML. (Presten mucha atención a los tipos de datos y el formato que deben seguir) En cuanto al sello digital, observen que cuando el validador empieza a verificar nuestro archivo XML, él mismo genera una "Cadena original" en base al archivo que le pasamos (el XML), fíjenseee.... SI LA CADENA ORIGINAL QUE MUESTRA EL VALIDADOR ES DIFERENTE a la que nosotros utilizamos para crear nuestro Sello Digital, obviamente "reprobaremos" esa prueba. NO DEBE EXISTIR ABSOLUTAMENTE NINGUNA DIFERENCIA entre esa cadena original y la nuestra. Bueno, espero haber aportado aunque sea un poco a esta charla. Aporten y digan sus experiencias para que todos aprendamos. Salu2 freebyte |
| ||||
| Respuesta: Facturacion electronica en México colegas PHPeros ya tengo un CFD pero no tengo folios validos.... he de pensar que por eso me dice que aun no esta weno el sello. lo he probado en el validador. me dice que es invalido. pero tengo un CFD valido al que le cambio el serie y folio y me da el mismo error. por eso supongo que ya hice solo necesito folios validos....... alguien sabe donde conseguir? otra duda..... es cierto que despues de avisar que se expediran CFDs se tiene un mes para empezar? o es choroooooo........yo no expedire nada, pero ya casi tengo esto.. solo es por aprender..... quien quiera mi codigo mandame un MP. Por que sta medio desordenado, tu gustas mejorarlo perfectooo...... saludssss |
| |||
| Respuesta: Facturacion electronica en México Eyy compadre, con los Certificados y Llaves que el SAT te da para probar es suficiente para que puedas pasar las verificaciones de tus comprobantes. Entra al sitio del SAT y descarga los Certificados de prueba... Freebyte |
| |||
| Respuesta: Facturacion electronica en México Hola, Queria saber si alguien pudiera subir un xml de la version 2, como ejemplo ya que yo tampoco estoy pudiendo generar la cadena con el programa del SAT, solo es para comparar si me estoy equivocando en algo o tengo mal una sintaxis q la vdd no creo ya que segui al pie de la letra el anexo 20. Otra duda, q es mejor usar el archivo cadenaoriginal_2_0_.xslt o el (.XSD), mas bien cual es la diferencia entre ambos. Gracias Isaac Lañado |
| |||
| Cuidado, los archivos de ejemplo que publica el SAT no están en la versión 2.0 del estándar, en mi caso lo que hice es seguir el estándar publicado y luego compararlo contra el XSD usando la función que para este propósito tiene PHP. El ejemplo que publican en http://lacorona.com.mx/fortiz/sat/xsl.php sigue la versiòn 2.0, por lo que si pude validarlo usando XSD,sin embargo tuve problemas al generar el hash. Tengo varias teorìas, una de ellas es la conversiòn de caracteres a UTF-8, mejor no me detuve en averiguar el problema, pero generé mi mismo sello y si pasé la validaciòn. Por otro lado, ni el validador del SAT ni usando el XSD (que supongo que internamente es lo que hace el SAT) garantiza que estén al 100% dentro del estándar, por ejemplo en el anexo 20 dice que hay que eliminar espacios en blanco redundantes y cosas así que ambas herramientas no se fijan. En resumen, recomiendo que hagan validaciòn extensiva y no confíen únicamente en el XSD. La documentaciòn y herramientas del SAT dejan mucho que desear (es increíble que no puedan poner certificados correctos para sus páginas) y la herramienta que yo usé, que es PHP no hace un mejor papel. Saludos cordiales |
| |||
| Respuesta: Facturacion electronica en México Yo estoy entrando en este rollo desarrollandolo bajo JAVA, al final también me dice que no es un sello válido, independientemente de todo.. me pueden decir cual es el sello al que llegan usando el .key perteneciente al certificado 1 ??, es decir si tenemos la cadena ||A|1|2005-09-02T16:30:00|1|ISP900909Q88|Industrias del Sur Poniente, S.A. de C.V.|Alvaro Obregón|37|3|Col. Roma Norte|México|Cuauhtémoc|Distrito Federal|México|06700|Pino Suarez|23|Centro|Monterrey|Monterrey|Nuevo Léon|México|95460|CAUR390312S87|Rosa María Calderón Uriegas|Topochico|52|Jardines del Valle|Monterrey|Monterrey|Nuevo León|México|95465|10|Caja|Vasos decorados|20|200|1|pieza|Charola metálica|150|150|IVA|52.5|| el hash es 8aa2b617944427353697e694a2e35a07 Aplicando RSA con private key (.key ) y en base 64 obtengo.- Pz9HPz8BOz8/Pj8/PyE/Vj8lPz8/bT8/Pz8HPxA/Pz8/Pz8/cGI/Pz8/RD9KNw4/Pwc/C2J8XUo/ N3x+MTsePz8/KgRCYj8AP2w/IAoEPz8sYj9KPzwWPxY/WBUDPz8NPwFzSEwlYD9TfD8/bj8/Iz5F ay5nQD83GS4TPz8/XQc= alguno obtiene esto mismo ? |
| |||
| Respuesta: Facturacion electronica en México Cita:
Iniciado por javierhernandezb Yo estoy entrando en este rollo desarrollandolo bajo JAVA, al final también me dice que no es un sello válido, independientemente de todo.. me pueden decir cual es el sello al que llegan usando el .key perteneciente al certificado 1 ??, es decir si tenemos la cadena ||A|1|2005-09-02T16:30:00|1|ISP900909Q88|Industrias del Sur Poniente, S.A. de C.V.|Alvaro Obregón|37|3|Col. Roma Norte|México|Cuauhtémoc|Distrito Federal|México|06700|Pino Suarez|23|Centro|Monterrey|Monterrey|Nuevo Léon|México|95460|CAUR390312S87|Rosa María Calderón Uriegas|Topochico|52|Jardines del Valle|Monterrey|Monterrey|Nuevo León|México|95465|10|Caja|Vasos decorados|20|200|1|pieza|Charola metálica|150|150|IVA|52.5|| el hash es 8aa2b617944427353697e694a2e35a07 Aplicando RSA con private key (.key ) y en base 64 obtengo.- Pz9HPz8BOz8/Pj8/PyE/Vj8lPz8/bT8/Pz8HPxA/Pz8/Pz8/cGI/Pz8/RD9KNw4/Pwc/C2J8XUo/ N3x+MTsePz8/KgRCYj8AP2w/IAoEPz8sYj9KPzwWPxY/WBUDPz8NPwFzSEwlYD9TfD8/bj8/Iz5F ay5nQD83GS4TPz8/XQc= alguno obtiene esto mismo ? De antemano gracias pero ya pude solucionar los problemas y pasar todas las validaciones... por cierto el resultado del sello digital que pusé arriba no es correcto |
| |||
| Cita: hola javier pues aca preguntadote q realizaste para poder obtener la cadena correcta ya que yo obtengo la misma que tume podrias indicar que es lo que realizaste por favor |
| |||
| Respuesta: Facturacion electronica en México Alguien me puede decir como se obtiene el noCertificado desde un archivo .pem o desde el archivo .cer? Cuando ejecuto el comando de openSSL para obtener el numero de serie es diferente al que pide hacienda de 20 caracteres. |
| |||
| Respuesta: Facturacion electronica en México Tlaxiaco, Oaxaca. Buen colaborando con este foro, les informo que despues de un arduo trabajo para la realizacion de una factura digital, llegue a la conclución de que esta mal el procedimiento del SAT para el calculo del sello digital ya que el primer algoritmo no se raliza. Esto es muy lamentable ya que una institucion con tanto prestigio como el SAT, que genera este tipo de aplicaciones para mejorar CFD y resulta que lo que proporcionan como documentación esta mal. Es demasiado complicado generar una factura electronica es a un mas complicado generarla con un a documentacion erronea(anexo 20.- generacion de sello digital) Bueno foreros espero les sirva este tip. Saludos TMLS |
| ||||
| Respuesta: Facturacion electronica en México Buenas, En primer lugar gracias por sus aportes me han sido muy utiles, es segundo lugar va mi inquietud. Eh logrado manipular y convertit los certificados a DER a PEM tal como explican, ahora bien cuando trato de obtener información del certificado publico PEM, por ejemplo el nro. de certificado: openssl x509 -in aaa010101aaa_CSD_01.pem -serial -noout Me muestra el error: 2239:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:644:Expecting: TRUSTED CERTIFICATE eh provado en dos distros linux distintas y me sucede lo mismo, imagino que para operar con los certificados del SAT se requiere el certificado raíz, pero por más que lo busco no logro encontrarlo en el sitio del SAT, ¿sera ese el problema o mi error es otro?
__________________ Se Despide DestruKtor |
Este tema le ha gustado a 6 personas