Foros del Web » Programando para Internet » ASPX (.net) »

Facturas Digitales SAT - Mexico C#

Estas en el tema de Facturas Digitales SAT - Mexico C# en el foro de ASPX (.net) en Foros del Web. Hola grupo como estan, este tema es para ayudarnos mutuamente a quienes estamos trabajando en el desarrollo que hacienda esta solicitando para la implementacion de ...

  #1 (permalink)  
Antiguo 04/05/2010, 15:42
 
Fecha de Ingreso: mayo-2010
Mensajes: 34
Antigüedad: 9 años, 9 meses
Puntos: 0
Facturas Digitales SAT - Mexico C#

Hola grupo como estan, este tema es para ayudarnos mutuamente a quienes estamos trabajando en el desarrollo que hacienda esta solicitando para la implementacion de las facturas digitales en Mexico a partir del proximo año (ya será obligatorio).

Igual les puedo compartir mis avances y juntos lo terminamos, como ven ? lo estoy desarrollando en c# y utilizando OpenSSL..

Se aceptan sugerencias.

Saludos a todos.
  #2 (permalink)  
Antiguo 05/05/2010, 09:27
 
Fecha de Ingreso: mayo-2010
Mensajes: 34
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: Facturas Digitales SAT - Mexico C#

Por lo pronto les comento que estoy atorado en dos pasos:

Cuando aplico la digestion MD5 no obtengo el valor que deberia ser, a mi me da siempre este valor: ce33abebf7f795780806c97d0e6e2c03
cuando deberia ser: 8aa2b617944427353697e694a2e35a07

y al final de todo mi proceso me genera el sello pero el certificado me da cadena vacia, me imagino que todo se debe al problema de inicio (MD5), pero igual nos vamos por partes.

Alguien ya paso esta parte ?
  #3 (permalink)  
Antiguo 05/05/2010, 14:27
 
Fecha de Ingreso: diciembre-2003
Mensajes: 595
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: Facturas Digitales SAT - Mexico C#

Que es lo que ya tienes echo tu fuente para la factura digital o electronica va a hacer tu B.D o alun XML?
  #4 (permalink)  
Antiguo 05/05/2010, 14:37
 
Fecha de Ingreso: mayo-2010
Mensajes: 34
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: Facturas Digitales SAT - Mexico C#

Estoy tratando de obtener el sello y certificado que deben de llevar las facturas electronicas, hasta ahorita llevo lo siguiente:

1) Se convierten los archivos .key .cer a .pem para su procesamiento.
2) Se genera la cadena original.
3) Se transforma la cadena en formato UTF-8
4) Se aplica digestion MD5.
5) Se genera el sello con el archivo key.pem
6) Se genera el certificado con el archivo cer.pem

El problema lo tengo en los pasos 4 y 6, pero creo que el 6 no me genera informacion debido al problema del paso 4
  #5 (permalink)  
Antiguo 07/05/2010, 12:30
 
Fecha de Ingreso: mayo-2010
Mensajes: 34
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: Facturas Digitales SAT - Mexico C#

Pongo el codigo de los pasos en el que no me da la digetion correcta que el SAT indica.

// Introducimos la cadena original provista por el SAT
string Strcadenaoriginal = "||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||";

// Metemos la cadena a un archivo de texto
System.IO.File.WriteAllText(@"D:\SAT\Files\Out\Fil eOriginal.txt", strcadenaoriginal);

// Transformamos la cadena a UTF8
string contenido;
using (StreamReader sr = new StreamReader(@"D:\SAT\Files\Out\FileOriginal.txt",
Encoding.GetEncoding(1252)))
{
contenido = sr.ReadToEnd();
}
using (StreamWriter sw = new StreamWriter(@"D:\SAT\Files\Out\UTF8.txt", false, Encoding.UTF8))
{
sw.Write(contenido);
}

//Aquí lo que hacemos es escribir un txt (MD5.txt) con la digestión MD5 para usarlo en el sellado
Strcadena = ObtenerMd5(@"D:\SAT\Files\Out\UTF8.txt");


Para la digestion en MD5 utilizo la siguiente instruccion con OpenSSL
D:\OpenSSL\bin\openssl.exe dgst -MD5 D:\SAT\Files\Out\UTF8.txt > D:\SAT\Files\Out\MD5.txt


