Ir para conteúdo
  • Cadastre-se

dev botao

Ajuda Com Geracao Da Url Para O Qr Code Da Nfc-E


Ver Solução Respondido por Rubens-JP,
  • Este tópico foi criado há 2520 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro

Pessoal estou tendo dificuldades para gerar a Url para o qr code em ambiente de produção.

Estou usando essa rotina.

 

procedure TFrmVendasLoc.BtGeraHashClick(Sender: TObject);
var
  Hash_SHA1, linha, linha2: string;
begin
  Memo1.Lines.Clear;
  // MONTA
  linha := 'chNFe=' + ''+
    '&nVersao=' + '' +
    '&tpAmb=' + ''+
    '&cDest=' + '' +
    '&dhEmi=' + LowerCase(stringtohex(''))+
    '&vNF=' + ''+
    '&vICMS=' + ''  +
    '&digVal=' + LowerCase(stringtohex('')) +
    '&cIdToken=' + '';
  linha2 := 'chNFe=' + ''+
    '&nVersao=' + ''+
    '&tpAmb=' + '' +
    '&cDest=' + '' +
    '&dhEmi=' + LowerCase(stringtohex(''))+
    '&vNF=' + '' +
    '&vICMS=' + ''+
    '&digVal=' + LowerCase(stringtohex('')) +
    '&cIdToken=' + '';
  Hash_SHA1 := ACBrEAD1.CalcularHash(linha, dgstSHA1);
  Memo2.Text := Hash_SHA1;
  Memo1.Text := '<a data-ipb="nomediaparse" data-cke-saved-href="?" href="?" %20+"="">http://www.sefaz.mt....onsultanfce?' +
    linha2 +
    '&cHashQRCode=' + Memo2.Text;
end;

Alguem tem alguma rotina que esteja funcionando ou consegue identificar meu erro?

Obrigado a todos.

Editado por bolinha182
Link para o comentário
Compartilhar em outros sites

Meu código funciona assim:

function StringToHex(S: String): String;
var i: Integer;
begin
  Result:= '';
  for i := 1 to length(S) do
    Result:= Result+IntToHex(ord(S[i]),2);
end;
function Iif(Condicao: Boolean; Verdadeiro, Falso: Variant): Variant;
begin
 if Condicao then
   Result := Verdadeiro
 else Result := Falso;
end;
if ACBrNFe1.NotasFiscais.Items[0].NFe.Ide.tpAmb = taProducao then
  URL := 'http://www.sefaz.mt.gov.br/nfce/consultanfce?'
else
  URL := 'http://homologacao.sefaz.mt.gov.br/nfce/consultanfce?';

if ACBrNFe1.NotasFiscais.Items[0].NFe.Ide.tpAmb = taProducao then
  tpAmb := '1'
else
  tpAmb := '2';
cDest := Iif(Length(ACBrNFe1.NotasFiscais.Items[0].NFe.Dest.CNPJCPF) > 0, ACBrNFe1.NotasFiscais.Items[0].NFe.Dest.CNPJCPF, '');

Memo.Lines.Clear;
Memo.Text :=  URL +
              'chNFe='     + ACBrNFe1.NotasFiscais.Items[0].NFe.procNFe.chNFe +
              '&nVersao='  + '100' +
              '&tpAmb='    + tpAmb +
              Iif((Length(cDest) > 0),('&cDest=' + cDest), '') +
              '&dhEmi='    + StringToHex(DateTimeTodhUTC(ACBrNFe1.NotasFiscais.Items[0].NFe.Ide.dEmi,GetUTC(ACBrNFe1.NotasFiscais.Items[0].NFe.emit.enderEmit.UF, ACBrNFe1.NotasFiscais.Items[0].NFe.Ide.dEmi))) +
              '&vNF='      + FormatFloat(',0.00;-,0.00', ACBrNFe1.NotasFiscais.Items[0].NFe.Total.ICMSTot.vNF) +
              '&vICMS='    + FormatFloat(',0.00;-,0.00', ACBrNFe1.NotasFiscais.Items[0].NFe.Total.ICMSTot.vICMS) +
              '&digVal='   + StringToHex(ACBrNFe1.NotasFiscais.Items[0].NFe.procNFe.digVal) +
              '&cIdToken=' + '000001';

