Foros del Web » Programando para Internet » PHP »

Facturacion electronica en México

Estas en el tema de Facturacion electronica en México en el foro de PHP en Foros del Web. Cita: Iniciado por Edg_LB Hoola colegas, buena tarde, y Feliz Año. Aqui nuevamente, quisera saber si alguien sabe como se le hace para que mis ...

  #61 (permalink)  
Antiguo 14/01/2010, 11:31
 
Fecha de Ingreso: diciembre-2009
Mensajes: 9
Antigüedad: 15 años
Puntos: 0
Respuesta: Facturacion electronica en México

Cita:
Iniciado por Edg_LB Ver Mensaje
Hoola colegas, buena tarde, y Feliz Año.

Aqui nuevamente, quisera saber si alguien sabe como se le hace para que mis facturas, se las envie al SAT y me las valide, me comentaron de una certificacion, pero no se que onda con eso, espero sus respuestas. Gracias
Hola Edg_LB:

Toda la informacion necesaria para el reporte mensual esta aqui [URL="http://www.sat.gob.mx/sitio_internet/e_sat/comprobantes_fiscales/15_6534.html"]http://www.sat.gob.mx/sitio_internet/e_sat/comprobantes_fiscales/15_6534.html[/URL]

Cuando tengas lista la informacion mensual aqui te indican como enviarla [URL="http://www.sat.gob.mx/sitio_internet/informacion_fiscal/tramites_fiscales/registro_t/101_11761.html"]http://www.sat.gob.mx/sitio_internet/informacion_fiscal/tramites_fiscales/registro_t/101_11761.html[/URL]

Saludos
  #62 (permalink)  
Antiguo 08/02/2010, 22:00
 
Fecha de Ingreso: febrero-2010
Mensajes: 4
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Facturacion electronica en México

Buena noches,

Antes que nada gracias a todos los colaboradores por aportar sus conocimientos y buena disposición a la comunidad.

Empiezo con mi pregunta, esto de la facturación electrónica es un rollo. En base a los post de este sección he construido algo pero tengo algunas dudas:

Ya obtuve mis claves a través de

C:\OpenSSL\bin\openssl.exe pkcs8 -inform DER -in C:\OpenSSL\Keys\aaa010101aaa_CSD_01.key -passin pass:a0123456789 -out C:\OpenSSL\Keys\aaa010101aaa.key.pem

C:\OpenSSL\bin\openssl.exe x509 -inform DER -outform PEM -in C:\OpenSSL\Keys\aaa010101aaa_CSD_01.cer -pubkey -out C:\OpenSSL\Keys\aaa010101aaa.cer.pem

Ya aplique el algoritmo MD5 a la cadena original que presenta el SAT .

Genere el sello digital con mis claves obtenidas en el punto uno

StreamReader readFile = new StreamReader(@"H:\Proyectos\Facturacion_electronic a\sello_digital\aaa010101aaa.key.pem");
//StreamReader readFile = new StreamReader(PublicKey);
PemReader Ocert = new PemReader(readFile);

//Dim o As AsymmetricCipherKeyPair = TryCast(Ocert.ReadObject(), AsymmetricCipherKeyPair)
AsymmetricCipherKeyPair o = Ocert.ReadObject() as AsymmetricCipherKeyPair;
ISigner sig = SignerUtilities.GetSigner("MD5WithRSAEncryption");
//sig.Init(True, o.[Private])
sig.Init(true, o.Private);
byte[] signature = sig.GenerateSignature();
string signatureHeader = Convert.ToBase64String(signature);

readFile.Close();
readFile = null;

El certificado
//*****************************certificado
//Read Public Key
TextReader trCer = new StreamReader(PublicKey);
PemReader rdCer = new PemReader(trCer);
X509Certificate Cert = (X509Certificate)rdCer.ReadObject();

Org.BouncyCastle.Crypto.AsymmetricKeyParameter pk = Cert.GetPublicKey();
//AsymmetricKeyParameter pk = Cert.GetPublicKey();
byte[] nSerie = Cert.SerialNumber.ToByteArray();
string nCertificado = Encoding.ASCII.GetString(nSerie);

Mi duda es, cómo relaciono la cadena obtenida de la aplicación del algoritmo MD5, el certificado o el sello.
En los requirimientos de hacienda dice que a la cadena obbtenida aplico el algoritmo RSA, con el sello y la clave privada, como junto estos procesos y luego convertirlo a base 64.

Por su ayuda muchas gracias!
  #63 (permalink)  
Antiguo 11/02/2010, 08:41
 