Pero aqui no llego al resultado del SAT.... a mi me da la siguiente cadena:
ce33abebf7f795780806c97d0e6e2c03 y debe ser:
8aa2b617944427353697e694a2e35a07

Alguna idea de que me puede estar faltando ?

Gracias.
  #6 (permalink)  
Antiguo 09/05/2010, 11:01
 
Fecha de Ingreso: mayo-2010
Mensajes: 4
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: Facturas Digitales SAT - Mexico C#

disculpa javalos532 como solucionaste el problema de la digestion MD5 del archivo de texto de la cadena opriginal , me arroja un resultado pero no el que marca el ejemplo del sat.


agradeceria mucho tu ayuda.
  #7 (permalink)  
Antiguo 09/05/2010, 15:23
 
Fecha de Ingreso: mayo-2010
Mensajes: 34
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: Facturas Digitales SAT - Mexico C#

Que tal Tony, todavia no logro solucionar esto... sigo atorado en la digestion MD5, en algunos foros he leido que puedo ser porque la cadena original no tiene el formato correcto que pide hacienda en el anexo pero ya copie una cadena que en teoria eta correcta y sigo sin poder llegar al valor correcto.

Alguien ya encontre la solucion a esto ?
  #8 (permalink)  
Antiguo 10/05/2010, 22:22
 
Fecha de Ingreso: mayo-2010
Mensajes: 7
Antigüedad: 9 años, 9 meses
Puntos: 0
Sonrisa Respuesta: Facturas Digitales SAT - Mexico C#

Hola buenas noches javalos532.

Ya he logrado hacer los 6 pasos en OpenSSL, estoy en el proceso de cambiarlo a C#
Por lo que veo estas haciendo la conversión de la cadena que va separada por los piper "|" mediante C#, al igual que tu hasta ahora no he sido capaz de realizarlo en C# pero ya lo he logrado de otra forma:

1.- Descargate notepad ++ e instalalo
2.- Copia el texto y pegalo en el notepad++ una vez pegado seleccionalo y te vas al menu Formato y seleccionas Convertir en UTF-8 sin ROM
3.- Guarda el archivo de texto
4.- abres el openssl.exe y con el comando dgst -md5 [nombre del archivo] compruebas que ahora si funcionara.

De esta forma ya he realizado 2 ejemplos y dan correctos.

El problema que presento ahora es que no puedo convertir correctamente la cadena en el formato utf8 en C#.

Espero haber ayudado, saludos

Edit: Ya fui capaz de codificar la cadena original a utf8 y aplicar el md5 hash desde C#

Última edición por Adenial; 10/05/2010 a las 23:19 Razón: Actualización
  #9 (permalink)  
Antiguo 11/05/2010, 09:28
 
Fecha de Ingreso: mayo-2010
Mensajes: 4
Antigüedad: 9 años, 9 meses
Puntos: 0
Sonrisa Respuesta: Facturas Digitales SAT - Mexico C#

Javalos532 ya e comprobado que que si esta bie la instruccio para obtener la digestion MD5 de la cadena original el problema es del archivo del sat .

e comprobado y confirmado que es por el stadar diferente que usa el SAT.
  #10 (permalink)  
Antiguo 11/05/2010, 13:02
 
Fecha de Ingreso: mayo-2010
Mensajes: 34
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: Facturas Digitales SAT - Mexico C#

Que tal Adenial, me puedes ayudar a ver porque no llego al valor que presenta el SAT ? para empezar utilizaste como ejemplo la misma cadena que yo ?

Gracias de antemano.
  #11 (permalink)  
Antiguo 11/05/2010, 13:04
 
Fecha de Ingreso: mayo-2010
Mensajes: 34
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: Facturas Digitales SAT - Mexico C#

Hola Tonny, entonces ya llegaste a la digestion MD5 correcta ? que cadena utilizaste para realizar esta comprobacion ?

Gracias.
  #12 (permalink)  
Antiguo 11/05/2010, 13:34
 
Fecha de Ingreso: mayo-2010
Mensajes: 7
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: Facturas Digitales SAT - Mexico C#

Hola buenas tardes javalos532

