| |||
Respuesta: Facturas Digitales SAT - Mexico C# Disculpa...funciona al 100 tu sistema??? Responde pronto |
| |||
Respuesta: Facturas Digitales SAT - Mexico C# Que tal, antes que nada un saludo a todos, esta es la primera vez que escribo en este foro, pero realmente necesito ayuda. Estoy atorado con la generacion del archivo con la cadena original, ya que al guardarlo o me lo guarda en ansi o utf8 pero con bom. El problema es que si guardo el texto de la cadena original dentro de la variable si me lo guarda sin bom, pero si la variable que tiene la cadena original es producto de las concatenaciones ya no me funciona, espero me haya dado a entender, por ejemplo: Funciona: strCadOriginal = "||2.0|FAPBL|38|20-12-2010T11:..." No funciona: strCadIriginal = strVersion & strSerie & ... Sabran por que es esto, tengo mas de tres dias con esto y no puedo resolverlo, les agradezco su atencion. Gracias |
| |||
Respuesta: Facturas Digitales SAT - Mexico C# Ve en el foro de .net http://www.forosdelweb.com/f29/factu...mexico-806167/ Como recomendacion, es mejor generar la cadena original mediante la transformacion via XSLT con el archivo publicado x el sat. Queda en 3 o 4 lineas y te evitas problemas. |
| |||
Respuesta: Facturas Digitales SAT - Mexico C# Hola, solo para agradecer a todos y de paso postear mis resultados. No se como este esto, pero ahi va mi solucion que me genera un sello valido:
Código C#:
Ver original [URL="http://www.forosdelweb.com/f78/facturas-digitales-sat-mexico-c-803607/index3.html#post3573197"]Aqui esta el post en el que el usuario J_L_A menciona como generar las clases a partir del archivo [B]cfdv2.xsd[/B][/URL] Gracias a todos. Última edición por mrcs_jvc; 21/12/2010 a las 12:43 Razón: Update |
| |||
Respuesta: Facturas Digitales SAT - Mexico C# Gracias a todos los que ponen sus dudas y soluciones he logrado crear mi comprobante fiscal digital, de aquí y de otras páginas, les dejo mi código por si a alguien le sirve, es visual basic 2008: Cadena Original: Cadena = “|” SGL_Query = “SELECT EFA_CEFA,EFA_NUME,CONVERT(VARCHAR,EFA_FECH,126),CT E_NORS,CTE_RFCC,CTE_CALL,CTE_NEXT,CTE_NINT,CTE_COL O,” SGL_Query = SGL_Query & “PDM_DESC, ENT_DESC, PAI_DESC, CTE_CODP ” SGL_Query = SGL_Query & “FROM TDFCTEFA, TCFCTCTE, TCRHUPAI, TCRHUPDM, TCRHUENT ” SGL_Query = SGL_Query & “WHERE EFA_CCTE = CTE_CCTE And CTE_CPDM = PDM_CPDM And CTE_CENT = ENT_CENT ” SGL_Query = SGL_Query & “And CTE_CPAI = PAI_CPAI ” SGL_Query = SGL_Query & ” AND EFA_CEFA=” & Val(Txt_Clave.Text) Call Ejecuta(sat, SGL_Query) Do Until TraeSig(sat) = NOMOREROWS Cadena = Cadena + “|2.0|A” Cadena = Cadena + “|” + Trim(DameDato(sat, 2)) Cadena = Cadena + “|” + Trim(DameDato(sat, 3)) Cadena = Cadena + “|174911|2010|ingreso|efectivo|Pago en una sola exhibicion|subtotal|0|grantotal” Cadena = Cadena + “|JSI060303UA9|JF SISTEMAS, S. A. DE C. V.|MIRAVEREDA|23|B|CUMBRIA” Cadena = Cadena + “|CUAUTITLAN IZCALLI|ESTADO DE MEXICO|MEXICO|54740″ Cadena = Cadena + “|” + Trim(DameDato(sat, 5)) Cadena = Cadena + “|” + Trim(DameDato(sat, 4)) Cadena = Cadena + “|” + Trim(DameDato(sat, 6)) If Trim(DameDato(sat, 7)) + Trim(DameDato(sat, 8)) “” Then Cadena = Cadena + “|” + Trim(DameDato(sat, 7)) + Trim(DameDato(sat, 8)) Else Cadena = Cadena + “|” End If Cadena = Cadena + “|” + Trim(DameDato(sat, 9)) Cadena = Cadena + “|” + Trim(DameDato(sat, 10)) Cadena = Cadena + “|” + Trim(DameDato(sat, 11)) Cadena = Cadena + “|” + Trim(DameDato(sat, 12)) Cadena = Cadena + “|” + Trim(DameDato(sat, 13)) Loop SGL_Query = “SELECT DFE_CANT,DFE_CONC,DFE_IMPO,DFE_CANT*DFE_IMPO,DFE_I IVA*DFE_CANT,DFE_CONS ” SGL_Query = SGL_Query & “FROM TDFCTDFE WHERE DFE_CEFA=” & Val(Txt_Clave.Text) Call Ejecuta(sat, SGL_Query) Dim ImpIva As Double ImpIva = 0 GTotal = 0 Subtotal = 0 Do Until TraeSig(sat) = NOMOREROWS Cadena = Cadena + “|” + Trim(DameDato(sat, 1)) Cadena = Cadena + “|PZA” Cadena = Cadena + “|” + Trim(DameDato(sat, 6)) Cadena = Cadena + “|” + Trim(DameDato(sat, 2)) Cadena = Cadena + “|” + Trim(Str(CorrigeMoneda(DameDato(sat, 3)))) Cadena = Cadena + “|” + Trim(Str(CorrigeMoneda(DameDato(sat, 4)))) ImpIva = ImpIva + Val(CorrigeMoneda(DameDato(sat, 5))) Subtotal = Subtotal + CorrigeMoneda(DameDato(sat, 4)) GTotal = GTotal + CorrigeMoneda(DameDato(sat, 4)) + CorrigeMoneda(DameDato(sat, 5)) Loop Cadena = Cadena + “|IVA|” + Trim(Str(IIva * 100)) Cadena = Cadena + “|” & Trim(Str(ImpIva)) Cadena = Cadena + “|” & Trim(Str(ImpIva)) Cadena = Cadena + “||” Cadena = Replace(Cadena, “subtotal”, Trim(Str(Subtotal))) Cadena = Replace(Cadena, “grantotal”, Trim(Str(GTotal))) System.IO.File.WriteAllText(“C:\SARV3.1J\ELE\caden a_orig.txt”, Cadena) archivo XML: Dim ANIO As Long ANIO = 0 SGL_Query = “SELECT YEAR(EFA_FECH) FROM TDFCTEFA WHERE EFA_CEFA=” & Val(Txt_Clave.Text) Call Ejecuta(sat, SGL_Query) Do Until TraeSig(sat) = NOMOREROWS ANIO = Val(DameDato(sat, 1)) Loop Dim W As New XmlTextWriter(“C:\SARV3.1J\ELE\” & Txt_Clave.Text & “.xml”, System.Text.Encoding.UTF8) W.WriteStartDocument() Shell(“C:\OpenSSL-Win32\bin\openssl.exe pkcs8 -inform DER -in C:\SARv3.1J\ELE\JSI060303UA9_0903250930.key -passin pass:chela2009 -out C:\SARV3.1J\ELE\JSI.key.pem”) System.Threading.Thread.Sleep(500) Shell(“C:\OpenSSL-Win32\bin\openssl.exe x509 -inform DER -outform PEM -in C:\SARv3.1J\ELE\jsi060303ua9_1010061243s.cer -pubkey -passin pass:chela2009 -out C:\SARV3.1J\ELE\JSI.cer.pem”) System.Threading.Thread.Sleep(500) If ANIO 0 Then W.WriteStartElement(“Impuestos”) W.WriteAttributeString(“totalImpuestosTrasladados” , Trim(Str(ImpIva))) W.WriteStartElement(“Traslados”) W.WriteStartElement(“Traslado”) W.WriteAttributeString(“impuesto”, “IVA”) W.WriteAttributeString(“tasa”, Trim(Str((IIva * 100)))) W.WriteAttributeString(“importe”, Trim(Str(ImpIva))) W.WriteEndElement() ‘finaliza traslado W.WriteFullEndElement() ‘finaliza traslados W.WriteFullEndElement() ‘finaliza impuestos End If W.WriteStartElement(“Impresion”) W.WriteAttributeString(“CadenaOriginal”, Cadena) W.WriteFullEndElement() ‘………………………………… W.WriteFullEndElement() ‘finaliza comprobante W.WriteEndDocument() ‘finaliza documento W.Flush() W.Close() obviamente yo uso mi base de datos, espero entiendan el código y lo adapten al suyo. |
| |||
Respuesta: Facturas Digitales SAT - Mexico C# Que tal grupo, como les va ? ya tenia mucho que no entraba pero me gustaria saber si alguien ya sustituyo el metodo MD5 por SHA-1 en C# . Gracias a todos y seguimos en contacto. Saludos. |
| |||
Respuesta: Facturas Digitales SAT - Mexico C# Revisa esta clase [URL="http://msdn.microsoft.com/es-es/library/system.security.cryptography.sha1cryptoserviceprov ider%28VS.80%29.aspx"]SHA1CryptoServiceProvider[/URL] |
| |||
Respuesta: Facturas Digitales SAT - Mexico C# Hola a todos, hace poco empece con esto de la facturacion electronica, y gracias a todos sus aportes, rapidamente he conseguido generar un sello valido en C# Me gustaria que me asesoraran en que pasos siguen, por el momento estoy abordando los siguientes: 1. Crear xml de la factura con sello digital 2. Reporte mensual 3. Pdf para mostrar la factura (todavia investigando) pero no se que mas sigue :( Agradeceria mucho tips, que es eso de la norma para respaldarlas, que otros procesos hay, consideraciones... casi no quiero nada jeje y de verdad muchas gracias a todos |
| |||
Respuesta: Facturas Digitales SAT - Mexico C# A mi tambien me esta funcionando el código que mencionas, pero ahora ocupo el 'validador' o sea leer del XML el certificado, leer el sello digital y leer la cadena y validar con esos tres datos, he podido leer los datos pero la funcion en c# rsa.VerifyData(); no me funciona, te anexo el codigo para que le eches un ojo, en teoria deberia de funcionar: public string ValidaSelloDigital2(string selloDigital, string cert, string cadena) { try { byte[] sello_byte = Convert.FromBase64String( selloDigital); byte[] cert_byte = Convert.FromBase64String( cert); X509Certificate2 certificado = new X509Certificate2( cert_byte); //initialze the byte arrays to the public key information. byte[] pk = certificado.GetPublicKey(); //Create a new instance of RSACryptoServiceProvider. RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); rsa.PersistKeyInCsp = false; //Get an instance of RSAParameters from ExportParameters function. RSAParameters RSAKeyInfo = rsa.ExportParameters(false); //Set RSAKeyInfo to the public key values. RSAKeyInfo.Modulus = pk; //Import key parameters into RSA. rsa.ImportParameters(RSAKeyInfo); byte[] cadena_byte = System.Text.Encoding.UTF8.GetBytes(cadena); System.Security.Cryptography.SHA1CryptoServiceProv ider x = new System.Security.Cryptography.SHA1CryptoServiceProv ider(); byte[] data = x.ComputeHash(cadena_byte); System.Security.Cryptography.MD5CryptoServiceProvi der x2 = new System.Security.Cryptography.MD5CryptoServiceProvi der(); byte[] data2 = x2.ComputeHash(cadena_byte); bool result = rsa.VerifyHash(data2, CryptoConfig.MapNameToOID("MD5"), sello_byte); bool result2 = rsa.VerifyHash(data, CryptoConfig.MapNameToOID("SHA1"), sello_byte); string ret = "Sello inválido."; if (result) { ret = "Sello válido con digestion MD5 " + hash_md5(cadena); } else { if (result2) { ret = "Sello válido con digestion SHA1 " + hash_sha1(cadena); } } return ret; } catch (Exception ex) { return "Error al desencriptar el sello digital " + ex.ToString(); } } Cita:
Iniciado por javalos532 Hola a todos, alguien ya tiene este codigo en C#.... con VB me sale perfecto el sello pero en C# no me da igual ...ese es el codigo que estoy utilizando... X509Certificate2 _MiCertificado = new X509Certificate2(@"....cert.p12", "12345"); RSACryptoServiceProvider RSA = (RSACryptoServiceProvider)_MiCertificado.PrivateKe y; MD5 hasher = MD5CryptoServiceProvider.Create(); byte[] bytesFirmados = RSA.SignData(System.Text.Encoding.UTF8.GetBytes(pD ato), hasher); return Convert.ToBase64String(bytesFirmados); Gracias. Última edición por danfred; 25/02/2011 a las 13:02 |
| |||
Respuesta: Facturas Digitales SAT - Mexico C# hola a todos, que datos proporciona el sat, tengo entendido que nos da un archivo .cer y uno .key... pero como obtengo los datos para mi factura, es decir, el folio, año de aprobacion, numero de aprobacion, numero de certificado, el certificado pues es el .cer, por ese no hay problema... ojala y no sea muy tonta mi pregunta saludos a todos |
| ||||
Respuesta: Facturas Digitales SAT - Mexico C# Cita: ya pudiste hacer el sha1 con openssl? me urge terminar esto y el validador del SAT me dice que el sello es invalido, lo estoy haciendo primero con la digestion MD5 si pudieses orientarme te lo agradeceria
Iniciado por J_L_A Buen dia a todos los visitantes del foro. Les doy otra liga para ver la última versión de "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." en formato doc. http://www.sat.gob.mx/sitio_internet/informacion_fiscal/legislacion/52_18801.html A primera vista hay un cambio importante para quienes están en la etapa de generar el sello digital, ahora en lugar de utilizar digestión MD5, el SAT pide que se utilice SHA-1. Aun falta saber cuando entrarán en operación los nuevos cambios pero conviene estar enterados. A la orden si es que les puedo ayudar en algo. Estoy usando c sharp con openssl y ya logré pasar todas casi todas las etapas (obviamente exceptuando las últimas novedades). Estoy en la parte de los complementos y addendas aunque creo que no me van a ser necesarias. Saludos! |
| ||||
Respuesta: Facturas Digitales SAT - Mexico C# Cita: buen dia pues mira si estas desarrollando para un cliente el sat tubo que haberte dado ademas del .key y el .cer un documento con los folios una cadena original con los datos fiscales del emisor y en esa viene el año de aprobacion y los folios el numero de certificado es el numero del archivo .cer espero haberte podido aclarar un poco
Iniciado por gerloxxx hola a todos, que datos proporciona el sat, tengo entendido que nos da un archivo .cer y uno .key... pero como obtengo los datos para mi factura, es decir, el folio, año de aprobacion, numero de aprobacion, numero de certificado, el certificado pues es el .cer, por ese no hay problema... ojala y no sea muy tonta mi pregunta saludos a todos |
| |||
Respuesta: Facturas Digitales SAT - Mexico C# Hola a todos: Me gustaria saber como generar la factura y el sello digital en ASP con VB6, lo que pasa es que en la empresa donde trabajo ya tienen desarrollado un sistema web en esa plataforma y quieren agregarle el modulo de facturación electronica y la verdad no tengo ni idea de si se puede hacer en VB6 y ASP. Agradecere mucho si alguien me sugiere algo o tiene algun tutorial. |
| |||
Respuesta: Facturas Digitales SAT - Mexico C# Hola, necesito hacer la cancelacion en c#, actualmente utilizo openssl para hacerla mediante codigo, pero no quiero instalar openssl, existe alguna forma de ejecutar los siguientes comandos openssl traducidos a c# pkcs8 -inform DER -in “key.key” -passin pass:pwd -out “key.pem” pkcs12 -export -out “cer.pfx” -inkey “key.pem” -in “cer.pem” -passout pass:pwd base64 -in “cer.pfx” -out “cer.pem” gracias! |
| |||
Respuesta: Facturas Digitales SAT - Mexico C# Hola, si lo que quieres es acceder al .key a traves de codigo, e incluso generar el sello digital puedes hacerlo con opensslkey.cs buscalo en google, es codigo C# puro, solo debes incorporarlo en tu proyecto .net, no necesita openssl y tampoco convertir tu .key a otro formato |
| |||
Respuesta: Facturas Digitales SAT - Mexico C# hola wwwmaster, lo que estoy tratanto de generar es un pfx que me pide el pac para la cancelacion, actualmente lo genero con los comandos openssl que adjunte, pero no quiero depender del programa, ya cheque el cs que me recomendaste pero sinceramente no le hallo aun, no tendras algun codigo de ejemplo mas aplicado. Gracias! |
Etiquetas: |