Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 4214 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Amigos,

Estou passando todos os valores corretamente para os parâmetros, de acordo com o manual de especificações técnicas do Danfe NFC e mesmo assim meu qr code não consegue encontrar a nota pelo visualizador disponibilizado pela SEFAZ.

 

O interessante é que passei todos os valores mostrados no manual para o meu gerador e tentei gerar o Hash para ver se geraria o mesmo Hash do Manual e não gerou, será que meu gerador de Hash está errado?

 

Meu código é este:

 

  try
        f_pdv.ACBrNFe1.Enviar(vNumLote,True,Sincrono);

    begin
      passou:=true;

 

      chNfe := f_pdv.ACBrNFe1.NotasFiscais.Items[0].NFe.procnfe.chNFe;
      digest:= f_pdv.ACBrNFe1.NotasFiscais.Items[0].NFe.procNFe.digVal;
      protocolo:= f_pdv.ACBrNFe1.NotasFiscais.Items[0].NFe.procNFe.nProt;

 

      q.close;
      q.SQL.Text:='update t_nfs '+
      ' set NrProtocol = :Protocolo, '+
    //  '     NrRecibo  = :Recibo, '+
      '     IDNota = :IdNota, '+
      '     Env = ''S'' '+
      ' where numnf = :nf '+
      '  and modelo = 65 '+
      '  and serie = :serie ' +
      '  and cdemp = :emp ';
      q.ParamByName('nf').AsString := numnf;
      q.ParamByName('emp').AsString := f_menu.Empresa;
      q.ParamByName('serie').AsString := inttostr(f_menu.serie);
      q.ParamByName('Protocolo').AsString:=Protocolo;
  //    q.ParamByName('Recibo').AsString:=Recibo;
      q.ParamByName('IdNota').AsString:=ChNFe;
      q.Prepare;
      q.ExecSQL;

    end;
  except
  begin
        passou:=false;
        showmessage('Nota Fiscal Gerada em Contingência!');
  end;
  end;

 

  urlqrcode:='chNfe='+
  ChNFe+
  '&nVersao=100'+
  '&tpAmb='+f_pdv.TipoAmb+
  iif(cdcli = t_config.getCodcons,'','&cDest='+f_pdv.DestCNPJCPF)+
  '&dhEmi='+datahora+
  '&vNF='+TrocaVirgPPto(tiraponto(floattostr(valornf)))+
  '&vICMS='+TrocaVirgPPto(tiraponto(floattostr(VLIcms)))+
  '&digVal='+digest+' '+
  '&cIdToken=000001'+f_menu.Nrtoken;

 

{ // Já tentei assim
  if passou then
  begin
    with TACBrEAD.Create(nil) do
    try
      urlqrcode := CalcularHash(urlqrcode, dgstSHA1);
    finally
      Free;
    end;
  end;

}

 

// Agora faço assim
  if passou then
  begin
    with TACBrEAD.Create(nil) do
    try
      urlqrcode := CalcularHash(UTF8Encode(urlqrcode), dgstSHA1);
    finally
      Free;
    end;
  end;

 

   HashQrCode:= StrToHex(urlqrcode);  // aqui fique com uma dúvida pois não ficou muito claro no manual se precisa

// converter o HasQrCode para Hexa ou não. De qualquer forma testei sem converter também e mesmo assim não consultou no  

// aplicativo de consulta

 

  urlqrcode:='http://sistemas.sefaz.am.gov.br/nfceweb/consultarNFCe.jsp? '+
  'chNfe='+
  ChNFe+
  '&nVersao=100'+
  '&tpAmb='+f_pdv.TipoAmb+
  iif(cdcli = t_config.getCodcons,'','&cDest='+f_pdv.DestCNPJCPF)+
  '&dhEmi='+datahora+
  '&vNF='+TrocaVirgPPto(tiraponto(floattostr(valornf)))+
  '&vICMS='+TrocaVirgPPto(tiraponto(floattostr(VLIcms)))+
  '&digVal='+digest+' '+
  '&cIdToken=000001'+
  '&cHashQRCode='+HashQrCode;

 

// Uma outra observação é que estou gerando o QRCode pelo google. com o procedimento abaixo:

 

 

procedure TF_CancItemOuCupom.CriaQRCode;  // aproveitei um form existente que estava em desuso
var
  ImageStream: TMemoryStream;
  PngImage: TPngImage;
begin
  f_danfenfc.qrImage2.Picture := nil;
  ImageStream := TMemoryStream.Create;
  PngImage := TPngImage.Create;
  try
    try
        GetQrCode(300,300,
        TQrImage_ErrCorrLevel(2), urlqrcode,
        ImageStream);
      if ImageStream.Size > 0 then
      begin
        ImageStream.Position := 0;
        PngImage.LoadFromStream(ImageStream);
        f_danfenfc.qrImage2.Picture.Assign(PngImage);
      end;
    except
      on E: exception do
        ShowMessage(E.Message);
    end;
  finally
    ImageStream.Free;
    PngImage.Free;
  end;

end;

 

 

 

Alguem pode me ajudar amigos?

  • Este tópico foi criado há 4214 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.