Página 1 de 2
Iniciando desde Cero la creacion de CFDI
Publicado: Mar Jul 31, 2012 12:23 pm
por rent84
Hola buenas tardes
Estoy iniciando con la generación de facturas electronicas he visto que existe dos formas CFD Y CFDI, la verdad ya me confundi un poquito. Lo que necesito es saber si ya existe un foro donde indiquen los pasos a seguir para la creación de estas facturas. Por lo que tengo entendido lo que se necesita es lo siguiente:
1 Cadena original
2 Hacer digestion de la cadena con MD5 o SHA1?
3 crear el sello con la digestion de la cadena y el archivo .pem
4 convertir sello a B64
5 crear XML
Me podrían ayudar por favor si estoy en lo correcto y que otros pasos necesito para generar la factura y posteriormente el timbrado por las PAC.
De antemano gracias.
Re: Iniciando desde Cero la creacion de CFDI
Publicado: Mar Jul 31, 2012 12:29 pm
por Dado
Casi, solo que el primer paso debe ser el XML, asi :
0 crear XML
1 Cadena original
2 Hacer digestion de la cadena con SHA1
3 crear el sello con la digestion de la cadena y el archivo .pem
4 convertir sello a B64
5. insertar el sello en el XML
Re: Iniciando desde Cero la creacion de CFDI
Publicado: Mar Jul 31, 2012 1:20 pm
por rent84
Muchas gracias por su información voy a iniciar con este proceso de generar facuturas electrónicas, haber que tal me va.
Gracias y saludos cordiales,
Re: Iniciando desde Cero la creacion de CFDI
Publicado: Mar Jul 31, 2012 3:30 pm
por RickAlanis
Te voy a compartir algo que a mi me sirvió para iniciar con la factura electrónica.
Es un documento que, aunque tiene un par de años, todavía está vigente la mayoría, porque lo que ha cambiado de entonces acá es que se usa el hash SHA-1 y no el MD5, además de las diferencias entre CFD y CFDi.
Un HASH es un algoritmo que te puede recordar el de un dígito verificador. Se toma un texto de casi cualquier longitud (desde 0 en adelante hasta varios miles de millones) y te genera SIEMPRE una cadena de 160 bits (20 bytes) que garantiza ser diferente para cada diferente entrada (bueno, CASI es perfecto). Con eso se garantiza que el original no se ha alterado.
La diferencia entre CFD y CFDi es que el primero le llaman "por medios propios" y las empresas pudieron optar por ese método hasta el 12 de Dic. del 2010. La empresa genera su propia factura electrónica CFD y a fin de mes le avisa al SAT, mediante reporte, lo que facturó. Los que iniciaron con la factura a partir del 2011, deben usar CFDi en donde la principal diferencia es que la factura debe ser certificada (o timbrada, como se le dice) por un tercero llamado PAC. Haces la factura, luego, a través de un servicio Web (Web Services Security) lo mandas con el PAC, que te regresa un segundo sello y un número de 32 caracteres (más 4 guiones, para ser 36) que será el folio oficial de la factura. Gracias al PAC, ya no tienes que enviar el reporte mensual.
Espero que este archivo te sirva para iniciar. Léelo y luego comenta qué tal te ha ido.
¡Saludos!
El archivo estará por un par de semanas aquí:
RecetaCFD
Re: Iniciando desde Cero la creacion de CFDI
Publicado: Mar Jul 31, 2012 6:53 pm
por crixus
¿En que lenguaje lo estas haciendo?
Re: Iniciando desde Cero la creacion de CFDI
Publicado: Mié Ago 01, 2012 12:10 am
por RickAlanis
Veo que en todos los foros lo preguntas, Luis.
Desarrollo en 4th Dimension, un RAD (rapid application development) francés, que inició con la Mac y que desde hace un buen tiempo funciona en Mac y en Windows.
Tiene esquema cliente-servidor, tiene una buena base de datos, a la que puedes acceder con el lenguaje o con SQL, con ODBC, tiene front-end para Oracle y otras bases de datos e incluso puedes prestar servicios web y es un servidor web, tanto de páginas estáticas como dinámicas.
Es muy interesante.
Pero la "Receta CFD" es genérico, para que te inicies con los CFD/CFDi.
¡Saludos!
Re: Iniciando desde Cero la creacion de CFDI
Publicado: Mié Ago 01, 2012 10:18 am
por jasistemas
El procedimiento a seguir esta bastante bien especificado en el Anexo 20 respecto de a lo que se le debe aplicar SHA1 y que se debe sellar y como.
Respecto de la tecnologia a usar, eso ya dependera de tus habilidades.
En mi caso particular, para evitar el uso de openssl.exe, use .net y c#, a traves de codigo puro opensslkey.cs que te permite acceder a archivo .key, a traves de las clases de criptografia de .net generar el sello.
Para la cadena original, lo mas comodo es generar primero el XML y luego usar el archivo de transformacion .xslt y ya con dicha cadena original procedes como te indican con el SHA.
Me parece q en el foro de VB vi codigo fuente publicado, y es muy estandar con lo que yo estuve manejando en .NET
Basicamente para el caso de CFD y CFD varia un poco los prefijos, pero las etiquetas vienen siendo las mismas, incluso, es necesario el CFDI generar el sello con tu propio .key tal como se hace con el CFD.
Para CFDI luego viene la parte extra, la de obtener el timbre, lo que haces a traves del PAC, quien con un webservice te solicita la info, y te envia una respuesta, la cual se incorpora como etiqueta dentro del XML timbrado, asi, tu XML lleva 2 sellos: el de tu .key y el que retorna el PAC.
Ademas, en la representacion impresa del CFD debes generarle un CBB, bastante sencillo de resolver x cierto con las bibliotecas que .net tiene para ello.
Halcon Divino publico codigo fuente para generar las etiquetas del CFDI y se me hicieron muy comodas sus rutinas (goglealo x si te etas interesado)
Para timbrad, ECODEX resulto ser muy confiable en mis pruebas.
Re: Iniciando desde Cero la creacion de CFDI
Publicado: Mié Ago 01, 2012 9:50 pm
por crixus
RickAlanis escribió:Veo que en todos los foros lo preguntas, Luis.
Desarrollo en 4th Dimension, un RAD (rapid application development) francés, que inició con la Mac y que desde hace un buen tiempo funciona en Mac y en Windows.
Tiene esquema cliente-servidor, tiene una buena base de datos, a la que puedes acceder con el lenguaje o con SQL, con ODBC, tiene front-end para Oracle y otras bases de datos e incluso puedes prestar servicios web y es un servidor web, tanto de páginas estáticas como dinámicas.
Es muy interesante.
Pero la "Receta CFD" es genérico, para que te inicies con los CFD/CFDi.
¡Saludos!
Lo pregunto, por que cualquier cosa que se tenga que hacer, no es lo mismo programarlo con Delphi, que con C# o PHP, a lo mejor con uno se hace en 10 líneas, y en otro se hace con 50, desconozco de ese programa, ¿que lenguaje es? y pues si leí el documento.
Saludos
Re: Iniciando desde Cero la creacion de CFDI
Publicado: Vie Ago 03, 2012 2:15 pm
por rent84
Gracias a la información que me han brindado en este foro he podido avanzar con esto de la facturación electrónica. Ya estoy generando el XML con todo y sello el problema que ahora tengo es que al momento de agregar el un "ComplementoConcepto" el de Instituciones educativas me pone por default el namespace "
xmlns:iedu="http://www.sat.gob.mx/cfd/3"" y ese no es el correcto, el correcto debería ser
"xmlns:iedu="http://www.sat.gob.mx/iedu"" pero como les comente lo pone por default y no se como quitarlo.
Mi codigo este hecho en VB6 y lo unico que tengo para poner ese complemento es esto:
Código: Seleccionar todo
Set instEducativas = CrearNodo("iedu:instEducativas")
instEducativas.setAttribute "version", "1.0"
instEducativas.setAttribute "nombreAlumno", "Carlos Uriel Marieles García"
instEducativas.setAttribute "CURP", "MAGC870912HGTRRS06"
instEducativas.setAttribute "nivelEducativo", "Profesional técnico"
instEducativas.setAttribute "autRVOE", "4587-MHD"
instEducativas.setAttribute "rfcPago", "ASI100623H46"
Alinear Concepto, 3
ComplementoConcepto.appendChild instEducativas
IndentarNodo ComplementoConcepto, 3
Concepto.appendChild ComplementoConcepto
Alinear Concepto, 2
Coomo ven, no pongo el namespace, pero creo que lo toma por default.
Adjunto el XML para que lo puedan revisar por favor y me den una sugerencia.
De antemano gracias por el apoyo.
Saludos cordiales,
Re: Iniciando desde Cero la creacion de CFDI
Publicado: Mar Nov 20, 2012 9:41 am
por jvaldivia
Hola rent84:
me gustaría saber si me puedes ayudar a generar todos los pasos para el xml listo para timbrar el PAC, quisiera saber si lo pudiste generar
sabes tengo dudas como agregar el sello digital
espero y me puedas ayudar
saludos y sigo al pendiente