Hash_SHA1 := ACBrEAD1.CalcularHash(UTF8Encode(Memo.Text), dgstSHA1);
Memo.Text := Memo.Text + '&cHashQRCode=' + Hash_SHA1;

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

 

Meu código funciona assim:

function StringToHex(S: String): String;
var i: Integer;
begin
  Result:= '';
  for i := 1 to length(S) do
    Result:= Result+IntToHex(ord(S[i]),2);
end;
function Iif(Condicao: Boolean; Verdadeiro, Falso: Variant): Variant;
begin
 if Condicao then
   Result := Verdadeiro
 else Result := Falso;
end;
if ACBrNFe1.NotasFiscais.Items[0].NFe.Ide.tpAmb = taProducao then
  URL := 'http://www.sefaz.mt.gov.br/nfce/consultanfce?'
else
  URL := 'http://homologacao.sefaz.mt.gov.br/nfce/consultanfce?';

if ACBrNFe1.NotasFiscais.Items[0].NFe.Ide.tpAmb = taProducao then
  tpAmb := '1'
else
  tpAmb := '2';
cDest := Iif(Length(ACBrNFe1.NotasFiscais.Items[0].NFe.Dest.CNPJCPF) > 0, ACBrNFe1.NotasFiscais.Items[0].NFe.Dest.CNPJCPF, '');

Memo.Lines.Clear;
Memo.Text :=  URL +
              'chNFe='     + ACBrNFe1.NotasFiscais.Items[0].NFe.procNFe.chNFe +
              '&nVersao='  + '100' +
              '&tpAmb='    + tpAmb +
              Iif((Length(cDest) > 0),('&cDest=' + cDest), '') +
              '&dhEmi='    + StringToHex(DateTimeTodhUTC(ACBrNFe1.NotasFiscais.Items[0].NFe.Ide.dEmi,GetUTC(ACBrNFe1.NotasFiscais.Items[0].NFe.emit.enderEmit.UF, ACBrNFe1.NotasFiscais.Items[0].NFe.Ide.dEmi))) +
              '&vNF='      + FormatFloat(',0.00;-,0.00', ACBrNFe1.NotasFiscais.Items[0].NFe.Total.ICMSTot.vNF) +
              '&vICMS='    + FormatFloat(',0.00;-,0.00', ACBrNFe1.NotasFiscais.Items[0].NFe.Total.ICMSTot.vICMS) +
              '&digVal='   + StringToHex(ACBrNFe1.NotasFiscais.Items[0].NFe.procNFe.digVal) +
              '&cIdToken=' + '000001';

Hash_SHA1 := ACBrEAD1.CalcularHash(UTF8Encode(Memo.Text), dgstSHA1);
Memo.Text := Memo.Text + '&cHashQRCode=' + Hash_SHA1;

Leonardo, Primeiramente obrigado pela resposta. Eu implementei o código e continuo sem sucesso. No código que vc me mandou o campo está  '&cIdToken=' + '000001' eu devo modificar para '&cIdToken=' + '000001' + o token da empresa não é mesmo? A empresa tem dois tokens que me foram enviados como sendo um da matriz e um da filial, as notas foram geradas na filial.

Vou postar o xml da nota e a url que esta sendo gerada para darem uma olhada. Sera que tem algum problema em postar os tokens aki?

a url que estou gerando é essa aki quando nao substituo o token.

