Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #5  
Antiguo 20-09-2022
JCz JCz is offline
Miembro
 
Registrado: oct 2021
Posts: 29
Poder: 0
JCz Va por buen camino
Adjunto la función que utilizo para generar la url del QR

Código Delphi [-]
function TdmSIGCZFE.generarQR(
                              _QRVersion : AnsiString;                      // Version del Manual Técnico = 150
                              _QRId : AnsiString;                             // código CDC string de 44 caracteres 
                              _QRdFeEmiDE : AnsiString;                 // Fecha emision del D.E.
                              _QRdRucRec : AnsiString;                   // RUC del contribuyente
                              _QRdTotGralOpe : AnsiString;             // importe total de la operación
                              _QRdTotIVA : AnsiString;                   // importe del IVA de la operación
                              _QRcItems : AnsiString;                    // cantidad de items facturado
                              _QRDigestValue : AnsiString;            // Digest de la firma
                              _QRIdCSC : AnsiString;                    // id del Codigo CSC facilitado por la SET para la generación de la url (puede haber 2)
                              _QRCSC : AnsiString): AnsiString;    // Código CSC facilitado por la SET para la generación de la url  (puede haber 2)
var
      _cHashQR : AnsiString;
      _QR,_QRCalcHash : AnsiString;
begin

      _QR := 'nVersion='+_QRVersion +'&' +
              'Id='+_QRId+'&' +
              'dFeEmiDE='+ lowercase((String2Hex(_QRdFeEmiDE))) +'&' +   //convertimos la fecha en su valor hexadecimal
              ''+_QRdRucRec +'&' +
              'dTotGralOpe='+_QRdTotGralOpe + '&' +
              'dTotIVA='+ _QRdTotIVA + '&' +
              'cItems='+ _QRcItems + '&' +
              'DigestValue=' + lowercase((String2Hex(_QRDigestValue))) + '&' +  //convertimos el digest de la firma en su valor hexadecimal
              'IdCSC=' + _QRIdCSC;


      _QRCalcHash := _QR + _QRCSC;                              // al valor calculado en paso anterior se adiciona el codigo CSC
      _cHashQR    :=  GetStrHashSHA256(_QRCalcHash);  // el resultado del paso anterior lo Generaramos el Hash

      _QR := _QR + '&cHashQR=' + _cHashQR;

      if idAmbienteActual = 1 then // ambiente de prueba
            _QR := urlQRPrueba + _QR
      else  if idAmbienteActual = 2 then  // ambiente de producción
            _QR := urlQRProduccion + _QR;

      result := StringReplace(_QR,'&','&',[rfReplaceAll, rfIgnoreCase]);  // escapamos el & por '&'
end;

abajo las otras funciones utilizadas


Código Delphi [-]
function String2Hex(const Buffer: AnsiString): string;
begin
  SetLength(Result, Length(Buffer) * 2);
  BinToHex(PAnsiChar(Buffer), PChar(Result), Length(Buffer));
end;

Código Delphi [-]
function GetStrHashSHA256(Str: String): String;
var
  HashSHA: THashSHA2;
begin
    HashSHA := THashSHA2.Create;
    HashSHA.GetHashString(Str);
    result := HashSHA.GetHashString(Str,SHA256);
end;
Responder Con Cita
 



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
xml+xsl a pdf(Factura Electronica) jgutti Varios 4 21-02-2012 16:08:23
Factura electronica richy08 Varios 4 17-12-2010 00:40:34
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


La franja horaria es GMT +2. Ahora son las 20:58:38.


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