Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-11-2012
Alexis De la Cr Alexis De la Cr is offline
Miembro
 
Registrado: may 2006
Ubicación: Puebla
Posts: 124
Poder: 19
Alexis De la Cr Va por buen camino
Estimados compañeros. Tengo una duda con respecto al sello digital, y aunque este tema ya esta olvidado, es el que mas se acerca a la duda que tengo

en general para obtener el sello digital, en la version 2.0 o 2.2 hay que obtener la cadena original la cual la obtengo a traves de un XSLPageProducer

mediante el siguiente codigo
Código Delphi [-]
XSLPageProducer1.XMLData := XMLDoc3;
XSLPageProducer1.FileName:='lcadenaoriginal_2_0.xslt';
cadenaoriginal := XSLPageProducer1.Content;

despues hay que eliminar todos aquellos caracteres indeseados como son el Retorno de carro, el escape, los espacios antes y despues del pipe, etc, y se codifica en UTF8 mediante el sisguiente codigo

Código Delphi [-]
    cadenaoriginal := AnsiReplaceStr(cadenaoriginal,#13,'');
    cadenaoriginal := AnsiReplaceStr(cadenaoriginal,#10,'');
    cadenaoriginal := AnsiReplaceStr(cadenaoriginal,#8,'');
    cadenaoriginal := AnsiReplaceStr(cadenaoriginal,'  ','');
    cadenaoriginal := AnsiReplaceStr(cadenaoriginal,' |','|');
    cadenaoriginal := AnsiReplaceStr(cadenaoriginal,'| ','|');
    cadenaoriginal := UTF8Encode(cadenaoriginal);

apliacamos la encriptacion md5 con la llave privada en formato pem y al resultado le aplicacmos la encriptacion base64

Código Delphi [-]
    StrPCopy(inbuf,cadenaoriginal);
    InitOpenSSL;
    key:=LoadPrivateKey(llaveprivada,'');
    EVP_SignInit(@mdctx,EVP_md5());
    EVP_SignUpdate(@mdctx,@inbuf,StrLen(inbuf));
    EVP_SignFinal(@mdctx,@outbuf,Len,key);
  EVP_MD_CTX_cleanup(@mdctx);
  EVP_PKEY_free(key);;
    FreeOpenSSL;
    result := bintobase64(@outbuf,Len);

Hasta aqui todo bien, al menos eso creo, porque en su tiempo validaba los documentos xml generados en el sat y pasaba dicha validacion. En la actualidad dicho validador del SAT me marca error de que la version 2.0 no estaba vigente en la fecha de emision del comprobante, y por mas que le he movido a las fechas no logro hacerlo funcionar.

si hay algun error y algiuen lo detecta pues le agradeceria la ayuda.

Ahora bien que pasa con el sello en la version 3.2? es exactamente el mismo tratamiento excepto que en lugar de hacer la encriptacion md5, se hace con sha1? porque asi lo he intentado y el v alidador del sat me rechaza el sello de l documento, incluso con esta herramienta el sello sale distinto

http://solucionfactible.com/sfic/cap...rramientaSello


utilizo el siguiente codigo

Código Delphi [-]

     XSLPageProducer1.XMLData := XMLDoc3;
     XSLPageProducer1.FileName:='cadenaoriginal_3_2.xslt';
    cadenaoriginal := XSLPageProducer1.Content;

    cadenaoriginal := AnsiReplaceStr(cadenaoriginal,#13,'');
    cadenaoriginal := AnsiReplaceStr(cadenaoriginal,#10,'');
    cadenaoriginal := AnsiReplaceStr(cadenaoriginal,#8,'');
    cadenaoriginal := AnsiReplaceStr(cadenaoriginal,'  ','');
    cadenaoriginal := AnsiReplaceStr(cadenaoriginal,' |','|');
    cadenaoriginal := AnsiReplaceStr(cadenaoriginal,'| ','|');
    cadenaoriginal := UTF8Encode(cadenaoriginal);

    StrPCopy(inbuf,cadenaoriginal);
    InitOpenSSL;
    key:=LoadPrivateKey(llaveprivada,'');
    EVP_SignInit(@mdctx,EVP_sha1());
    EVP_SignUpdate(@mdctx,@inbuf,StrLen(inbuf));
    EVP_SignFinal(@mdctx,@outbuf,Len,key);
  EVP_MD_CTX_cleanup(@mdctx);
  EVP_PKEY_free(key);;
    FreeOpenSSL;
    result := bintobase64(@outbuf,Len);


muchas gracias por su tiempo, y por su ayuda en caso de aplicar

Alexis De la Cruz
Responder Con Cita
  #2  
Antiguo 10-11-2012
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 21
AzidRain Va camino a la fama
Te recomiendo que descargues los componentes de Bambucode, son código abierto y su creador personalmente lo ha estado mejorando con ayuda de muchas otras personas y también te apoya con dudas. Es 100% Delphi y trae código fuente completo así como su correspondiente demo. En 5 minutos lo echas a andar. Lo puedes descargar aquí: http://www.bambucode.com/codigoabier...ica_delphi.php No se paga nada solo se pide que si puedes aportar algo al código lo hagas. Yo las estoy utilizando y sencillamente son estupendas.

Había otro proyecto por ahí que era libre al principio pero se volvio pago hace poco además de que no te daban el código.
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Responder Con Cita
Respuesta



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
Factura Electrónica aig Varios 13 10-12-2010 17:12:44
factura electronica spia Varios 2 22-02-2009 21:30:06
La pone-sellos más rápida del oeste Bicho Humor 2 04-06-2007 11:20:19
Factura electronica AUNA Aprendiz Varios 5 01-09-2005 10:44:15
Fallo Nº Factura y Linea Factura CarmaZone Tablas planas 5 26-05-2005 11:17:19


La franja horaria es GMT +2. Ahora son las 03:34:20.


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
Copyright 1996-2007 Club Delphi