http://www.sefaz.mt.gov.br/nfce/consultanfce?chNFe=51131003460900000290650010000000031000000031&nVersao=100&tpAmb=1&cDest=02801244147&dhEmi=323031332D31302D32345431363A32313A30332D30333A3030&vNF=1,00&vICMS=0,00&digVal=78764D34764E2B48586A735657516F653474415A547855547764383D&cIdToken=000001&cHashQRCode=7AF4285DA2D18133BEF9F9370AD4A185B2527AFB

Xml51131003460900000290650010000000031000000031-ProcNFe.xml

Editado por bolinha182
Link para o comentário
Compartilhar em outros sites

Verifiquei um erro na sua URL, vou postar aqui talvez ajude, você colocou virgula no separador decimal do valor da nf e valor do ICMS, quando no manual diz pra se colocar pontos, como separador. talvez seja isso,

 

Fiz o teste e abriu conforme imagem abaixo, dando erro apenas de QRCode.

 

Solivan.

 

Link: http://www.sefaz.mt.gov.br/nfce/consultanfce?chNFe=51131003460900000290650010000000031000000031&nVersao=100&tpAmb=2&cDest=02801244147&dhEmi=323031332D31302D32345431363A32313A30332D30333A3030&vNF=1.00&vICMS=0.00&digVal=78764D34764E2B48586A735657516F653474415A547855547764383D&cIdToken=000001&cHashQRCode=7AF4285DA2D18133BEF9F9370AD4A185B2527AFB

post-2563-0-94046500-1382915575_thumb.pn

Editado por Solivan

Sistema de Automação Comercial para diversos segmentos
NF-e, NFC-e, SPED Fiscal - www.arenasoft.com.br

Link para o comentário
Compartilhar em outros sites

  • 1 mês depois ...
  • 7 meses depois ...

Alguém conseguiu abrir o link do QR-Code sem apresentar o erro "Erro 100 - QR Code Inválido"?

Revisei o manual, pesquisei em outros foruns chamei uma outra pessoa para olhar o código baseado no manual para geração do link e mesmo assim, ainda estou com problema  "100 - QR Code Inválido". Será que alguém tem uma dica, por favor?

 

Obs.:

Estou utlizando o ACBrEAD1.CalcularHash para o cálculo do Hash-Code.

Em um email enviado para sefaz-MT me falaram que o probema estava no cálculo do Hash e pediram para olhar o manual mais uma vez. Assim foi feito e nada resolvido.

 

 

chNFe=              51140819645307000178650010000001851000001500

&nVersao=          100

&tpAmb=            2

&cDest=             99999999000191

&dhEmi=             2014-08-04T16:47:03-03:00

      Hexa:           323031342D30382D30345431363A34373A30332D30333A3030

 

&vNF=               100.00

&vICMS=            17.00

&digVal=             zrUFBzCpUJCUzPtkb6YjVGKjvBY=

    Hexa:             7A725546427A4370554A43557A50746B6236596A56474B6A7642593D

 

&cIdToken=        000001

CSC:                  A639A0FD-8887-E68C66CF-11276B5A3FA6

 

 

 

Link Gerado:

http://homologacao.sefaz.mt.gov.br/nfce/consultanfce?chNFe=51140819645307000178650010000001851000001500&nVersao=100&tpAmb=2&cDest=99999999000191&dhEmi=323031342D30382D30345431363A34373A30332D30333A3030&vNF=100.00&vICMS=17.00&digVal=7A725546427A4370554A43557A50746B6236596A56474B6A7642593D&cIdToken=000001&cHashQRCode=DB03F37AA4D41E49066C2FE68710B6AC67B79B53

Link para o comentário
Compartilhar em outros sites

O ACBr já possui um método para fazer isso "NotaUtil.GetURLQRCode", bastaria utilizar ele, declare ACBrNFeUtil no uses e ele estará disponível.

 

Fiz o que você propôs Regys, mas mesmo assim ainda apresenta a danada da mensagem "Erro 100 - QR Code Inválido".

 

