Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Factura Electronica México (https://www.clubdelphi.com/foros/showthread.php?t=66807)

nuk3zito 20-04-2010 19:54:34

¿¿¿Osea! Eliminaron los post's del usuario uamero aunque no tuvieran nada que ver con el "incidente" de la acusación que hizo de plagio a Caral??? :eek: :confused:

Pero que falta de... sentido común de parte de quien lo haya hecho!!!

Es cierto que el tipo es un engreído o como lo quieran ver... pero los posteos en este hilo eran de bastante utilidad y a decir verdad, solo él ha aportado algo útil en este tema de la facturación digital.

Estamos muy mal con esto señores! :mad:

Casimiro Notevi 20-04-2010 20:40:21

Los ha borrado él mismo.
uamero ha borrado sus mensajes.
Nadie le ha dicho nada, estábamos esperando una disculpa para Caral, nada más.

nuk3zito 20-04-2010 20:44:16

Cita:

Empezado por Casimiro Notevi (Mensaje 361281)
Los ha borrado él mismo.
uamero ha borrado sus mensajes.
Nadie le ha dicho nada, estábamos esperando una disculpa para Caral, nada más.

OK Casimiro...

No me queda otra más que mostrar mi carota y ofrecer una disculpa a quien haya yo acusado con este mensaje. :o

De cualquier manera y siendo honesto, las soluciones en cuanto a este tema estaban a medias, pues estaba usando un truquito para salir del problema y solo utilizaba Delphi como un cascaron, pues el fuerte de todo el relajo lo hacía OpenSSL. Yo espero no tener problemas en la empresa y postear algo del trabajo que yo he realizado al respecto.

Gracias, una disculpa y un saludo a todos.

Casimiro Notevi 20-04-2010 21:00:24

No pasa nada, todos nos equivocamos a veces :)
Espero que entre todos se pueda sacar una solución para la factura electrónica.

wallamx 20-04-2010 23:02:02

Podrias poner un ejemplo de como utilizar las funciones
 
Cita:

Empezado por felipep (Mensaje 359478)
Anexo una modificación al código enviado en donde puedes obtener varias veces el sello al limpiar bien la memoria y puedes también obtener los datos del certificado.

Ojalá sea de utilidad

Hola, aprovechando, podrias poner un ejemplo de que funciones son las que hay que llamar y en que orden?

Gracias de antemano

maeyanes 21-04-2010 18:52:33

Hola wallamx

Bienvenido a estos foros. Solo te comento que no por repetir tu mensaje vas a hacer que te contesten más rapido...

Te recomiendo que le des una leida a la Guía de Estilo de los foros...


Saludos...

felipep 21-04-2010 20:18:25

Hola,

una vez obtenida la cadena, simplemente tienes que ejecutar las siguientes funciones:

//Obtiene el sello a partir de la cadena
Sello := SelloDigital('aaa010101aaa_CSD_01.key.pem',cadena);

//Obtiene el certificado (clave pública)
Certificado := LoadPublicKey('aaa010101aaa_CSD_01.cer.pem');

//Obtiene la serie del certificado
NoCertificado := GetNoCertificado('aaa010101aaa_CSD_01.cer.pem');

Todas las funciones están declaradas en el archivo que subí.

Saludos

mesquivelh 22-04-2010 16:08:04

Estimados:

Estoy estado trabajando con sus indicaciones, todas muy útiles, pero al generar mi cadena original me aparece así:

||2.0|A|1|2009-08-16T16:30:00|1|2009|ingreso|Una sola exhibición|350|5.25|397.25|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|15|52.5||

Como verán las vocales con acento no aparecen como tal, ¿me podrían orientar?, estoy trabajando con Delphi 2007 y los fuentes que publicaron felipep y uamero.

nejamube 22-04-2010 18:26:52

Cadena Original
 
Muchas Gracias.

nuk3zito 22-04-2010 18:52:06

Cita:

Empezado por mesquivelh (Mensaje 361535)
Estimados:

Estoy estado trabajando con sus indicaciones, todas muy útiles, pero al generar mi cadena original me aparece así:

||2.0|A|1|2009-08-16T16:30:00|1|2009|ingreso|Una sola exhibición|350|5.25|397.25|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|15|52.5||

Como verán las vocales con acento no aparecen como tal, ¿me podrían orientar?, estoy trabajando con Delphi 2007 y los fuentes que publicaron felipep y uamero.

Yo opté por cambiar las letras acentuadas porque tenía ese mismo problema.

La verdad, todo esto se resolvería si lográramos obtener la cadena original como Dios manda, es decir, usando la transformación del XML con el archivo XSLT que proporciona el sat para este fin pero sinceramente no pude más que haciendo una función en C#, la puse en una dll y ésta la mandaba llamar desde Delphi... pero no me gusta hacer las cosas así :( y me gustaría hacer todo esto con Delphi.