Asi es, utilizé la misma cadena que tu que es la siguiente:

||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||

Cuyo md5 es: 8aa2b617944427353697e694a2e35a07

Tambien probe con esta otra cadena:

||2.0|A|1|2009-08-16T16:30:00|1|2009|ingreso|Una sola exhibición|350.00|5.25|397.25|ISP900909Q88|Industr ias 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.00|200|1|pieza|Charola metálica|150.00|150|IVA|15.00|52.50||

Cuyo md5 es: 4cd8ed248d7a02314c50778a37d1522d

Esta segunda cadena pertenece a un ejemplo completo que lo conseguí en la siguiente pagina: http://www.cryptosys.net/pki/Muestra_v2_test-200908.zip

En ese archivo zip viene ya el txt con la cadena en formato utf8, intenta aplicar el hash md5 para ver si esta funcionando el md5.

Pregunta ¿el digest md5 lo estas haciendo desde C# o con OpenSSL?


Saludos.

Última edición por Adenial; 11/05/2010 a las 13:52 Razón: Actualizacion
  #13 (permalink)  
Antiguo 11/05/2010, 14:36
 
Fecha de Ingreso: mayo-2010
Mensajes: 34
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: Facturas Digitales SAT - Mexico C#

Tengo las dos opciones: desde OpenSSL y desde C# pero con ninguna de las dos opciones llego al valor:

8aa2b617944427353697e694a2e35a07


como formateas la cadena utf-8 ? igual aqui puede ser mi problema...
  #14 (permalink)  
Antiguo 11/05/2010, 15:11
 
Fecha de Ingreso: mayo-2010
Mensajes: 7
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: Facturas Digitales SAT - Mexico C#

Guardé la cadena en un archivo txt con el programa notepad ++ convirtiendo el texto en formato utf8 ve mi primer post, en el escribí todos los pasos.

Una vez que tengas el archivo en utf-8 con el openssl aplica el md5, te recomiendo que primero lo hagas con openssl y una vez que tengas el archivo txt que estes seguro que esta en formato utf8 (porque lo comprobaste con el openssl) apliques despues el md5 desde C#.

Me dices si pudiste, si no de alguna forma te hago llegar el archivo en formato utf8 .

Saludos
  #15 (permalink)  
Antiguo 11/05/2010, 23:07
 
Fecha de Ingreso: mayo-2010
Mensajes: 34
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: Facturas Digitales SAT - Mexico C#

Excelente Adenial con el tip que me diste ya pude llegar a la digestion MD5 con OpenSSL ahora solo me queda adaptarlo a C# ya que mediante las rutinas que tengo sigo sin llegar al valor.

Ya lograste obtener el sello y certificado ? yo solo logro obtener el sello, el certificado me genera el txt vacio...
  #16 (permalink)  
Antiguo 12/05/2010, 12:07
 
Fecha de Ingreso: mayo-2010
Mensajes: 16
Antigüedad: 9 años, 9 meses
Puntos: 5
Respuesta: Facturas Digitales SAT - Mexico C#

Que tal eh llegado a la digestion MD5 usando el openSSL en conjunto con vb.net
el error que existe es que cuando la funcion donde guardamos el archivo recibe el parametro de codificar a utf 8 el archivo se guarda como UTF-8 pero al principio del archivo se agrega que la codificacion usada es UTF8 y por eso la digesion con el openSSL no da igual que en el sat intenta guardar el archivo sin darle codificacion y te funcionara.

Dim cadenaoriginal As String = "||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||"


System.IO.File.WriteAllText("C:\cadena.txt", CADENAORIGINAL)

despues aplica la digestion MD5 al archivo cadena.txt y te regresara el resultado.

Nota: No tenemos que darle el formato al archivo porque la instruccion usada ya la guarda en ese formato.

Saludos.

Última edición por thebman; 12/05/2010 a las 15:01
  #17 (permalink)  
Antiguo 12/05/2010, 14:51
 
Fecha de Ingreso: mayo-2010
Mensajes: 7
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: Facturas Digitales SAT - Mexico C#

Hola buenas tardes javalos532.

Ya he logrado obtener el sello y el certificado en OpenSSL, ahorita me encuentro adaptando todo a C#.