Fecha de Ingreso: diciembre-2009
Mensajes: 9
Antigüedad: 15 años
Puntos: 0
Respuesta: Facturacion electronica en México

Hola que tal.

De hecho, en el codigo que muestras ya estas aplicando esos requerimientos.

Saludos.
  #64 (permalink)  
Antiguo 12/02/2010, 12:57
 
Fecha de Ingreso: febrero-2010
Mensajes: 4
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Facturacion electronica en México

Gracias por la respuesta,

Lo que no veo es donde incluyo mi cadena original aplicado ya el MD5, acaso tengo que hacerlo a través de openssl?

openssl dgst -md5 -sign pkey.key.pem -out md5.txt utf8.txt

De antemano muchas gracias!
  #65 (permalink)  
Antiguo 12/02/2010, 13:30
 
Fecha de Ingreso: diciembre-2009
Mensajes: 9
Antigüedad: 15 años
Puntos: 0
Respuesta: Facturacion electronica en México

ok, osease que te falta

Dim plaintext As [Byte]() = ASCII.GetBytes(CadenaOriginal) ' Es una propiedad de la clase.
.
.
.
sig.Init(True, o.Private)
sig.BlockUpdate(plaintext, 0, plaintext.Length)
  #66 (permalink)  
Antiguo 12/02/2010, 13:54
 
Fecha de Ingreso: febrero-2010
Mensajes: 4
Antigüedad: 14 años, 10 meses
Puntos: 0
De acuerdo Respuesta: Facturacion electronica en México

Muchas gracias!
  #67 (permalink)  
Antiguo 11/03/2010, 14:27
 
Fecha de Ingreso: marzo-2010
Mensajes: 2
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Facturacion electronica en México

Hola,
Les agradezco a todos sus aportaciones. Estoy por finalizar el proceso para generar CFDs, utilizando openssl.

El unico problema que tengo es que al validar mi xml en la pagina del SAT me dice que "El sello del comprobante no es válido".

¿ Alguien tiene un ejemplo completo que cumpla con el anexo 20 version 2.0 y que sea aceptado por el validador de la pagina del SAT para poder encontrar el error ?

Para poder hacer la revision paso a paso necesito :
Archivo de Llave Privada de muestra (.key)
Archivo de Llave Publica de muestra (.cer)
Cadena Original armada de acuerdo con el anexo 20 version 2.0
MD5 obtenido
Sello obtenido
Serie de llave Publica obtenido

Gracias.
  #68 (permalink)  
Antiguo 11/03/2010, 14:39
 
Fecha de Ingreso: marzo-2010
Mensajes: 2
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Facturacion electronica en México

Hola,
Les agradezco a todos sus aportaciones. Estoy por finalizar el proceso para generar CFDs, utilizando openssl.

El unico problema que tengo es que al validar mi xml en la pagina del SAT me dice que "El sello del comprobante no es válido".

¿ Alguien tiene un ejemplo completo que cumpla con el anexo 20 version 2.0 y que sea aceptado por el validador de la pagina del SAT para poder encontrar el error ?

Para poder hacer la revision paso a paso necesito :
Archivo de Llave Privada de muestra (.key)
Archivo de Llave Publica de muestra (.cer)
Cadena Original armada de acuerdo con el anexo 20 version 2.0
MD5 obtenido
Sello obtenido
Serie de llave Publica obtenido

Gracias.
  #69 (permalink)  
Antiguo 17/03/2010, 09:09
 
Fecha de Ingreso: marzo-2010
Mensajes: 2
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Facturacion electronica en México

buen día...

ya pude generar el MD5 y el sello.... además de extrael el no. de folio del certificado para ingresarlo al .xls.. pero aún así el validador del SAT me dice que el sello no es válido...

les copio el .xml para ver si tienen algún comentario al respecto... será que hay algo mal con el validador del SAT o con el ejemplo que proporciona SAT de Muestra.xml??

Gracias por sus comentarios.


Saludos!!

P.D. Utilicé el ejemplo Muestra.xml con la cadena original y el certificado 2 proporcionado por el SAT.

<?xml version="1.0" encoding="UTF-8"?>
<Comprobante fecha="2005-09-02T16:30:00" folio="1" noAprobacion="1" noCertificado="10001200000000022515" sello="GEyGSaq21uiMk3sEJmsiLA22SLKeAtwl3rJ+jO8XB5G 8aoMgqgWwW10Hg8Rc/TDFcyRsloC32OBNV7lrQQ4DiLopu4XEYQ5ye+UvJAx3TzXyBa0 ZpjM4yzg5S2PO09nviv4Z4C2ByQQEiqmu1Z3ZzOAYffay+6/fBU2/Alb2bpE=" serie="A" version="1.0">
<Emisor nombre="Industrias del Sur Poniente, S.A. de C.V." rfc="ISP900909Q88">
<DomicilioFiscal calle="Alvaro Obregón" codigoPostal="06700" colonia="Col. Roma Norte" estado="Distrito Federal" localidad="México" municipio="Cuauhtémoc" noExterior="37" noInterior="3" pais="México"/>
<ExpedidoEn calle="Pino Suarez" codigoPostal="95460" colonia="Centro" estado="Nuevo Léon" localidad="Monterrey" municipio="Monterrey" noExterior="23" pais="México"/>
</Emisor>
<Receptor nombre="Rosa MarÃ*a Calderón Uriegas" rfc="CAUR390312S87">
<Domicilio calle="Topochico" codigoPostal="95465" colonia="Jardines del Valle" estado="Nuevo León" localidad="Monterrey" municipio="Monterrey" noExterior="52" pais="México"/>
</Receptor>
<Conceptos>
<Concepto cantidad="10" descripcion="Vasos decorados" importe="200" unidad="Caja" valorUnitario="20"/>
<Concepto cantidad="1" descripcion="Charola metálica" importe="150" unidad="pieza" valorUnitario="150"/>
</Conceptos>
<Impuestos>
<Traslados>
<Traslado importe="52.5" impuesto="IVA"/>
</Traslados>
</Impuestos>
</Comprobante>
  #70 (permalink)  
Antiguo 17/03/2010, 19:44
 
Fecha de Ingreso: marzo-2010
Mensajes: 2
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Facturacion electronica en México

phpnewbie.... obtengo el mismo resultado que tú.. ya pudiste encontrar cuál es la razón por la cual el validador de sat no acepta el sello?


Gracias y saludos!
  #71 (permalink)  
Antiguo 25/03/2010, 17:17
 
Fecha de Ingreso: marzo-2010
Mensajes: 10
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Facturacion electronica en México

Cita:
Iniciado por Interruptor Ver Mensaje
Muchisimas gracias a los camaradas dumysoft y Edg_LB por su aclaración a mis dudas, a través del tiempo en esto del desarrollo me he dado cuenta que esto es como el karma cuando uno se detiene unos minutos en apoyar las dudas que otros compañeros tienen y por las cuales ya hemos pasado, esta acción siempre es revertida. Asi que muchas gracias.

En efecto como bien lo dices Edg_LB el grabar la cadena desde el archivo de texto como UTF-8 lo graba con ciertas marcas que contaminan el resumen en MD5. Sucede que estoy haciendo una aplicación de facturación electronica en visual Fox 9 de forma que intentaba el enconding del archivo por fuera, pero al darme cuenta de que no me daba por la razón explicada, busque una función en el mismo fox para convertir al formato correcto además de que buscando por ahi encontré una clase que realiza el digest desde fox sin necesidad de utilizar el openssl (por cierto esta clase quedá a disposición para quien se encuentre en la misma situación que yo y desee hacerlo de VFox). Aunque finalmente debo recurrir a openssl mediante un comando externo para realizar el sellado y lo demás, estoy ahora en esto y veremos como nos va.

Un saludo a toda la comunidad y gracias de nuevo camaradas.
Hola
¿que tal te fue con la facturacion electronica desde VFP?, estoy iniciando en esto y quisiera saber si no es tan complicado con FOX por que veo que la mayoría de la gente se esta llendo por PHP, C# o Java

saludos
  #72 (permalink)  
Antiguo 30/03/2010, 22:52
 
Fecha de Ingreso: marzo-2010
Mensajes: 4
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Facturacion electronica en México

Cita:
Iniciado por JorgeCasas Ver Mensaje
Hola
¿que tal te fue con la facturacion electronica desde VFP?, estoy iniciando en esto y quisiera saber si no es tan complicado con FOX por que veo que la mayoría de la gente se esta llendo por PHP, C# o Java

saludos
Con Fox.

Existe un API llamado FirmaSat. (Con Costo).
http://www.cryptosys.net/fsa/

ejemp. (Mandar la cadena original a un archivo de texto)

RUN /N C:\FS\FirmaSAT PIPESTRING FacyuraEl_01.xml > CadenaOriginal.txt

(Clear el sello)

RUN /N C:\FS\FirmaSAT \FirmaSAT MAKESIG -k aaa010101aaa_csd_01.key -p a0123456789 FacyuraEl_01.xml



y tambien se puede usar OpenSSS(Gratis ???)

RUN /N C:\SSL\OpenSsl dgst -MD5 cadenaOriginal.txt > Md5Reult

Saludos.
  #73 (permalink)  
Antiguo 31/03/2010, 19:22
 
Fecha de Ingreso: marzo-2010
Mensajes: 10
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Facturacion electronica en México

Cita:
Iniciado por hcchavez Ver Mensaje
Con Fox.

Existe un API llamado FirmaSat. (Con Costo).
http://www.cryptosys.net/fsa/

ejemp. (Mandar la cadena original a un archivo de texto)

RUN /N C:\FS\FirmaSAT PIPESTRING FacyuraEl_01.xml > CadenaOriginal.txt

(Clear el sello)

RUN /N C:\FS\FirmaSAT \FirmaSAT MAKESIG -k aaa010101aaa_csd_01.key -p a0123456789 FacyuraEl_01.xml



y tambien se puede usar OpenSSS(Gratis ???)

RUN /N C:\SSL\OpenSsl dgst -MD5 cadenaOriginal.txt > Md5Reult

Saludos.
Muchas Gracias por tu respuesta, ya tenia visualizado un ActiveX que hace esto pero me mandaron por la "LIBRE" (OpenSSL), con los post de este foro he avanzado algo pero no he terminado por falta de tiempo.

Saludos
  #74 (permalink)  
Antiguo 31/03/2010, 20:17
 
Fecha de Ingreso: marzo-2010
Mensajes: 4
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Facturacion electronica en México

Cita:
Iniciado por JorgeCasas Ver Mensaje
Muchas Gracias por tu respuesta, ya tenia visualizado un ActiveX que hace esto pero me mandaron por la "LIBRE" (OpenSSL), con los post de este foro he avanzado algo pero no he terminado por falta de tiempo.

Saludos
Puedo comentar que con OpenSsl estoy teniendo problemas con la
"digestion MD5" de la cadenaOriginal, no da el mismo resultado que el
validador de SAT. Sera que ellos usan Linux(Unix) ?.

Que lioooooooo.

Saludos y Suerte.

P. D.
Con FirmaSat todo de maravilla.
  #75 (permalink)  
Antiguo 01/04/2010, 21:27
 
Fecha de Ingreso: abril-2010
Mensajes: 2
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Facturacion electronica en México

Para los que ya pudieron generar el Sello pero aparentemente no esta correcto:

ES MUUUUY IMPORTANTE que al generar el archivo, cadena, etc que almacena la Cadena Original, esta NO TENGA NINGUN caracter extraño.

