Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-07-2010
Oscar Súchil Oscar Súchil is offline
Registrado
 
Registrado: jul 2010
Posts: 6
Poder: 0
Oscar Súchil Va por buen camino
Ya casi queda

Cita:
Empezado por dado Ver Mensaje
Oscar ::::

Si, de hecho la idea principal de mi ValidaCFD es que pueda ser usado por todo el publico PARA RECIBIR FACTURAS, exactamente lo que tu estas haciendo.

Para validar el sello.....es un proceso largo pero sencillo (especialmente sencillo cuando sabes como hacerlo je je je).

Te doy "la punta de la madeja", te toca desentrañar todo el desarrollo.

1. Tomas la cadena "Certificado" de tu XML, la DIVIDES en lineas de 64 caracteres cada una, despues le agregas el encabezado -----BEGIN CERTIFICATE----- y el pie -----END CERTIFICATE----- (el numero de guiones y la frase debe ser EXACTA)

2. Grabas ese certificado en un archivo, digamos "certificado.PEM" (no voy a explicar muchos detalles, pero donde veas negrillas es porque hay informacion que debes estudiar si quieres saber que esta pasando)

3. Toma la cadena "Sello" de tu XML, la DIVIDES en lineas de 64 caracteres y la grabas en archivo con nombre digamos "sello.txt"

4. Generas la cadena original (esta te la tienes que aventar "a mano", es decir, no esta en el XML) y la grabas en un archivo, digamos "cadena.txt" IMPORTANTE no se te olvide grabarla codificada con UTF8 (ver UTF8ENCODE de Delphi)

5. Ejecutas lo siguiente :

openssl x509 -in "cert.PEM" -pubkey -noout >pubkey.txt
(para obtener la llave publica)

openssl enc -base64 -d -in "sello.txt" >sellobin.txt
(para pasar el sello de base64 a binario)

openssl dgst -md5 -verify "pubkey.txt" -signature "sellobin.txt" "cadoriginal.txt" >resultado.txt
(aqui esta toda la magia, en el archivo "resultado.txt" tienes......el resultado)
Que tal Dado, antes que nada te quiero agradecer por la ayuda no tienes una idea cuanto haz facilitado mi comprensión del validador, ya pude acabar todo el proceso, y ya estuve probando contra el validador del sat y nada mas no puedo hacer que sea valido mi resultado siempre aparece

"Verification Failure"

Mira este es mi cadena original en el archivo

utf8.txt

||2.0|A|7306|2010-05-25T10:25:46|44616|2009|ingreso|PAGO EN UNA SOLA EXHIBICION|MONEDA: MXN, TC: 1.0000|700.00|0.00|812.00|DAA020218JY1|DSV AIR & SEA, S.A. de C.V.|Indiana|260|Piso 11 Desp.1107|Ciudad de los Deportes|TEL: (55) 6515-6525|BENITO JUAREZ|Distrito Federal|M?xico|03710|GPU030429I10|
GESTAMP PUEBLA SA DE CV|AUTOMOCION 8 SAN LORENZO|ALMECATLA CUAUTLANCINGO PUEBLA C.P. 72710|MEXICO|1|PZA|392|TRANSFERENCIA ELECTRONICA MANIFIESTO|700.00|700.00|IVA|16.00|112.00|112.00||


Esta es la que aparece en el validador del sat en el recuadro de cadena original.

||2.0|A|7306|2010-05-25T10:25:46|44616|2009|ingreso|PAGO EN UNA SOLA EXHIBICION|MONEDA: MXN, TC: 1.0000|700.00|0.00|812.00|DAA020218JY1|DSV AIR & SEA, S.A. de C.V.|Indiana|260|Piso 11 Desp.1107|Ciudad de los Deportes|TEL: (55) 6515-6525|BENITO JUAREZ|Distrito Federal|México|03710|GPU030429I10|
GESTAMP PUEBLA SA DE CV|AUTOMOCION 8 SAN LORENZO|ALMECATLA CUAUTLANCINGO PUEBLA C.P. 72710|MEXICO|1|PZA|392|TRANSFERENCIA ELECTRONICA MANIFIESTO|700.00|700.00|IVA|16.00|112.00|112.00||

La única diferencia apreciable es el acento en México por M?xico (ojo esto ya lo modifique a pata para ver si eso era y no sigue dando error); como lo
expresa en mi programa pero según yo ya lo exprese en UTF8 y genere
el sello, pero no logro hacer que se valide el sello, no se cual sea el error
ya estuve cambiando la cadena a UTF8 a mano sin mi programa y nop no me
deja, el sello lo dividí en 64 caracteres asi como lo pase a binario mira aqui
te dejo los demas datos:

sello.txt:

aSBXOlIeM6HG1Iqaj8vpBNR29It1PmDdkgGOkeslzV13M1pxDNfxeU1CybvlU5TO
StXmiFLFnWBmfasg3BnJVqDlruDhMyfne3TyjXZ8Ng9q8EyFkO/1IElIaGCO8fig
8gIru30smNsi3iXj9NKOqgwjRHq2Alyss3DAx0goLR8=

sellobin.txt:

i W:R3¡ÆÔŠšËéÔvô‹u>`Ý’Ž‘ë%Í]w3Zq ×ñyMBÉ»åS”ÎJÕæˆRÅ`f}« ÜÉV å®àá3'ç{tòv|6jðL…ïõ IHh`Žñø ò+»},˜Û"Þ%ãôÒŽª #Dz¶\¬³pÀÇH(-

pubkey.txt:

-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDqJBY3wC8c/90lDXbs5ua2n2aJ
ueaeUbo3U4kTUQ0mMfrChnEbbpNllbZoGeMl1dwxTj4IQD71iYiLU3sZQIYQdaVK
sQiL3B6Dy31cJWPuHECfPXIFZ4Nvy0c9s8SY5DrQfgtySzdXFk6Z4kgLU5RDXeej
LkxXQtQAFp9qC68n5wIDAQAB
-----END PUBLIC KEY-----

cert.pem:

-----BEGIN CERTIFICATE-----
MIIEIjCCAwqgAwIBAgIUMDAwMDEwMDAwMDAxMDA3MjgwNjMwDQYJKoZIhvcNAQEF
BQAwggE2MTgwNgYDVQQDDC9BLkMuIGRlbCBTZXJ2aWNpbyBkZSBBZG1pbmlzdHJh
Y2nDs24gVHJpYnV0YXJpYTEvMC0GA1UECgwmU2VydmljaW8gZGUgQWRtaW5pc3Ry
YWNpw7NuIFRyaWJ1dGFyaWExHzAdBgkqhkiG9w0BCQEWEGFjb2RzQHNhdC5nb2Iu
bXgxJjAkBgNVBAkMHUF2LiBIaWRhbGdvIDc3LCBDb2wuIEd1ZXJyZXJvMQ4wDAYD
VQQRDAUwNjMwMDELMAkGA1UEBhMCTVgxGTAXBgNVBAgMEERpc3RyaXRvIEZlZGVy
YWwxEzARBgNVBAcMCkN1YXVodGVtb2MxMzAxBgkqhkiG9w0BCQIMJFJlc3BvbnNh
YmxlOiBGZXJuYW5kbyBNYXJ0w61uZXogQ29zczAeFw0wOTA2MjUxNzU5MjNaFw0x
MTA2MjUxNzU5MjNaMIHCMR8wHQYDVQQDFBZEU1YgQUlSICYgU0VBIFNBIERFIENW
MR8wHQYDVQQpFBZEU1YgQUlSICYgU0VBIFNBIERFIENWMR8wHQYDVQQKFBZEU1Yg
QUlSICYgU0VBIFNBIERFIENWMSUwIwYDVQQtExxEQUEwMjAyMThKWTEgLyBWQUdU
NzAxMTI0UkEzMR4wHAYDVQQFExUgLyBWQUdUNzAxMTI0TURGTE5SMDMxFjAUBgNV
BAsTDUNFTlRSTyBERUwgREYwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAOok
FjfALxz/3SUNduzm5rafZom55p5RujdTiRNRDSYx+sKGcRtuk2WVtmgZ4yXV3DFO
PghAPvWJiItTexlAhhB1pUqxCIvcHoPLfVwlY+4cQJ89cgVng2/LRz2zxJjkOtB+
C3JLN1cWTpniSAtTlENd56MuTFdC1AAWn2oLryfnAgMBAAGjHTAbMAwGA1UdEwEB
/wQCMAAwCwYDVR0PBAQDAgbAMA0GCSqGSIb3DQEBBQUAA4IBAQDSAqh45oVZhK9Q
En605MctBanZqUF967LV5uLY1zRhaAf1IVnOVK2fcp/icvb2jm4vua7odjPBgkfs
OhE8gOvgo6pmUlq2a2zakBTQpWSjK4hhvGyMqFi5J/OW5EXazWaQCh2fSlTcBo0v
7t2hsJd63TvnSNXAY7JiT7/i1rnhMUXa0deUapiPUAhQwo/kSb6cGM5nArbCaAjR
8oxXMd0EEXsekJBJHrj1txjzGJhfgaa5oy6ia19ubXsFONCjhoTF6yXTM1jFxtEy
wFtpmIRHAiC43U525K9dkSB1Ql88GUSwtS9Is7AeFZ07b/W131MJ9zdJb00iYi13
x3QX9LIO
-----END CERTIFICATE-----