Mas tarde cuando este en casa espero poder decirte cuales son las instrucciones para poder generar el certificado en OpenSSL yo tambien tuve ese problema que generaba un txt vacio.

Lo que he hecho hasta ahora en C# es que en un textbox el usuario introduzca la cadena y mediante dos metodos convierto la cadena en formato utf8 y aplico el md5 obteniendo el valor deseado.

En lo que ahorita estoy teniendo problemas es obtener el sello y certificado en C#, me estoy documentando para saber que librerias utilizar.

Saludos, estamos pendientes.

Última edición por Adenial; 12/05/2010 a las 14:58 Razón: Actualizacion
  #18 (permalink)  
Antiguo 12/05/2010, 17:58
 
Fecha de Ingreso: mayo-2010
Mensajes: 16
Antigüedad: 9 años, 9 meses
Puntos: 5
Respuesta: Facturas Digitales SAT - Mexico C#

Que tal pues bien solo para comentarles que voy en la etapa de validacion mi desarrollo esta en vb.net y ya abri un tema con todo lo que llevo hasta ahorita.

Saludos
[URL="http://www.forosdelweb.com/f29/factura-electroncia-sat-mexico-806167/#post3400290"]
FacturaElectronica vb.net[/URL]
  #19 (permalink)  
Antiguo 12/05/2010, 21:29
 
Fecha de Ingreso: mayo-2010
Mensajes: 7
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: Facturas Digitales SAT - Mexico C#

Hola javalos532

Disculpa por tardarme tanto en contestar mira el sellado lo hago de la siguiente manera.

Estoy usando OpenSSL para la version de windows

El sellado lo hago en dos pasos que son los siguientes comandos:

1.- dgst -md5 -sign aaa010101aaa_CSD_01.key.pem -out sellado.txt muestra.txt

2.- enc -base64 -in sellado.txt -out sellado64.txt

Donde:

- aaa01010101aaa_CSD_01.key.pem es la llave .key convertida a .pem con openssl

- sellado.txt es el archivo que se guardará de la digestión de la cadena y de
sellarlo con la llave (si lo llegas abrir veras puros caracteres que parecen ser basura).

- muestra.txt es la cadena original que ya se encuentra en formato utf-8.

- sellado64.txt es el archivo donde se guarda la cadena encriptada en 64bits.

Por ultimo abre el archivo sellado64.txt para que compares el sellado

Nota: El archivos .pem y muestra.txt los tengo en el mismo directorio que el ejecutable openssl.exe y los archivos que genero se guardan en la misma dirección salvo que especifiques algun directorio en el comando.

Preguntas:
¿Ya puedes generar la cadena original en C#?
¿Ya pudiste darle formato a utf-8 en C#?

Saludos, me dices que tal te fue.
  #20 (permalink)  
Antiguo 13/05/2010, 17:31
 
Fecha de Ingreso: mayo-2010
Mensajes: 34
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: Facturas Digitales SAT - Mexico C#

Que tal Adenial, mira lo que he hecho hasta ahorita es que solo guardo la cadena original en un txt y nunca utilizo alguna funcion o libreria para convertir la cadena a utf-8, e inmediatamente despues aplico la digestion MD5 con OpenSSL y da la cadena correcta... hasta este punto todo bien pero ahora quiero utilizar alguna funcion para convertir a MD5 la cadena desde C#..

Gracias al amigo thebman que nos dio este tip.

Saludos.
  #21 (permalink)  
Antiguo 16/05/2010, 06:50
 
Fecha de Ingreso: mayo-2010
Mensajes: 4
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: Facturas Digitales SAT - Mexico C#

Adenial aque te refieres con obtener el certificado.

acaso te te refieres a extraer el contenido del certificado.pem quitandole la primera y ultima linea de -- biegin-- y ---end begin --- es eso.

o hay que hacer algo mas aparte del sello.
  #22 (permalink)  
Antiguo 18/05/2010, 11:18
 
Fecha de Ingreso: mayo-2010
Mensajes: 7
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: Facturas Digitales SAT - Mexico C#

tonny053

Al archivo certificado.pem no le quito nada lo leo tal cual desde C# extrayendo toda su información (aun estoy realizando pruebas) en lo que estoy teniendo problemas es en leer la llave privada (.key.pem) desde C# para poder sellarlo con el hash de la cadena original.


