Ver Mensaje Individual
  #28  
Antiguo 30-10-2017
seti.roman seti.roman is offline
Registrado
NULL
 
Registrado: may 2017
Posts: 4
Reputación: 0
seti.roman Va por buen camino
Ahora va corregido y (por ahora) funcionando:

Código:
function Tcomprobante.crearfirma: string;
var
  signer: TMessageSigner;
  ruta: Pwidechar;
  firma: String;
  position: integer;
begin
  ruta := Pwidechar(ExpandFileName(application.ExeName + '\..\keys'));

  fgeneracion := now();
  fexpiracion := inchour(fgeneracion,1);

  signer := TMessageSigner.Create;
  signer.LoadPrivateKey(ruta +'\'+ responsable.edita_responsables['llave'], '');
  signer.LoadCertificate(ruta + '\'+ responsable.edita_responsables['cert']);

  signer.PlainMessage :=
  '<?xml version="1.0" encoding="UTF-8" ?>'+
  '<loginTicketRequest version="1.0">'+
  '<header>'+
  '<uniqueId>123456</uniqueId>'+
  '<generationTime>'+formatdatetime('yyyy-MM-dd',fgeneracion)+'T'+formatdatetime('hh:mm',fgeneracion)+':00-03:00</generationTime>'+
  '<expirationTime>'+formatdatetime('yyyy-MM-dd',fexpiracion)+'T'+formatdatetime('hh:mm',fexpiracion)+':00-03:00</expirationTime>'+
  '</header>'+
  '<service>wsfe</service>'+
  '</loginTicketRequest>';

  signer.MIMESign;

  firma := signer.SignedMessage;
  firma := rightstr(firma,length(firma)-188); //*********** AGREGUE 2

  position := ansipos('==', firma);
  if position <> 0 then
  begin
    delete(firma,position+2,length(firma)); //******** SUME 2 A LA POSICION PARA QUE INCLUYA LOS ==
  end;
  xgs.observartexto(firma);
  result := firma;
end;
Responder Con Cita