O link gerado a baixo foi pelo NotaUtil.GetURLQRCode

 

Link para o comentário
Compartilhar em outros sites

  • Solution

Consegui resolver meu problema, depois de vários e-mails enviados para Sefaz-MT, objetive uma resposta satisfatória.

Eu estava enviando para o cálculo do hash o CSC seguindo uma formatação existente no exemplo do manual utilizando traço para separar os grupos dos caracteres: A639A0FD-8887-E68C66CF-11276B5A3FA6

A resposta que a SEFAZ - MT mandou, foi que não pode ter formatação, tem que ser exatamente da forma que a  página  web de sua  Secretaria da  Fazenda disponibilizou. O que inclui maiúsculo e minúsculo.

Editado por Rubens-JP
  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • 1 ano depois...

Minha duvi é quanto ao numero de caracteres, pois tenho interesse em enviar via SMS a URL para consulta... Porem o numero maximo de caracteres permitido nos serviços que conheço sao de até 160 caracteres e pelo que vi a url esta com cerca de 320 caracteres

 

 

caso alguem possa ajudar ... agradeço.

Editado por diego ribas
Link para o comentário
Compartilhar em outros sites

  • 3 semanas depois ...
  • 3 semanas depois ...

Consegui resolver meu problema, depois de vários e-mails enviados para Sefaz-MT, objetive uma resposta satisfatória.

Eu estava enviando para o cálculo do hash o CSC seguindo uma formatação existente no exemplo do manual utilizando traço para separar os grupos dos caracteres: A639A0FD-8887-E68C66CF-11276B5A3FA6

A resposta que a SEFAZ - MT mandou, foi que não pode ter formatação, tem que ser exatamente da forma que a  página  web de sua  Secretaria da  Fazenda disponibilizou. O que inclui maiúsculo e minúsculo.

O ACBr já possui um método para fazer isso "NotaUtil.GetURLQRCode", bastaria utilizar ele, declare ACBrNFeUtil no uses e ele estará disponível.

 

Fiz o que você propôs Regys, mas mesmo assim ainda apresenta a danada da mensagem "Erro 100 - QR Code Inválido".

 

O link gerado a baixo foi pelo NotaUtil.GetURLQRCode

 

Por favor me desculpe a pergunta mais em qual metodo do ACBRNFE eu coloco essa URL gerarda  por esse outro metodo NotaUtil.GetURLQRCode , desde ja agradeço 

Link para o comentário
Compartilhar em outros sites

  • Moderadores

tem algum que você sugere, que tenha uma boa integração com software externo ?

 

Obrigado

Quanto ao encurtador o Google possui um e se não me engano tem API para usar e integrar.

Quanto ao envio dos SMS não tenho nenhum para indicar, você teria que analisar os vários serviços de envio de SMS disponíveis e verificar qual o melhor para sua necessidade.

Consegui resolver meu problema, depois de vários e-mails enviados para Sefaz-MT, objetive uma resposta satisfatória.

Eu estava enviando para o cálculo do hash o CSC seguindo uma formatação existente no exemplo do manual utilizando traço para separar os grupos dos caracteres: A639A0FD-8887-E68C66CF-11276B5A3FA6

A resposta que a SEFAZ - MT mandou, foi que não pode ter formatação, tem que ser exatamente da forma que a  página  web de sua  Secretaria da  Fazenda disponibilizou. O que inclui maiúsculo e minúsculo.

 

O ACBr já possui um método para fazer isso "NotaUtil.GetURLQRCode", bastaria utilizar ele, declare ACBrNFeUtil no uses e ele estará disponível.

 

Fiz o que você propôs Regys, mas mesmo assim ainda apresenta a danada da mensagem "Erro 100 - QR Code Inválido".

 

O link gerado a baixo foi pelo NotaUtil.GetURLQRCode

 