javalos532

Para aplicar el algoritmo MD5 en C# a la cadena original usé dos referencias la de

using System.Security.Cryptography; <- para usar MD5CryptoServiceProvider
y
using System.Text; <- para System.Text.Encoding.UTF8.

Saludos.
  #23 (permalink)  
Antiguo 18/05/2010, 12:34
 
Fecha de Ingreso: mayo-2010
Mensajes: 34
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: Facturas Digitales SAT - Mexico C#

Adenial ya logre llegar a la digestion MD5 desde C# solo me falta generar el sello, nada mas que por cuestion de tiempo no he podido avanzar... pero cualquier duda o avance te lo hago saber.

Gracias.
  #24 (permalink)  
Antiguo 18/05/2010, 12:49
 
Fecha de Ingreso: mayo-2010
Mensajes: 7
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: Facturas Digitales SAT - Mexico C#

Perfecto me parece bien, yo estoy en lo mismo, no he podido leer correctamente la llave privada desde C# espero poder solucionarlo pronto, y de igual forma si logro hacerlo aqui pondré los avances.

Saludos.
  #25 (permalink)  
Antiguo 26/05/2010, 18:02
 
Fecha de Ingreso: mayo-2010
Mensajes: 1
Antigüedad: 9 años, 8 meses
Puntos: 0
Respuesta: Facturas Digitales SAT - Mexico C#

Saludos Adenial.

Lei que ya hiciste los 6 pasos con OpenSSL, me podrias dar las instrucciones de como
Instalo openssl, y las instrucciones que utilizaste para realizar los
6 pasos que menciona Javalos 532.
  #26 (permalink)  
Antiguo 16/06/2010, 15:03
 
Fecha de Ingreso: junio-2010
Mensajes: 2
Antigüedad: 9 años, 8 meses
Puntos: 0
Respuesta: Facturas Digitales SAT - Mexico C#

Gracias a todos por su ayuda, gracias a Dios, ya quedo todo en C#.
  #27 (permalink)  
Antiguo 28/06/2010, 08:34
 
Fecha de Ingreso: junio-2010
Mensajes: 1
Antigüedad: 9 años, 7 meses
Puntos: 0
Respuesta: Facturas Digitales SAT - Mexico C#

Saludos a TODOS.

Me gustaria Saber si alguien ha hecho esto con Bouncy Castle?

Saludos
  #28 (permalink)  
Antiguo 30/06/2010, 15:02
 
Fecha de Ingreso: mayo-2010
Mensajes: 34
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: Facturas Digitales SAT - Mexico C#

Hola a todos, ya tengo el sellado pero alguien tiene los pasos para el certificado con OpenSSL ?

Saludos.
  #29 (permalink)  
Antiguo 30/06/2010, 18:08
 
Fecha de Ingreso: junio-2010
Mensajes: 9
Antigüedad: 9 años, 7 meses
Puntos: 1
Respuesta: Facturas Digitales SAT - Mexico C#

Cita:
Iniciado por ElTajito Ver Mensaje
Gracias a todos por su ayuda, gracias a Dios, ya quedo todo en C#.
Buenas tardes a todos, es la primera vez que entro a este foro, les solicito ayuda para la generacion de sello digital, estoy programando en c#, no me cuadra el ejemplo que publica el SAT con lo que yo estoy generando con el MD5, les agradezco su ayuda.

Saludos.


hlq
  #30 (permalink)  
Antiguo 30/06/2010, 18:14
 
Fecha de Ingreso: junio-2010
Mensajes: 9
Antigüedad: 9 años, 7 meses
Puntos: 1
Respuesta: Facturas Digitales SAT - Mexico C#

Este es el codigo que tengo para encriptar MD5

public static string Codificar(string input)
{
MD5 md5Hasher = MD5.Create();

byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(in put));

StringBuilder sBuilder = new StringBuilder();

for (int i = 0; i < data.Length; i++)
{
sBuilder.Append(data[i].ToString("x2"));
}

return sBuilder.ToString();
}

Etiquetas: digitales, facturas, mexico, sat, aspx
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 5 personas




La zona horaria es GMT -6. Ahora son las 08:29.