Mis sentencias de openssl utilizadas son:
openssl x509 -in C:\DesencriptarSelloSAT\Config\PubKey\gencer.pem -pubkey -noout >C:\DesencriptarSelloSAT\Config\PubKey\pubkey.txt
openssl enc -base64 -d -in C:\DesencriptarSelloSAT\Config\PubKey\sello.txt >C:\DesencriptarSelloSAT\Config\PubKey\sellobin.txt
openssl dgst -md5 -verify C:\DesencriptarSelloSAT\Config\PubKey\pubkey.txt -signature C:\DesencriptarSelloSAT\Config\PubKey\sellobin.txt C:\DesencriptarSelloSAT\Config\PubKey\utf8.txt >C:\DesencriptarSelloSAT\Config\PubKey\resultado.txt


Cualquier asesoría que me puedas proporcionar te la agradeceré, yo mientras le sigo buscando haber que encuentro, de antemano gracias.
Responder Con Cita
  #2  
Antiguo 07-07-2010
dado dado is offline
Miembro
 
Registrado: may 2010
Posts: 76
Poder: 17
dado Va por buen camino
Verificar el sello

OSCAR ::

Hice una copia de mi comentario de como verificar el sello en este foro en la categoria "OpenSSL en general"

Tambien ahi acabo de redactar otra entrada que puede ayudarte un poco.
Responder Con Cita
  #3  
Antiguo 08-07-2010
Oscar Súchil Oscar Súchil is offline
Registrado
 
Registrado: jul 2010
Posts: 6
Poder: 0
Oscar Súchil Va por buen camino
Mil gracias y ya valide el sello!!

Cita:
Empezado por dado Ver Mensaje
OSCAR ::

Hice una copia de mi comentario de como verificar el sello en este foro en la categoria "OpenSSL en general"

Tambien ahi acabo de redactar otra entrada que puede ayudarte un poco.

Que tal dado, nuevamente grraaaaaaaaaaaaaaaaaaaaaaciaaaaaaaaaaaaass
por tu ayuda, you are the man!! jajaja, pues bien solucioné mi problema y ya puedo validar sellos en mi servicio, te explico cual era mi error, de hecho era
bastante básico.

Como sabes todos los xml recibidos se encuentran codificados con el head
encoding="utf-8"?
Pues bien yo al momento de leerlos, no me había dado cuenta que les convertía a ASCII,por que buscaba leerlos como ASCII no como UTF8
por lo tanto hacía esta conversión extraña de la que te comentaba, en la cual me cambíaba los acentos por símbolos como " ó ? una vez encontrado
donde leía mi xml como ascii y cambiándolo para utf8, el problema quedó
resuelto, por ende se generó la cadena original de manera correcta y dío un resultado de "Verified OK" para los que se marcan con esta codificación.

Lo que hice para delimitar excepciones es un filtro previo de la estructura del xml, en el me sercioro primero que el archivo se encuentre codificado en utf-8 de lo contrario no entra a las demás validaciones, es bastante práctico ahora me encuentro validando otros puntos de la estructura del XML.

Como son:

> Namespaces bien referenciados
> La referencia al xsd que seá correcta


Etc, etc.

No sabes en verdad como te puedo agradecer tu asesoría, que estes muy bien y pues voy a seguir agregando condiciones a mi validador, y manteniendote informado así puede que yo valide aspectos que a ti se te pasen ó viceversa, que estes muy bien amigo.

Saludos.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Mexico - Como crear sellos en FACTURA ELECTRONICA.. pcicom API de Windows 12 10-11-2012 18:46:55
Factura Electrónica aig Varios 13 10-12-2010 17:12:44
factura electronica cmm07 Varios 4 02-04-2009 17:46:03
factura electronica spia Varios 2 22-02-2009 21:30:06
Factura electronica AUNA Aprendiz Varios 5 01-09-2005 10:44:15


La franja horaria es GMT +2. Ahora son las 19:03:51.


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