A mi me estaba pasando que al final de mi archivo binario mi rutina le estaba agregando un CR+LF (o sea un caracter #13 + #10), que ES INVISIBLE, pero esta ahi!!!

Tampoco debe tener Tabuladores (caracter #8) ni doble espacio, ni "espacio + pipe" ni "pipe + espacio"

es decir, lo siguiente es una PESIMA cadena original

||2.0| aqui hay un espacio de mas |Mi empresa| aqui hay dos espacios juntos|
aqui (implicitamente) hay un retorno de carro CR+LF|y debe terminar con doble pipe||

Les recomiendo que revisen el tamaño de su variable, archivo o en general del "contenedor" de su cadena, que esta termine EXACTAMENTE en un "doble pipe" (esto es en "||")

En lenguaje "C" asegurense que esta termine en NULL

Los archivos NO DEBEN tener el caracter EOF (End Of File, o CTRL-Z)

Aqui les dejo una liga donde explico como resolvi esto en Delphi

www.clubdelphi.com/foros/showthread.php?p=359037

Saludos,

Última edición por uamero; 01/04/2010 a las 21:39
  #76 (permalink)  
Antiguo 05/04/2010, 11:57
 
Fecha de Ingreso: marzo-2010
Mensajes: 4
Antigüedad: 14 años, 8 meses
Puntos: 0
De acuerdo Respuesta: Facturacion electronica en México

Cita:
Iniciado por uamero Ver Mensaje
Para los que ya pudieron generar el Sello pero aparentemente no esta correcto:

ES MUUUUY IMPORTANTE que al generar el archivo, cadena, etc que almacena la Cadena Original, esta NO TENGA NINGUN caracter extraño.

A mi me estaba pasando que al final de mi archivo binario mi rutina le estaba agregando un CR+LF (o sea un caracter #13 + #10), que ES INVISIBLE, pero esta ahi!!!

Tampoco debe tener Tabuladores (caracter #8) ni doble espacio, ni "espacio + pipe" ni "pipe + espacio"

es decir, lo siguiente es una PESIMA cadena original

||2.0| aqui hay un espacio de mas |Mi empresa| aqui hay dos espacios juntos|
aqui (implicitamente) hay un retorno de carro CR+LF|y debe terminar con doble pipe||

Les recomiendo que revisen el tamaño de su variable, archivo o en general del "contenedor" de su cadena, que esta termine EXACTAMENTE en un "doble pipe" (esto es en "||")

En lenguaje "C" asegurense que esta termine en NULL

Los archivos NO DEBEN tener el caracter EOF (End Of File, o CTRL-Z)

Aqui les dejo una liga donde explico como resolvi esto en Delphi

www.clubdelphi.com/foros/showthread.php?p=359037

Saludos,
Excelente aportación, Gracias.
Mi problema era que la cadena se guardaba con EOF (End Of File, o CTRL-Z).

Saludos.
  #77 (permalink)  
Antiguo 06/04/2010, 11:49
 
Fecha de Ingreso: abril-2010
Mensajes: 1
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Facturacion electronica en México

Que tal phpnewbie necesito de tu ayuda para lo de la facturación electrónica, tengo el mismo caso que se te presentó acerca del sello digital no válido pero ya igualo la cadena que me da el validador.

sALUDOS.
  #78 (permalink)  
Antiguo 06/04/2010, 16:29
 
Fecha de Ingreso: marzo-2010
Mensajes: 10
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Facturacion electronica en México

Cita:
Iniciado por hcchavez Ver Mensaje
Puedo comentar que con OpenSsl estoy teniendo problemas con la
"digestion MD5" de la cadenaOriginal, no da el mismo resultado que el
validador de SAT. Sera que ellos usan Linux(Unix) ?.

Que lioooooooo.

Saludos y Suerte.

P. D.
Con FirmaSat todo de maravilla.
con el siguiente codigo desde VFP la digestion me sale tal cual la del SAT, obviamente bajo windows, bajo linux me da el mismo resultado si genero el archivo de texto con la cadena original desde fox y corriendo el openssl en Linux

TEXT TO cadenao noshow
||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||
ENDTEXT
cadenao=ALLTRIM(cadenao)
cadena2=Strconv(cadenao, 9)
arch_des = Fcreate('md5.txt')
=Fwrite(arch_des ,cadena2)
=Fclose(arch_des)
!c:\openssl\bin\openssl dgst -md5 md5.txt >md51.txt

saludos
  #79 (permalink)  
Antiguo 07/04/2010, 16:16
 
Fecha de Ingreso: marzo-2010
Mensajes: 4
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Facturacion electronica en México

Cita:
Iniciado por JorgeCasas Ver Mensaje
con el siguiente codigo desde VFP la digestion me sale tal cual la del SAT, obviamente bajo windows, bajo linux me da el mismo resultado si genero el archivo de texto con la cadena original desde fox y corriendo el openssl en Linux

TEXT TO cadenao noshow
||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||
ENDTEXT
cadenao=ALLTRIM(cadenao)
cadena2=Strconv(cadenao, 9)
arch_des = Fcreate('md5.txt')
=Fwrite(arch_des ,cadena2)
=Fclose(arch_des)
!c:\openssl\bin\openssl dgst -md5 md5.txt >md51.txt

saludos
Ok,
Ya logre pasar ese paso.

Ahora el problema es que el sello me lo marca como no valido :

run c:\OpenSSL\Bin\openssl dgst -sign abcd123456xxx_9999999999.key.pem md5Result.txt | c:\OpenSSL\Bin\openssl enc -base64 -A > SelloBase64.txt

Me genera esto : (No Pasa la validación)

cOc86p97x5/cnu6ZbGTmh7dPHDQyepA/aYqN670Eu6WuyxXPhGnMkSsxD23vAkyxwKkCNX7CJuSP7yOvRM bxKwxz19Yql8Ry1yeMHiseg5vOF501QGlfdcLWvhVLaMjBjfqY DS6ckd8/SCHVOr2ySc+9MCLc62pho1RoLowlDoQ=

y con la lbreria de firmaSat me
genera esto : (Si pasa la validación)

dnm+G0ttduIe389g/K4HJbzlsdGTeJdUsGYd+Lot5ycgr6BJeu4Ewqi/gx5F9asd6BOd8R4oFnd5NOigYPKiAcby7AGe9QvWWKkPtW62Es XHqOcO8+P3JF8C5aitox1t/1meNWV1KDnIdGCTn0sFldRS8jjgXday8BdCpZgyFMk=

Los dos generan la misma digestión MD5 (d640bb467225d3e3e784ca14d68f2524)

Saludos y Suerte.
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.
Tema Cerrado

SíEste tema le ha gustado a 6 personas




La zona horaria es GMT -6. Ahora son las 15:49.