Si alguien sabe como hacer esta transformación con Delphi les estaré agradecido, ya que cualquier modificación que haga el sat a la generación de la cadena original repercutirá en cambios inminentes a nuestro código fuente si hacemos la cadena como indicaba el uamero, pero si generamos la cadena haciendo la transformación, entonces los cambios a nuestro código serían mínimos o nulos.

wallamx 22-04-2010 20:18:52

Felipep Milgracias
 
Cita:

Empezado por felipep (Mensaje 361430)
Hola,

una vez obtenida la cadena, simplemente tienes que ejecutar las siguientes funciones:

//Obtiene el sello a partir de la cadena
Sello := SelloDigital('aaa010101aaa_CSD_01.key.pem',cadena);

//Obtiene el certificado (clave pública)
Certificado := LoadPublicKey('aaa010101aaa_CSD_01.cer.pem');

//Obtiene la serie del certificado
NoCertificado := GetNoCertificado('aaa010101aaa_CSD_01.cer.pem');

Todas las funciones están declaradas en el archivo que subí.

Saludos

Mil gracias Funciona de maravilla

felipep 22-04-2010 20:30:37

Cita:

Empezado por nuk3zito (Mensaje 361567)
Yo opté por cambiar las letras acentuadas porque tenía ese mismo problema.

La verdad, todo esto se resolvería si lográramos obtener la cadena original como Dios manda, es decir, usando la transformación del XML con el archivo XSLT que proporciona el sat para este fin pero sinceramente no pude más que haciendo una función en C#, la puse en una dll y ésta la mandaba llamar desde Delphi... pero no me gusta hacer las cosas así :( y me gustaría hacer todo esto con Delphi.

Si alguien sabe como hacer esta transformación con Delphi les estaré agradecido, ya que cualquier modificación que haga el sat a la generación de la cadena original repercutirá en cambios inminentes a nuestro código fuente si hacemos la cadena como indicaba el uamero, pero si generamos la cadena haciendo la transformación, entonces los cambios a nuestro código serían mínimos o nulos.

Utilizando directamente la cadena, con acentos y caracteres, mas los componentes XML de Delphi, con codificación UTF-8, se colocan automáticamente los caracteres especiales según las reglas del SAT y pasa perfectamente la validación

nuk3zito 22-04-2010 20:45:17

Cita:

Empezado por felipep (Mensaje 361596)
Utilizando directamente la cadena, con acentos y caracteres, mas los componentes XML de Delphi, con codificación UTF-8, se colocan automáticamente los caracteres especiales según las reglas del SAT y pasa perfectamente la validación

Mira, te comento el problema como es...
Yo utilizo el TXMLDocument y le digo que codificación usar, le envío los valores y todo y el documento SI SE GENERA BIEN.
Realmente el problema es cuando quiero mostrar el contenido del XML digamos en un TMemo... ahí es donde el componente ya no respeta esos acentos y los cambia.

No es tan grave el asunto en si, solo que los dueños del sistema quieren ver todos los pasos que realiza el software para el sellado de un documento, y pues por eso opté por eliminar los acentos (para poder usar el TMemo), más solo lo eliminé provisionalmente, pues lo restauraré cuando ya no sea necesario mostrar los pasos uno a uno.

De casualidad ¿Sabrás como mostrar correctamente el xml en algún componente? Esto es todo el problema, pero si no lo mostrará, todo estaría OK.

Saludos y gracias de antemano.

nuk3zito 22-04-2010 20:50:16

Cita:

Empezado por mesquivelh (Mensaje 361535)
Estimados:

Estoy estado trabajando con sus indicaciones, todas muy útiles, pero al generar mi cadena original me aparece así:

||2.0|A|1|2009-08-16T16:30:00|1|2009|ingreso|Una sola exhibición|350|5.25|397.25|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|15|52.5||

Como verán las vocales con acento no aparecen como tal, ¿me podrían orientar?, estoy trabajando con Delphi 2007 y los fuentes que publicaron felipep y uamero.

Si no la muestras en un componente, todo estará bien! El problema lo tengo yo que por ahora tengo que mostrar el contenido del xml.

felipep 22-04-2010 21:03:19

Cita:

Empezado por nuk3zito (Mensaje 361603)
Si no la muestras en un componente, todo estará bien! El problema lo tengo yo que por ahora tengo que mostrar el contenido del xml.


Quítenle solamente la instrucción UTF8Encode. no es necesaria

jourdan 23-04-2010 00:51:44

Muchas gracias por sus respuestas, somos muchos los que andamos trabajando en solucionar esto, Yo de plano compre el active x de chilkat.
unamero mucha sgracias por la información, lo intente varias veces con el liveay32.dll pero sin exito.

El activex de chilkat sirve bastante bien pero vale sus buenos 150 dolaritos

osmuar_exp 23-04-2010 02:27:51

Error en key:=ReadPrivateKey(llaveprivada);
 
Buenas tardes, andamos en la mismas con la factura electrónica, ya pasé la validación de la factura en el validador de hacienda factura estilo
Cita:

"uamero"
, el problema que se me presenta es el siguiente:

Tengo una cadena original "grande" y me marca el error en la funcion
Código:

ReadPrivateKey
, Funcion:
Código PHP:

function ReadPrivateKey(AFileNamestring): pEVP_PKEY
  var 
keyfilepBIO;     
  
mx pEVP_PKey;  
 
begin     
   keyfile 
:= BIO_new(BIO_s_file());   
   
mx := nil;       
   
BIO_read_filename(keyfile,PChar(AFilename));     
   
result := PEM_read_bio_PrivateKey(keyfile,mx,nil,nil); 
end

Error:
Cita:

error:00000000:lib(0):func(0):reason(0)
me marca error en el begin antes de acceder al la primera linea de la funcion...
les dejo la cadena por si alguien quiere hacer la prueba y si ya encontrarón una solución me harian un gran favor si la postean...
Nota: Ya descargue la nueva version de la libreria OpenSSL junto con el Microsoft Visual C++ 2008 Redistributable y ni asi.
Nota: Si a la siguiente cadena le quito nose algunos 7 u 8 conceptos no me marca el error, entonces por ahi viene el error en la longitud de la cadena :S.
Gracias...

Cadena Original: Es de prueba
Cita:

||2.0|FE|313|2010-04-22T16:45:42|38843|2008|ingreso|Pago en una sola exhibicion|760.00|881.60|EXP010829R48|MI EMPRESA SA DE CV|AV. MEXICO|30|NUEVO PROGRESO|GUADALAJARA|GUADALAJARA|JALISCO|MEXICO|64000|MEXICO|AGA152156DD5|AGROPECUARIA EL AVION|AV. CONSTITUCION|626|CD INDUSTRIAL|GUADALAJARA|JALISCO|MEXICO|64000|1.00|KILO|030903341|BOLSA JUMBO 1KG|38.00|38.00|1.00|KILO|030903341|BOLSA JUMBO 1KG|38.00|38.00|1.00|KILO|030903341|BOLSA JUMBO 1KG|38.00|38.00|1.00|KILO|030903341|BOLSA JUMBO 1KG|38.00|38.00|1.00|KILO|030903341|BOLSA JUMBO 1KG|38.00|38.00|1.00|KILO|030903341|BOLSA JUMBO 1KG|38.00|38.00|1.00|KILO|030903341|BOLSA JUMBO 1KG|38.00|38.00|1.00|KILO|030903341|BOLSA JUMBO 1KG|38.00|38.00|1.00|KILO|030903341|BOLSA JUMBO 1KG|38.00|38.00|1.00|KILO|030903341|BOLSA JUMBO 1KG|38.00|38.00|1.00|KILO|030903341|BOLSA JUMBO 1KG|38.00|38.00|1.00|KILO|030903341|BOLSA JUMBO 1KG|38.00|38.00|1.00|KILO|030903341|BOLSA JUMBO 1KG|38.00|38.00|1.00|KILO|030903341|BOLSA JUMBO 1KG|38.00|38.00|1.00|KILO|030903341|BOLSA JUMBO 1KG|38.00|38.00|1.00|KILO|030903341|BOLSA JUMBO 1KG|38.00|38.00|1.00|KILO|030903341|BOLSA JUMBO 1KG|38.00|38.00|1.00|KILO|030903341|BOLSA JUMBO 1KG|38.00|38.00|1.00|KILO|030903341|BOLSA JUMBO 1KG|38.00|38.00|1.00|KILO|030903341|BOLSA JUMBO 1KG|38.00|38.00|IVA|16|121.60|121.60||

nejamube 23-04-2010 02:39:15

Agradecimiento
 
Muchas Gracias.

osmuar_exp 23-04-2010 02:55:49

RE: Sello digital alterado
 
Cita:

Empezado por nejamube (Mensaje 361640)
Hola, el validador siempre me marca que el sello digital es invalido, que pudo ser alterado.


Adjunto la cadena original y el CFD en formato XML.

Los estoy validando en :



¿La cadena original esta correcta ?

Es lo unico que creo que puede alterar el sello esperado por el SAT.

Gracias.


Hola, fijate que ami me pasaba lo mismo, el sello digital era invalido, intenta buscar dentro de tu cadena de sello saltos de linea, etc,,,aparte debes estar seguro de que el certificado (no autorizacion, año de autorizacion y no certificado) sean los correctos., con eso ami me soluciono el problema, saludos...

Código Delphi [-]
memo.Lines.clear;
memo.lines.add(SelloDigital(ruta_llave,CalculaCadenaOriginal(1)));
memo.Text := AnsiReplaceStr(memo.Text,#8,'');          
memo.Text := AnsiReplaceStr(memo.Text,#10,'');
memo.Text := AnsiReplaceStr(memo.Text,#13,'');
memo.Text := AnsiReplaceStr(memo.Text,'  ','');
sello:=memo.text;

nejamube 23-04-2010 03:03:34

Agradecimiento
 
Muchas gracias.


La franja horaria es GMT +2. Ahora son las 16:40:11.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi