21/09/2010, 15:43
|
| | Fecha de Ingreso: septiembre-2010
Mensajes: 18
Antigüedad: 14 años, 2 meses Puntos: 0 | |
Respuesta: Factura electroncia sat mexico hola a todos, durante mi desarrollo surgieron algunas dudas, espero me puedan ayudar a solventarlas. Les comento que investigando (claro copiando y adecuando) pues realize algo de codigo y despues genero el xml, al final este archivo lo valido en:
https://www.consulta.sat.gob.mx/SICOFI_WEB/ModuloECFD_Plus/ValidadorComprobantes/Validador.html
a lo cual me dio el siguiente resultado
Realizando validación del sello con un certificado externo
Certificado usado : 30001000000100000800
Certificado reportado : 30001000000100000800
Cadena original:
||2.0|ABCD|1|21/09/2010 03:53:35 p.m.|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||
Digestión MD5 de cadena como HEX:
59f9ed7dabcaa34af4ab71f3bcd912be
El sello del comprobante no es válido
a continuacion les comparto mi codigo espero les sea util:
string strCadenaOriginal;
string ArchivoCertificado=@"C:\Documents and Settings\Administrador\Mis documentos\VS.NET\FacturacionElectronica.Net\Docs\ Cer_Sellos\aaa010101aaa_CSD_01.cer";
string key =@"C:\Documents and Settings\Administrador\Mis documentos\VS.NET\FacturacionElectronica.Net\Docs\ Cer_Sellos\aaa010101aaa_CSD_01.key";
string lPassword = @"a0123456789";
string Digestion = "";
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||";
Digestion = clsSeguridad.CodificarMD5(strCadenaOriginal);
SecureString lSecStr = new SecureString();
lSecStr.Clear();
foreach (char c in lPassword.ToCharArray())
lSecStr.AppendChar(c);
Byte[] pLlavePrivadaenBytes = System.IO.File.ReadAllBytes(key);
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);
X509Certificate2 certificado = new X509Certificate2(ArchivoCertificado);
String NoCertificado = HexToString(certificado.SerialNumber);
aqui les dejo una clase q utilize
este lo anexo en otro post
y bueno tengo tmb una dll q uso para generar el xml.
al ejecutar el primer bloque de codigo, obtengo los siguientes valores:
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||
Digestion
8aa2b617944427353697e694a2e35a07
Sello Digital
rG0BQfxSxoQ2e+DMwUjTtE1UFy4kWdWDLEwsxyalDMbGyAJLv+ NjwgC6BIuv27zcope60sldP2cO77UUtbPc1DhKB6K/ySN4ton+5ZLQELp5huWAGl3wqGPyHZ/fds6XwcIrn2pSYOX/JHhUCoz7aBsn0bfsewP8OEq8Hwo7Wgs=
No Certificado
30001000000100000800
despues de obtener los valores genero el siguiente xml:
<?xml version="1.0" encoding="utf-8" ?>
- <Comprobante serie="ABCD" version="2.0" folio="1" fecha="21/09/2010 03:53:35 p.m." sello="rG0BQfxSxoQ2e+DMwUjTtE1UFy4kWdWDLEwsxyalDMb GyAJLv+NjwgC6BIuv27zcope60sldP2cO77UUtbPc1DhKB6K/ySN4ton+5ZLQELp5huWAGl3wqGPyHZ/fds6XwcIrn2pSYOX/JHhUCoz7aBsn0bfsewP8OEq8Hwo7Wgs=" 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>
</Comprobante>
ahora despues de mostrar lo que hice las dudas son las siguientes:
1. por que el sat me dice q es invalido.
2. se supone que el archivo .cer lo debo de procesar para efectos de la digestion, pero en mi codigo solo tengo la ruta de este, y nunca lo utilizo para esta operacion, unicamente utilizo el .key... es acaso que esta mal mi proceso?
3. mi cadena original la genero a partir de los datos fiscales del emisor y el receptor, anexando a esto el detalle de mi factura. entonces se supone que la digestion sale a partir de mi cadena original, es decir, que si a mi cadena original le agrego n cantidad de detalle (productos) mi digestion deberia de ser diferente y a consecuencia de esto mi sello digital tmb va a variar no?, comento esto por que si no me equivoco en algunos post he visto que hay quienes tratan de llegar al mismo sello digital a pesar de que su cadena original es diferente.
4. ahora se supone que el contribuyente debe de solicitar sus folios y series, a manera de que cada ves que facture, mis facturas esten relacionadas con estos folios, yo pensaba en almacenar estos folios y series en una bd, pero para saber si mis folios son autorizados que se supone que debo de esperar por parte del sat: 1. un correo de aprobacion 2. un archivo con los folios??
5. es cierto que debo de validar la informacion fiscal de mis clientes??
6. para efectos del reporte mensual es practicamente un archivo de texto en donde cada renglon va a contener informacion de cada factura (100 filas=100 facturas), este archivo se manda por correo al sat y despues el sat me responde con un email de recepcion, es correcto¿??
bien estas son mis dudas, espero haya podido ser claro y pues tmb haber podido colaborar con mi codigo.
si algo se me olvido por favor recuerdenme que me falto en el proceso de la facturacion, y de antemano gracias por sus aportes.
saludos y gracias. |