| |||
Respuesta: Factura electroncia sat mexico pues si yo creo que el problema es el validador del sat ya realize el procedimiento con las clases en .net y con el openssl y las dos arrojaron justamente el mismo resultado el cual si valido el sat pero el lo toma en el resultado como MD5 seria cuestion de reportarlo al sat. |
| ||||
Respuesta: Factura electroncia sat mexico Hola scorpionsdd acabo de checar tu archivo .xml y lo valide en el SAT usando el certificado de prueba que da el SAT con nombre aaa010101aaa_CSD_05 y el resultado que me dio es el siguiente : Cita: El sello del comprobante es válido: Comprobante c:\factura1.xml leido exitosamente Validando encodingComprobante expresado en UTF-8 Realizando validación del sello con un certificado interno Certificado usado : 10001200000000022518 El comprobante incluye un certificado codificado Cadena original: ||2.0|ABCD|1|2010-09-21T17:46:30|49|2008|ingreso|UNA EXHIBICION|350|0|0|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 Leon|Mexico|95460|CAUR390312S87|Rosa María Calderón Uriegas|Topochico|Topochico|52|Jardines del Valle|Monterrey|México|95465|10|Caja|01|Vasos decorados|20|200|1|pieza|02|Charola metálica|150|150|IVA|16|56|| Digestión MD5 de cadena como HEX: 57afd484b4fd768b52180fb4a7a9a659 El sello del comprobante es válido |
| |||
Respuesta: Factura electroncia sat mexico Cita: hola gracias por tu ayuda, acabo de realizar la validacion y lei el .key del certificado 5 que es el que usaste y me sigue diciendo q es incorrecto, y lo acabo de descargar de http://www.sat.gob.mx/sitio_internet/e_sat/comprobantes_fiscales/15_15564.htmly la validacion la hice en https://www.consulta.sat.gob.mx/SICOFI_WEB/ModuloECFD_Plus/ValidadorComprobantes/Validador.html alguna idea de por k me manda incorrecto? |
| ||||
Respuesta: Factura electroncia sat mexico Hola nuevamente scorpiosdd, aqui te dejo el codigo del archivo .xml que pusiste y que genere la firma con el certificado antes mencionado, espero te sirva y tal ves puedas comparar si hay alguna diferiencia con el que tu generas. A ver si asi encontramos que es. Cita: Saludos! <?xml version="1.0" encoding="utf-8"?> <Comprobante serie="ABCD" version="2.0" folio="1" fecha="2010-09-21T17:46:30" sello="eiO/y2X1eLri/lLYTbctO78NNA0LTxeOsYagwHKvBbuZLnG2dAfXGGcAET6LT5X PnnBUSZiqH2kgMfTbULH0Vg9eDtcVaIoihZfgUR3wcnXhrTUts Jl7UGQlGvDUBsMb2Pkkb3x9JsNsF9HYdgg5jzswbtnEDIFsjbH/U1vw6m0=" noCertificado="10001200000000022518" subTotal="350" total="0" noAprobacion="49" anoAprobacion="2008" formaDePago="UNA EXHIBICION" descuento="0" metodoDePago="EFECTIVO" tipoDeComprobante="ingreso" 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" certificado="MIIDgjCCAmqgAwIBAgIUMTAwMDEyMDAwMDAwM DAwMjI1MTgwDQYJKoZIhvcNAQEFBQAwgcMxGTAXBgNVBAcTEEN pdWRhZCBkZSBNZXhpY28xFTATBgNVBAgTDE1leGljbywgRC5GL jELMAkGA1UEBhMCTVgxGjAYBgNVBAMTEUFDIGRlIFBydWViYXM gU0FUMTYwNAYDVQQLFC1BZG1pbmlzdHJhY2nzbiBkZSBTZWd1c mlkYWQgZGUgbGEgSW5mb3JtYWNp824xLjAsBgNVBAoUJVNlcnZ pY2lvIGRlIEFkbWluaXN0cmFjafNuIFRyaWJ1dGFyaWEwHhcNM DgwODIxMTUyMjEwWhcNMTAwODIxMTUyMjEwWjCBljElMCMGA1U ELRMcQUFBMDEwMTAxQUFBIC8gQUFBQTAxMDEwMUFBQTEeMBwGA 1UEBRMVIC8gQUFBQTAxMDEwMUhERlJYWDAxMRIwEAYDVQQKEwl NYXRyaXogU0ExETAPBgNVBAsTCFVuaWRhZCA5MRIwEAYDVQQDE wlNYXRyaXogU0ExEjAQBgNVBCkTCU1hdHJpeiBTQTCBnzANBgk qhkiG9w0BAQEFAAOBjQAwgYkCgYEA6APpD7rTd1b9HCPePPGHH 2xS/yowPTno5bby0zhuyiaMRvxi2U7S12sOOzROCiihUdTi4Hc+QCY PllcQTIYqmKfBChFySp0v8HFFgGnxfH6F+bMxEGbORjLryCd++ +Hhb/BZQbQTLpfsIDGmKvpk/H0+KfrIu0kSeAn8qS6R3H8CAwEAAaMdMBswDAYDVR0TAQH/BAIwADALBgNVHQ8EBAMCBsAwDQYJKoZIhvcNAQEFBQADggEBAN vComO4YnSoh/WlrK84oo9nGOLxlzPjtNkUHS9L5JULO/GCsj2//b+mc/Fz1ANxS/2+gjQqslnnL74IVhs00gxEhoe+G8xDGibVceI177WHBHMSR2cN oyt6agcsqMMbhVzZp4CZwOdkeW/atJdnXTY98hlZ2XS4/bdTlDlIAALFv9Gj++4kuYaI5w5RW+eKfhXKEhkUnniQ3XH7AjM ee8SicBDMd0iUX4fkrhegiAvEyWP9UOyQAttS3AwamfPAa/nvNYDkzkxY/kzprPTv7dBeD8HlR9j/yRmfW8qDZocjulfkrMt3ewfF/0leUJRMxOWA0kp7e39jxPFszbaOVzwA"> <Emisor rfc="ISP900909Q88" nombre="Industrias del Sur Poniente, S.A. de C.V."> <DomicilioFiscal calle="Alvaro Obregón" noExterior="37" noInterior="3" colonia="Col. Roma Norte" localidad="México" municipio="Cuauhtémoc" estado="Distrito Federal" pais="México" codigoPostal="06700" /> <ExpedidoEn calle="Pino Suarez" codigoPostal="95460" colonia="Centro" estado="Nuevo Leon" localidad="Monterrey" municipio="Monterrey" noExterior="23" pais="Mexico" /> </Emisor> <Receptor rfc="CAUR390312S87" nombre="Rosa María Calderón Uriegas|Topochico"> <Domicilio calle="Topochico" noExterior="52" colonia="Jardines del Valle" estado="Monterrey" pais="México" codigoPostal="95465" /> </Receptor> <Conceptos> <Concepto cantidad="10" unidad="Caja" noIdentificacion="01" descripcion="Vasos decorados" valorUnitario="20" importe="200" /> <Concepto cantidad="1" unidad="pieza" noIdentificacion="02" descripcion="Charola metálica" valorUnitario="150" importe="150" /> </Conceptos> <Impuestos> <Traslados> <Traslado importe="56" impuesto="IVA" tasa="16" /> </Traslados> </Impuestos> </Comprobante> |
| |||
Respuesta: Factura electroncia sat mexico hegaes te doy las gracias por indicar cual era el camino que debiamos tomar para la implementacion de la facturacion 100 en .net. ahora me surgio una duda de que forma agrego el certificado al archivo xml. no estoy seguro pero se obtiene con GetRawCertData y se pasa a base 64? Última edición por aksuesipn; 21/09/2010 a las 18:07 |
| ||||
Respuesta: Factura electroncia sat mexico Cita: Para obtener el certificado es muy sencillo, aqui te dejo las instrucciones que ocupo para hacerlo.Instanciar el objeto X509Certificate2 Dim objCert As New X509Certificate2() y pasarle el nombre y ruta del Cerfificado para obtener la información en bytes Dim bRawData As Byte() = readFile(archivo_xml) 'Importamos la información objCert.Import(bRawData) 'Retornamos la información del certificado en Base64 dim cadena as string = Convert.ToBase64String(bRawData) la variable cadena tiene la informacion del certificado en Base64 y es la que hay que poner en el atributo certificado del nodo Complemento. |
| |||
Respuesta: Factura electroncia sat mexico Cita: hola hegaes, mira estaba revisando y en note q en mi cadena original la fecha la dejaba intacta (una fecha con año de 2005), y en el xml le mandaba un datetime.now, ya modifique mi cadena original para que tenga el valor del Now() como en el xml, a parte el sello digital ya empezo a variar por lo mismo del cambio de fecha y hora, acabo de validar con estos cambios y sigue mandando invalido, lo hice con el cer 1 y cert 5, la validacion sigue siendo erronea. y eso que hoy descargue de nuevo el Cer_Sellos no se que mas me pueda faltar.saludos |
| |||
Respuesta: Factura electroncia sat mexico hola mikecoy, mira, La verdad no he encontrado mucho para vb6, apenas estoy trabajando en eso, te paso la parte de convertir la cadena original a utf8, hay que hacer referencia a Microsoft ActiveX Data Objects 2.5 Library, haces una forma con un boton command y dos rich tex box. codigo para el command: Private Sub Command1_Click() Dim strT As String, strFile As String strCadena = "||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|62 900|10|Caja|Vasos decorados|20|200|1|pieza|Charola metálica|150|150|IVA|16.00|56.00||" Me.RichTextBox1.Text = strCadena Me.RichTextBox2.Text = UTF8_Encode(strCadena) MsgBox "termino", vbInformation, Me.Caption End Sub ahora el codigo de la funcion Private Function UTF8_Encode(ByVal sStr As String) For l& = 1 To Len(sStr) lChar& = AscW(Mid(sStr, l&, 1)) If lChar& < 128 Then sUTF8$ = sUTF8$ + Mid(sStr, l&, 1) ElseIf ((lChar& > 127) And (lChar& < 2048)) Then sUTF8$ = sUTF8$ + Chr(((lChar& \ 64) Or 192)) sUTF8$ = sUTF8$ + Chr(((lChar& And 63) Or 128)) Else sUTF8$ = sUTF8$ + Chr(((lChar& \ 144) Or 234)) sUTF8$ = sUTF8$ + Chr((((lChar& \ 64) And 63) Or 128)) sUTF8$ = sUTF8$ + Chr(((lChar& And 63) Or 128)) End If Next l& UTF8_Encode = sUTF8$ End Function espero te sirva saludos |
| ||||
Respuesta: Factura electroncia sat mexico Cita: Saludos nuevamente.
Iniciado por scorpionsdd hola hegaes, mira estaba revisando y en note q en mi cadena original la fecha la dejaba intacta (una fecha con año de 2005), y en el xml le mandaba un datetime.now, ya modifique mi cadena original para que tenga el valor del Now() como en el xml, a parte el sello digital ya empezo a variar por lo mismo del cambio de fecha y hora, acabo de validar con estos cambios y sigue mandando invalido, lo hice con el cer 1 y cert 5, la validacion sigue siendo erronea. y eso que hoy descargue de nuevo el Cer_Sellos no se que mas me pueda faltar. saludos Por lo que comentas scorpionsdd me imagino que no estas generando la cadena original atraves del archivo .xlst que te proporciona el SAT para este propocito. Te recomiendo que lo hagas de esa forma ya que dicho archivo te retorna la cadena original basandose en la información de tu archivo .xml por lo es que es dificil que despues haya diferiencias o en tu cadena original y tu archivo .xml |
| |||
Respuesta: Factura electroncia sat mexico Cita: hola hegaes, tienes razon... No sabia esa parte del xlst, no se si me puedas explicar como hago esta parte o en donde encuentro este archivo u informacion al respecto.
Iniciado por hegaes saludos nuevamente. Por lo que comentas scorpionsdd me imagino que no estas generando la cadena original atraves del archivo .xlst que te proporciona el sat para este propocito. Te recomiendo que lo hagas de esa forma ya que dicho archivo te retorna la cadena original basandose en la información de tu archivo .xml por lo es que es dificil que despues haya diferiencias o en tu cadena original y tu archivo .xml Gracias y saludos. |
| |||
Respuesta: Factura electroncia sat mexico Cita: gracias por el aporte y como otra forma de obtenerlo es tambien con la propiedad getrawCertData de la clase X509Certificate2 es igualito a lo que posteaste la unica diferencia es que con el arreglo de bytes que se obtiene de la lectura directa del certificado es un bit mas grande que al obtenerlo por la propiedad, pero no hay problema de las dos formas realice las pruebas y el validador lo acepta.
Iniciado por hegaes Para obtener el certificado es muy sencillo, aqui te dejo las instrucciones que ocupo para hacerlo. Instanciar el objeto X509Certificate2 Dim objCert As New X509Certificate2() y pasarle el nombre y ruta del Cerfificado para obtener la información en bytes Dim bRawData As Byte() = readFile(archivo_xml) 'Importamos la información objCert.Import(bRawData) 'Retornamos la información del certificado en Base64 dim cadena as string = Convert.ToBase64String(bRawData) la variable cadena tiene la informacion del certificado en Base64 y es la que hay que poner en el atributo certificado del nodo Complemento. |
| |||
Respuesta: Factura electroncia sat mexico Cita: Disculpa que me intrometa pero creo que puedo ayudarte.el archivo lo obtienes de la pagina del SAT [URL="http://www.sat.gob.mx/sitio_internet/e_sat/comprobantes_fiscales/15_15565.html"]http://www.sat.gob.mx/sitio_internet/e_sat/comprobantes_fiscales/15_15565.html[/URL] de aqui tienes que bajar los dos archivos uno cadenaoriginal_2_0.xslt y utilerias.xslt una vez que tienes estos archivos los agregas a tu solucion. y despues ocupas la clase XslCompiledTransform para la obtencion de la cadena original, pero recureda que la cadena original tiene que estar expresada en UTF8 Dim transformer As XslCompiledTransform Dim utf8 As Encoding = Encoding.UTF8 Dim encodedBytes As Byte() Dim strwriter As System.IO.StringWriter = New System.IO.StringWriter() 'creamos la clase transfomer transformer = New XslCompiledTransform() 'cargamos el xslt (archivo de transformacion) a la clase transformer.Load(New XPathDocument(" DIRECCION DE TU ARCHIVO XSLT")) 'procedemos a realizar la transfomración del archivo xml en base al xslt y lo almacenamos en un string que regresaremos transformer.Transform(New XPathDocument("ARCHIVO XML DEL CUAL QUIERES OBTENER LA CADENA"), Nothing, strwriter) 'convertimos la cadena a utf8 y ya esta lista para ser utilizada en el hash encodedBytes = utf8.GetBytes(strwriter.ToString) como complemento existen dos maneras de realizar este proceso, me refiero a en linea y desconectado. en linea no necesitas nada mas que tener el archivo cadenaoriginal_2_0.XSLT y dentro de este mismo se estan inlcuyendo las referencias a los demas archivos que se ocupan. y desconectado aqui tendrias que obtener todos los archivos que el SAT ocupa para la obtencion de la cadena original y reemplazar las direcciones del archivo cadenaoriginal_2_0 por la locacion original de los archivos. Última edición por aksuesipn; 22/09/2010 a las 09:50 Razón: complemento |
| |||
Respuesta: Factura electroncia sat mexico Cita: hola gracias por tu ayuda, estoy viendo tu codigo y deja ver si estoy en lo correcto, en la siguientes lineas deberia de quedar algo asi:
Iniciado por aksuesipn Disculpa que me intrometa pero creo que puedo ayudarte. el archivo lo obtienes de la pagina del SAT [URL="http://www.sat.gob.mx/sitio_internet/e_sat/comprobantes_fiscales/15_15565.html"]http://www.sat.gob.mx/sitio_internet/e_sat/comprobantes_fiscales/15_15565.html[/URL] de aqui tienes que bajar los dos archivos uno cadenaoriginal_2_0.xslt y utilerias.xslt una vez que tienes estos archivos los agregas a tu solucion. y despues ocupas la clase XslCompiledTransform para la obtencion de la cadena original, pero recureda que la cadena original tiene que estar expresada en UTF8 Dim transformer As XslCompiledTransform Dim utf8 As Encoding = Encoding.UTF8 Dim encodedBytes As Byte() Dim strwriter As System.IO.StringWriter = New System.IO.StringWriter() 'creamos la clase transfomer transformer = New XslCompiledTransform() 'cargamos el xslt (archivo de transformacion) a la clase transformer.Load(New XPathDocument(" DIRECCION DE TU ARCHIVO XSLT")) 'procedemos a realizar la transfomración del archivo xml en base al xslt y lo almacenamos en un string que regresaremos transformer.Transform(New XPathDocument("ARCHIVO XML DEL CUAL QUIERES OBTENER LA CADENA"), Nothing, strwriter) 'convertimos la cadena a utf8 y ya esta lista para ser utilizada en el hash encodedBytes = utf8.GetBytes(strwriter.ToString) como complemento existen dos maneras de realizar este proceso, me refiero a en linea y desconectado. en linea no necesitas nada mas que tener el archivo cadenaoriginal_2_0.XSLT y dentro de este mismo se estan inlcuyendo las referencias a los demas archivos que se ocupan. y desconectado aqui tendrias que obtener todos los archivos que el SAT ocupa para la obtencion de la cadena original y reemplazar las direcciones del archivo cadenaoriginal_2_0 por la locacion original de los archivos. transformer.Load(New XPathDocument("C:\Documents and Settings\Administrador\Mis documentos\VS.NET\FacturacionElectronica.Net\Docs\ XLST\cadenaoriginal_2_0.XLST")) y transformer.Transform(New XPathDocument(("C:\Documents and Settings\Administrador\Mis documentos\VS.NET\FacturacionElectronica.Net\Docs\ facturas\factura.Xml"), Nothing, strwriter) y luego a esta variable: encodedBytes, es la q debo de tomar como selllo digital? saludos |
| ||||
Respuesta: Factura electroncia sat mexico Cita:
Iniciado por scorpionsdd hola gracias por tu ayuda, estoy viendo tu codigo y deja ver si estoy en lo correcto, en la siguientes lineas deberia de quedar algo asi: transformer.Load(New XPathDocument("C:\Documents and Settings\Administrador\Mis documentos\VS.NET\FacturacionElectronica.Net\Docs\ XLST\cadenaoriginal_2_0.XLST")) y transformer.Transform(New XPathDocument(("C:\Documents and Settings\Administrador\Mis documentos\VS.NET\FacturacionElectronica.Net\Docs\ facturas\factura.Xml"), Nothing, strwriter) y luego a esta variable: encodedBytes, es la q debo de tomar como selllo digital? saludos scopionssdd, con respecto a lo que comentas, no te confundas, lo que estas haciendo con las instrucciones es obtener la cadena original basandote en la información de tu factura en xml, sin embargo esa cadena un no esta sellada, como te comenta aksuesipn esa cadena resultante te servirá para procesarla con el hash. Saludos! |
| |||
Respuesta: Factura electroncia sat mexico Cita: HOLA hegaes, GRACIAS POR LA AYUDA, PERO CREO YA ME CONFUNDI MAS, LO QUE PASA ES QUE EL PROCESO QUE REALIZO ES EL SIGUIENTE:
Iniciado por hegaes scopionssdd, con respecto a lo que comentas, no te confundas, lo que estas haciendo con las instrucciones es obtener la cadena original basandote en la información de tu factura en xml, sin embargo esa cadena un no esta sellada, como te comenta aksuesipn esa cadena resultante te servirá para procesarla con el hash. Saludos! string Path = @"C:\Documents and Settings\Administrador\Mis documentos\HIT SERVICES\VS.NET\FacturacionElectronica.Net\Docs\"; string strCadenaOriginal; string ArchivoCertificado =Path+ @"CERTIFICADOS\aaa010101aaa_CSD_01.cer"; string key = Path + @"CERTIFICADOS\aaa010101aaa_CSD_01.key"; string lPassword = @"a0123456789"; string Digestion = ""; DateTime Fecha = DateTime.Now ; string Fechas = ""; //GENERO MI CADENA ORIGINAL LEYENDO LOS DATOS DE EMISOR, RECEPTOR Y DETALLE DE FACTURA Fechas = Fecha.Date.ToString("yyyy-MM-dd") + "T" + Fecha.ToString("HH:mm:ss"); strCadenaOriginal = "||A|1|" + Fechas + "|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||"; //APLICO DIGESTION Digestion = clsSeguridad.CodificarMD5(strCadenaOriginal); //USO EL PASSWORD.TXT SecureString lSecStr = new SecureString(); lSecStr.Clear(); foreach (char c in lPassword.ToCharArray()) lSecStr.AppendChar(c); //PASO A BYTE .KEY Byte[] pLlavePrivadaenBytes = System.IO.File.ReadAllBytes(key); //OBTENGO SELLO DIGITAL CON AYUDA DEL .KEY Y PASSWORD RSACryptoServiceProvider lrsa = clsSeguridad.DecodeEncryptedPrivateKeyInfo(pLlaveP rivadaenBytes, lSecStr); MD5CryptoServiceProvider hasher = new MD5CryptoServiceProvider(); Byte[] bytesFirmados = lrsa.SignData(System.Text.Encoding.UTF8.GetBytes(s trCadenaOriginal), hasher); string sellodigital = Convert.ToBase64String(bytesFirmados); //LEER .CER PARA OBTENER EL NO. CERTIFICADO X509Certificate2 certificado = new X509Certificate2(ArchivoCertificado); String NoCertificado =clsSeguridad.HexToString(certificado.SerialNumber ); //DESPUES DE OBTENER EL SELLO DIGITAL EN NO. CERTIFICADO GENERO EL XML PARA REALIZAR VALIDACION GeneraXML(sellodigital, NoCertificado, Fecha,Path); SI TE DAS CUENTA LA DIGESTION LA REALIZO Y OBTENGO UN STRING, PERO NO LO OCUPO EN OTRA PARTE, ESPERO ME PUEDAS AYUDAR A ACLARAR QUE ESTOY HACIENDO MAL. SALUDOS Y GRACIAS POR TU ATENCION |
| |||
Respuesta: Factura electroncia sat mexico Que tal amigo, estoy haciendo lo de la factura electrónica pero migre el código a vb.net. Al correr la rutina me marca el siguiente error, en la linea que marque en negritas: System.NullReferenceException was unhandled Message=Object reference not set to an instance of an object. Mi código es el siguiente. Dim pLlavePrivadaenBytes As Byte() = System.IO.File.ReadAllBytes(key) Dim lrsa As RSACryptoServiceProvider = clsSeguridad.DecodeEncryptedPrivateKeyInfo(pLlaveP rivadaenBytes, IsecStr) Dim hasher As MD5CryptoServiceProvider = New MD5CryptoServiceProvider() Dim bytesFirmados As Byte() = lrsa.SignData(System.Text.Encoding.UTF8.GetBytes(S trcadenaoriginal), hasher) Dim sellodigital As String = Convert.ToBase64String(bytesFirmados) Dim certificado As X509Certificate2 = New X509Certificate2(ArchivoCertificado) Dim NoCertificado = HexToString(certificado.SerialNumber) Si tienen una idea a que se deberá, se los agradecere. Saludos |
| ||||
Respuesta: Factura electroncia sat mexico Hola nuevamente scopionssdd, por lo que veo en tu código, tú creas la cadena original. Cita: Pues bien, con codigo que te proporciono aksuesipn ya no es necesario que tu escribas la cadena original ya que el archivo .xslt te da como resultado la cadena original, la cual se crea en base a tu factura, es decir se lee tu factura y se extraen los datos necesarios de la factura para crear la cadena original.DateTime Fecha = DateTime.Now ; string Fechas = ""; //GENERO MI CADENA ORIGINAL LEYENDO LOS DATOS DE EMISOR, RECEPTOR Y DETALLE DE FACTURA Fechas = Fecha.Date.ToString("yyyy-MM-dd") + "T" + Fecha.ToString("HH:mm:ss"); strCadenaOriginal = "||A|1|" + Fechas + "|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||"; Cita: y la variable encodeBytes es la que debes codificar.Dim transformer As XslCompiledTransform Dim utf8 As Encoding = Encoding.UTF8 Dim encodedBytes As Byte() Dim strwriter As System.IO.StringWriter = New System.IO.StringWriter() 'creamos la clase transfomer transformer = New XslCompiledTransform() 'cargamos el xslt (archivo de transformacion) a la clase transformer.Load(New XPathDocument(" DIRECCION DE TU ARCHIVO XSLT")) 'procedemos a realizar la transfomración del archivo xml en base al xslt y lo almacenamos en un string que regresaremos transformer.Transform(New XPathDocument("ARCHIVO XML DEL CUAL QUIERES OBTENER LA CADENA"), Nothing, strwriter) 'convertimos la cadena a utf8 y ya esta lista para ser utilizada en el hash encodedBytes = utf8.GetBytes(strwriter.ToString) Espero haber aclarado tu duda. Saludos!! |
| |||
Respuesta: Factura electroncia sat mexico Cita: hola de nuevo hegaes, disculpa la molestia pero es que no comprendo, lo que entiendo es que debo de generar mi xml?? despues este xml lo uso con cadenaoriginal_2_0.xlst?? aqui genero el sellado y despues este lo anexo al xml que genere previamente??
Iniciado por hegaes Hola nuevamente scopionssdd, por lo que veo en tu código, tú creas la cadena original. Pues bien, con codigo que te proporciono aksuesipn ya no es necesario que tu escribas la cadena original ya que el archivo .xslt te da como resultado la cadena original, la cual se crea en base a tu factura, es decir se lee tu factura y se extraen los datos necesarios de la factura para crear la cadena original. y la variable encodeBytes es la que debes codificar. Espero haber aclarado tu duda. Saludos!! gracias por el aporte y disculpa la molestias. saludos. |
| ||||
Respuesta: Factura electroncia sat mexico Cita:
Iniciado por scorpionsdd hola de nuevo hegaes, disculpa la molestia pero es que no comprendo, lo que entiendo es que debo de generar mi xml?? despues este xml lo uso con cadenaoriginal_2_0.xlst?? aqui genero el sellado y despues este lo anexo al xml que genere previamente?? gracias por el aporte y disculpa la molestias. saludos. No es molestia, estamos para ayudar en medida de lo que sea posible. Y estas en lo correcto, al usar el archivo cadenaoriginal_2_0.xlst partimos de la idea que tu factura ya esta generada , pues la cadena original se crea extrayendo la informacion de tu factura. Posteriormente, tendrias que actualizar tu factura con el sello que hayas obtenido. |
| |||
Respuesta: Factura electroncia sat mexico Cita: gracias, entonces solo debo de actualizar mi sello digital, mm entonces deja lo intento y te aviso.
Iniciado por hegaes No es molestia, estamos para ayudar en medida de lo que sea posible. Y estas en lo correcto, al usar el archivo cadenaoriginal_2_0.xlst partimos de la idea que tu factura ya esta generada , pues la cadena original se crea extrayendo la informacion de tu factura. Posteriormente, tendrias que actualizar tu factura con el sello que hayas obtenido. gracias y saludos. |
| |||
Respuesta: Factura electroncia sat mexico Publicado hoy Jueves 23 de Septiembre Aqui esta el link http://www.dof.gob.mx/nota_detalle.p...cha=23/09/2010 DOF: 23/09/2010 ANEXO 20 de la Primera Resolución de Modificaciones a la Resolución Miscelánea Fiscal para 2010, publicada el 14 de septiembre de 2010. Al margen un sello con el Escudo Nacional, que dice: Estados Unidos Mexicanos.- Secretaría de Hacienda y Crédito Público. Contenido Medios electrónicos I. Del Comprobante Fiscal Digital: A. Características técnicas del archivo que contenga el informe mensual de comprobantes fiscales digitales emitidos B. Estándar de comprobante fiscal digital C. Generación de sellos digitales para comprobantes fiscales digitales II. Del Comprobante Fiscal Digital por Internet: A. Estándar de comprobante fiscal digital por internet B. Generación de sellos digitales para comprobantes fiscales digitales por internet C. Estándar y uso del complemento obligatorio: Timbre Fiscal Digital del SAT D. Estándar del servicio de cancelación E. Especificación técnica del código de barras bidimensional III. De los distintos medios de comprobación digital: A. Estándares y especificaciones técnicas que deberán cumplir las aplicaciones informáticas para la generación de claves de criptografía asimétrica a utilizar para Firma Electrónica Avanzada B. Uso de la facilidad de nodos opcionales <Complemento> y <ComplementoConcepto> C. Uso de la facilidad de ensobretado <Addenda> |
| ||||
Respuesta: Factura electroncia sat mexico Cita: Gracias por la información winexim, el único cambio que note para los que generamos CFD es que ya es oficial que se usará SHA1 en lugar de MD5.
Iniciado por winexim Publicado hoy Jueves 23 de Septiembre Aqui esta el link [url]http://www.dof.gob.mx/nota_detalle.php?codigo=5160215&fecha=23/09/2010[/url] DOF: 23/09/2010 ANEXO 20 de la Primera Resolución de Modificaciones a la Resolución Miscelánea Fiscal para 2010, publicada el 14 de septiembre de 2010. Al margen un sello con el Escudo Nacional, que dice: Estados Unidos Mexicanos.- Secretaría de Hacienda y Crédito Público. Contenido Medios electrónicos I. Del Comprobante Fiscal Digital: A. Características técnicas del archivo que contenga el informe mensual de comprobantes fiscales digitales emitidos B. Estándar de comprobante fiscal digital C. Generación de sellos digitales para comprobantes fiscales digitales II. Del Comprobante Fiscal Digital por Internet: A. Estándar de comprobante fiscal digital por internet B. Generación de sellos digitales para comprobantes fiscales digitales por internet C. Estándar y uso del complemento obligatorio: Timbre Fiscal Digital del SAT D. Estándar del servicio de cancelación E. Especificación técnica del código de barras bidimensional III. De los distintos medios de comprobación digital: A. Estándares y especificaciones técnicas que deberán cumplir las aplicaciones informáticas para la generación de claves de criptografía asimétrica a utilizar para Firma Electrónica Avanzada B. Uso de la facilidad de nodos opcionales <Complemento> y <ComplementoConcepto> C. Uso de la facilidad de ensobretado <Addenda> |
| |||
Respuesta: Factura electroncia sat mexico hola a todos, encontre esta direccion de taringa donde esta el codigo en vb6 para generar la factura electronica http://www.taringa.net/posts/downloads/6218009/Generar-sello-para-la-factura-electronica-de-Mexico.html esta muy bien el tutorial. Meritos para su creador, yo solo pongo el link |
| |||
Respuesta: Factura electroncia sat mexico Que tal a todos los del foro, alguien sabe como obtener el numero de folios solicitados o donde se almacena esta informacion para llevar el control de los que ya fueron emitidos??? |
| |||
Respuesta: Factura electroncia sat mexico hola techsjll primero que nada te agradesco por el codigo de codificación a utf-8 funciona de maravilla lo complemente con otra clase que obtiene la digestion a md5 y ya obtengo lo que todos obtienen en este foro ahora estoy lidiando con el sellado ya que si lo realizo con opensll no me genera ninguno de los sellos que aqui ponen como ejemplo. de ante mano gracias y si puedo apoyarte en algo cuenta conmigo saludos Última edición por mikecoy; 23/09/2010 a las 16:51 |
| |||
Respuesta: Factura electroncia sat mexico Cita: HOLA HEGAES, QUE CREES YA HICE LA PRUEBA CON EL XLST DEL SAT, GENERO LA CADENA ORIGINAL CON EL XLST Y ACTUALIZO MI SELLO. EL RESULTADO DEL XML ES:
Iniciado por hegaes No es molestia, estamos para ayudar en medida de lo que sea posible. Y estas en lo correcto, al usar el archivo cadenaoriginal_2_0.xlst partimos de la idea que tu factura ya esta generada , pues la cadena original se crea extrayendo la informacion de tu factura. Posteriormente, tendrias que actualizar tu factura con el sello que hayas obtenido. <?xml version="1.0" encoding="utf-8" ?> - <Comprobante serie="ABCD" version="2.0" folio="1" fecha="2010-09-23T17:49:34" sello="fHwyLjB8QUJDRHwxfDIwMTAtMDktMjNUMTc6NDk6MzR 8NDl8MjAwOHxpbmdyZXNvfFVOQSBFWEhJQklDSU9OfDM1MHwwf DB8SVNQOTAwOTA5UTg4fEluZHVzdHJpYXMgZGVsIFN1ciBQb25 pZW50ZSwgUy5BLiBkZSBDLlYufEFsdmFybyBPYnJlZ8OzbnwzN 3wzfENvbC4gUm9tYSBOb3J0ZXxNw6l4aWNvfEN1YXVodMOpbW9 jfERpc3RyaXRvIEZlZGVyYWx8TcOpeGljb3wwNjcwMHxQaW5vI FN1YXJlenwyM3xDZW50cm98TW9udGVycmV5fE1vbnRlcnJleXx OdWV2byBMZW9ufE1leGljb3w5NTQ2MHxDQVVSMzkwMzEyUzg3f FJvc2EgTWFyw61hIENhbGRlcsOzbiBVcmllZ2FzfFRvcG9jaGl jb3xUb3BvY2hpY298NTJ8SmFyZGluZXMgZGVsIFZhbGxlfE1vb nRlcnJleXxNw6l4aWNvfDk1NDY1fDEwfENhamF8MDF8VmFzb3M gZGVjb3JhZG9zfDIwfDIwMHwxfHBpZXphfDAyfENoYXJvbGEgb WV0w6FsaWNhfDE1MHwxNTB8SVZBfDE1fDUyLjV8fA==" noCertificado="30001000000100000800" subTotal="350" total="0" noAprobacion="49" anoAprobacion="2008" formaDePago="UNA EXHIBICION" descuento="0" metodoDePago="EFECTIVO" tipoDeComprobante="ingreso" 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"> - <Emisor rfc="ISP900909Q88" nombre="Industrias del Sur Poniente, S.A. de C.V."> <DomicilioFiscal calle="Alvaro Obregón" noExterior="37" noInterior="3" colonia="Col. Roma Norte" localidad="México" municipio="Cuauhtémoc" estado="Distrito Federal" pais="México" codigoPostal="06700" /> <ExpedidoEn calle="Pino Suarez" codigoPostal="95460" colonia="Centro" estado="Nuevo Leon" localidad="Monterrey" municipio="Monterrey" noExterior="23" pais="Mexico" /> </Emisor> - <Receptor rfc="CAUR390312S87" nombre="Rosa María Calderón Uriegas|Topochico"> <Domicilio calle="Topochico" noExterior="52" colonia="Jardines del Valle" estado="Monterrey" pais="México" codigoPostal="95465" /> </Receptor> - <Conceptos> <Concepto cantidad="10" unidad="Caja" noIdentificacion="01" descripcion="Vasos decorados" valorUnitario="20" importe="200" /> <Concepto cantidad="1" unidad="pieza" noIdentificacion="02" descripcion="Charola metálica" valorUnitario="150" importe="150" /> </Conceptos> - <Impuestos> - <Traslados> <Traslado importe="52.5" impuesto="IVA" tasa="15" /> </Traslados> </Impuestos> </Comprobante> LO VALIDE Y ME DIO ESTO: El sello del comprobante presenta problemas: Comprobante C:\Prueba.xml leido exitosamente Validando encodingComprobante expresado en UTF-8 Realizando validación del sello con un certificado externo Certificado usado : 30001000000100000800 Certificado reportado : 30001000000100000800 El sello no pudo ser verificado ALGUNA IDEA QUE MAS ESTE HACIENDO MAL JEJEJE. GRACIAS POR TU AYUDA. |
| ||||
Respuesta: Factura electroncia sat mexico Cita: Te comento escorpionsdd que si el validador del SAT te marca que el sello no pudo ser verificado se debe a que no es correcta la firma
Iniciado por scorpionsdd HOLA HEGAES, QUE CREES YA HICE LA PRUEBA CON EL XLST DEL SAT, GENERO LA CADENA ORIGINAL CON EL XLST Y ACTUALIZO MI SELLO. EL RESULTADO DEL XML ES: <?xml version="1.0" encoding="utf-8" ?> - <Comprobante serie="ABCD" version="2.0" folio="1" fecha="2010-09-23T17:49:34" sello="fHwyLjB8QUJDRHwxfDIwMTAtMDktMjNUMTc6NDk6MzR 8NDl8MjAwOHxpbmdyZXNvfFVOQSBFWEhJQklDSU9OfDM1MHwwf DB8SVNQOTAwOTA5UTg4fEluZHVzdHJpYXMgZGVsIFN1ciBQb25 pZW50ZSwgUy5BLiBkZSBDLlYufEFsdmFybyBPYnJlZ8OzbnwzN 3wzfENvbC4gUm9tYSBOb3J0ZXxNw6l4aWNvfEN1YXVodMOpbW9 jfERpc3RyaXRvIEZlZGVyYWx8TcOpeGljb3wwNjcwMHxQaW5vI FN1YXJlenwyM3xDZW50cm98TW9udGVycmV5fE1vbnRlcnJleXx OdWV2byBMZW9ufE1leGljb3w5NTQ2MHxDQVVSMzkwMzEyUzg3f FJvc2EgTWFyw61hIENhbGRlcsOzbiBVcmllZ2FzfFRvcG9jaGl jb3xUb3BvY2hpY298NTJ8SmFyZGluZXMgZGVsIFZhbGxlfE1vb nRlcnJleXxNw6l4aWNvfDk1NDY1fDEwfENhamF8MDF8VmFzb3M gZGVjb3JhZG9zfDIwfDIwMHwxfHBpZXphfDAyfENoYXJvbGEgb WV0w6FsaWNhfDE1MHwxNTB8SVZBfDE1fDUyLjV8fA==" noCertificado="30001000000100000800" subTotal="350" total="0" noAprobacion="49" anoAprobacion="2008" formaDePago="UNA EXHIBICION" descuento="0" metodoDePago="EFECTIVO" tipoDeComprobante="ingreso" 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"> - <Emisor rfc="ISP900909Q88" nombre="Industrias del Sur Poniente, S.A. de C.V."> <DomicilioFiscal calle="Alvaro Obregón" noExterior="37" noInterior="3" colonia="Col. Roma Norte" localidad="México" municipio="Cuauhtémoc" estado="Distrito Federal" pais="México" codigoPostal="06700" /> <ExpedidoEn calle="Pino Suarez" codigoPostal="95460" colonia="Centro" estado="Nuevo Leon" localidad="Monterrey" municipio="Monterrey" noExterior="23" pais="Mexico" /> </Emisor> - <Receptor rfc="CAUR390312S87" nombre="Rosa María Calderón Uriegas|Topochico"> <Domicilio calle="Topochico" noExterior="52" colonia="Jardines del Valle" estado="Monterrey" pais="México" codigoPostal="95465" /> </Receptor> - <Conceptos> <Concepto cantidad="10" unidad="Caja" noIdentificacion="01" descripcion="Vasos decorados" valorUnitario="20" importe="200" /> <Concepto cantidad="1" unidad="pieza" noIdentificacion="02" descripcion="Charola metálica" valorUnitario="150" importe="150" /> </Conceptos> - <Impuestos> - <Traslados> <Traslado importe="52.5" impuesto="IVA" tasa="15" /> </Traslados> </Impuestos> </Comprobante> LO VALIDE Y ME DIO ESTO: El sello del comprobante presenta problemas: Comprobante C:\Prueba.xml leido exitosamente Validando encodingComprobante expresado en UTF-8 Realizando validación del sello con un certificado externo Certificado usado : 30001000000100000800 Certificado reportado : 30001000000100000800 El sello no pudo ser verificado ALGUNA IDEA QUE MAS ESTE HACIENDO MAL JEJEJE. GRACIAS POR TU AYUDA. |
| |||
Respuesta: Factura electroncia sat mexico Hola a todos!! Hace unos dias empeze con el desarrollo de un sistema que permite la firma de comprobantes fiscales,en UNIX/PROGRESS, estuve leyendo sus comentarios, cuando estaba buscando información al respecto. Bueno sin más nada mas comentarles que el proceso que han estado siguiendo esta erroneo en un paso, que ha pasado ser despercibido, y es algo por lo que veo han batallado Bueno explico donde fue el mal paso , es cuando hacen el primer MD5, si leyeron bien primer md5, por que? simple el openssl por default tiene el algoritmo MD5 para su utilización, por lo tanto cuando hacen: openssl> dgst -md5 -out md5.txt cadenaoriginal.txt openssl> dgst -sign key.pem -out sello.txt md5.txt Lo que sucede es que hacen nuevamente un MD5 al archivo MD5.txt, por lo tanto el sello generado es invalido en el SAT. Por default el comando dgst tiene como parametro -md5 como predeterminado entonces al firmarlo, no firma el md5.txt si no al nuevo md5 generado. Por lo tanto para solucionar este problema deben hacer lo siguiente: openssl>dgst -md5 -sign key.pem -out firma.txt cadenaoriginal.txt openssl>enc -base64 -A -in firma.txt -out sello.txt Con esto obtienen el sello valido Espero que les ayude a los que no lo han conseguido Saludos y felices códigos Atte: Manuel Esquivel (pero en el bajo mundo me dicen ikari84 :-p) PD: Todo lo programe desde UNIX SCO OpenServer Release 5/PROGRESS 8.2 A/openssl 0.9.7i |
| |||
Respuesta: Factura electroncia sat mexico Muchas gracias por todas sus aportaciones !!! Estaba funcionando bien mi programa en VB.NET mientras no utilizara acentos !!! Incorporé el código en una clase de C++.NET de lo sugerido por MarkX (Muchas gracias MarkX, tu código fué de mucha utilidad) y ahora todo está funcionando con acentos en VB.NET AL FIN !!!!! |
Etiquetas: |