Por favor me desculpe a pergunta mais em qual metodo do ACBRNFE eu coloco essa URL gerarda  por esse outro metodo NotaUtil.GetURLQRCode , desde ja agradeço 

Veja que o que postei é de 2014, nada tem a ver com o problema da falta de QRCode dois dias de hoje.

Hoje para atender a nova nota técnica o ACBr gera o QRCode e já preenche a tag automaticamente, para incluir a tag ou não no XML coloque True ou False na propriedade ACBrNFe1.Configuracoes.Geral.IncluirQRCOdeXMLNFCe.

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
Link para o comentário
Compartilhar em outros sites

tem algum que você sugere, que tenha uma boa integração com software externo ?

 

Obrigado

Quanto ao encurtador o Google possui um e se não me engano tem API para usar e integrar.

Quanto ao envio dos SMS não tenho nenhum para indicar, você teria que analisar os vários serviços de envio de SMS disponíveis e verificar qual o melhor para sua necessidade.

Consegui resolver meu problema, depois de vários e-mails enviados para Sefaz-MT, objetive uma resposta satisfatória.

Eu estava enviando para o cálculo do hash o CSC seguindo uma formatação existente no exemplo do manual utilizando traço para separar os grupos dos caracteres: A639A0FD-8887-E68C66CF-11276B5A3FA6

A resposta que a SEFAZ - MT mandou, foi que não pode ter formatação, tem que ser exatamente da forma que a  página  web de sua  Secretaria da  Fazenda disponibilizou. O que inclui maiúsculo e minúsculo.

 

O ACBr já possui um método para fazer isso "NotaUtil.GetURLQRCode", bastaria utilizar ele, declare ACBrNFeUtil no uses e ele estará disponível.

 

Fiz o que você propôs Regys, mas mesmo assim ainda apresenta a danada da mensagem "Erro 100 - QR Code Inválido".

 

O link gerado a baixo foi pelo NotaUtil.GetURLQRCode

 

Por favor me desculpe a pergunta mais em qual metodo do ACBRNFE eu coloco essa URL gerarda  por esse outro metodo NotaUtil.GetURLQRCode , desde ja agradeço 

Veja que o que postei é de 2014, nada tem a ver com o problema da falta de QRCode dois dias de hoje.

Hoje para atender a nova nota técnica o ACBr gera o QRCode e já preenche a tag automaticamente, para incluir a tag ou não no XML coloque True ou False na propriedade ACBrNFe1.Configuracoes.Geral.IncluirQRCOdeXMLNFCe.

Infelizmente a versão do acbr que uso não tem essa propriedade , acha que devo atualizar a partir do trunc2

Link para o comentário
Compartilhar em outros sites

  • 3 semanas depois ...

Boa tarde Juliomar, obrigado pela resposta! Fiquei com uma dúvida após a instalação do trunc2 minha aplicação começou a pedir as seguintes dlls nos servidores dos meus clientes: 

iconv.dll
inpout32.dll
libxml2.dll
libxmlsec.dll
libxmlsec-openssl.dll
libxslt.dll
msvcr71.dll
zlib1.dll

Isso é normal ou foi algum erro meu durante a instalação ?

Link para o comentário
Compartilhar em outros sites

8 minutos atrás, fabricarneiro disse:

Boa tarde Juliomar, obrigado pela resposta! Fiquei com uma dúvida após a instalação do trunc2 minha aplicação começou a pedir as seguintes dlls nos servidores dos meus clientes: 

iconv.dll
inpout32.dll
libxml2.dll
libxmlsec.dll
libxmlsec-openssl.dll
libxslt.dll
msvcr71.dll
zlib1.dll

Isso é normal ou foi algum erro meu durante a instalação ?

Absolutamente normal. No meu instalador / atualizador já incluo estes arquivos, uma vez que estes são necessários para funcionar a suite ACBr.

Att,

  • Curtir 1

_____________

Prates, Agnaldo

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 2520 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.