Ir para conteúdo
  • Cadastre-se

dev botao

Nfc-E - Nota Fiscal Do Consumidor Eletrônica


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

Recommended Posts

  • Moderadores

Pessoal estou efetuando testes no demo da NFC-e,

 

o componente está enviando e estou conseguindo autorizar a NFC-e porém os retornos não estão funcionando no trecho de código abaixo, alguém tem alguma dica sobre o problema esse problema?:

 

  MemoResp.Lines.Text := UTF8Encode(ACBrNFe1.WebServices.Retorno.RetWS);

  memoRespWS.Lines.Text := UTF8Encode(ACBrNFe1.WebServices.Retorno.RetornoWS);

  LoadXML(MemoResp, WBResposta);

 

  MemoDados.Lines.Add('');

  MemoDados.Lines.Add('Envio NFe');

  MemoDados.Lines.Add('tpAmb: '+ TpAmbToStr(ACBrNFe1.WebServices.Retorno.TpAmb));

  MemoDados.Lines.Add('verAplic: '+ ACBrNFe1.WebServices.Retorno.verAplic);

  MemoDados.Lines.Add('cStat: '+ IntToStr(ACBrNFe1.WebServices.Retorno.cStat));

  MemoDados.Lines.Add('cUF: '+ IntToStr(ACBrNFe1.WebServices.Retorno.cUF));

  MemoDados.Lines.Add('xMotivo: '+ ACBrNFe1.WebServices.Retorno.xMotivo);

  MemoDados.Lines.Add('cMsg: '+ IntToStr(ACBrNFe1.WebServices.Retorno.cMsg));

  MemoDados.Lines.Add('xMsg: '+ ACBrNFe1.WebServices.Retorno.xMsg);

  MemoDados.Lines.Add('Recibo: '+ ACBrNFe1.WebServices.Retorno.Recibo);

  MemoDados.Lines.Add('Protocolo: '+ ACBrNFe1.WebServices.Retorno.Protocolo);

 

Respondido em:

 

Por favor, pergunto somente em um lugar e aguarde.

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

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

Respondido em:

 

Por favor, pergunto somente em um lugar e aguarde.

Boa tarde Régys, 

Procurei muito no forum e não achei nada que pudesse me ajudar na formação do TOKEN em produção, estou usando a rotina abaixo, em homologação o QR Code esta 100% vai direto pro portal e mostra o DANFE, mais quando inseri o TOKEN valido para produção o QR Code não gera correto, visualizo na pagina apenas "Mensagem de erro não especificada".

Agradeço qualquer ajuda, obrigado.

 

  if (ACBrNFe1.NotasFiscais.Items[0].NFe.ide.tpAmb = taHomologacao) then
  begin
    FIdToken := '000001';
  end;
  if (ACBrNFe1.NotasFiscais.Items[0].NFe.ide.tpAmb = taHomologacao) then
  begin
    FToken := Copy(ACBrNFe1.NotasFiscais.Items[0].NFe.Emit.CNPJCPF, 1, 8)+IntToStr(YearOf(Now))+'0001';
  end;
 
  if (ACBrNFe1.NotasFiscais.Items[0].NFe.ide.tpAmb = taProducao) then
  begin
    FIdToken := '000001'
  end;
  if (ACBrNFe1.NotasFiscais.Items[0].NFe.ide.tpAmb = taProducao) then
  begin
    FToken := 'gg1c75db59f4afb2fe792a0b6f2e1685';
  end;
 
 
  s_aux :='chNFe=<chaveacesso>'+
          '&nVersao=100'+
          '&tpAmb=<ambiente>'+
          IIf(ACBrNFe1.NotasFiscais.Items[0].NFe.Dest.CNPJCPF<>'', '&cDest=<cnpj_dest>', '')+
          '&dhEmi=<data_hora>'+
          '&vNF=<valor>'+
          '&vICMS=<valor_icms>'+
          '&digVal=<digito_val>'+
          '&cIdToken=<id_token><token>';
 
  s_aux := StringReplace(s_aux, '<chaveacesso>', SomenteNumeros(ACBrNFe1.NotasFiscais.Items[0].NFe.infNFe.ID), []);
  s_aux := StringReplace(s_aux, '<ambiente>', TpAmbToStr(ACBrNFe1.NotasFiscais.Items[0].NFe.Ide.tpAmb), []);
  s_aux := StringReplace(s_aux, '<data_hora>', dh_emi, []);
  s_aux := StringReplace(s_aux, '<valor>', StringReplace(FormatFloat('##,##0.00',ACBrNFe1.NotasFiscais.Items[0].NFe.Total.ICMSTot.vNF),',','.',[]),[] );
  s_aux := StringReplace(s_aux, '<valor_icms>', StringReplace(FormatFloat('##,##0.00',ACBrNFe1.NotasFiscais.Items[0].NFe.Total.ICMSTot.vICMS),',','.',[]),[] );
  s_aux := StringReplace(s_aux, '<digito_val>', StringToHex(ACBrNFe1.NotasFiscais.Items[0].NFe.signature.DigestValue), []);
  s_aux := StringReplace(s_aux, '<id_token>', FIdToken, []);
  s_aux := StringReplace(s_aux, '<cnpj_dest>', ACBrNFe1.NotasFiscais.Items[0].NFe.Dest.CNPJCPF, []);
 
  with TACBrEAD.Create(nil) do
  try
    s_hash := StringReplace(s_aux,'<token>',FToken,[]);
    s_hash := CalcularHash(s_hash, dgstSHA1);
  finally
    Free;
  end;
 
  s_aux :=  StringReplace(s_aux,'<token>', '',[]) + '&cHashQRCode='+s_hash;
  s_aux := GetSiteConsulta( CodigoParaUF(ACBrNFe1.NotasFiscais.Items[0].NFe.Ide.cUF), ACBrNFe1.NotasFiscais.Items[0].NFe.Ide.tpAmb ) +'?'+ s_aux;

;)O valor do homem é determinado, em primeira linha, pelo grau e pelo sentido em que se libertou do seu ego. A-E

Link para o comentário
Compartilhar em outros sites

 

Boa tarde Régys, 

Procurei muito no forum e não achei nada que pudesse me ajudar na formação do TOKEN em produção, estou usando a rotina abaixo, em homologação o QR Code esta 100% vai direto pro portal e mostra o DANFE, mais quando inseri o TOKEN valido para produção o QR Code não gera correto, visualizo na pagina apenas "Mensagem de erro não especificada".

Agradeço qualquer ajuda, obrigado.

 

  if (ACBrNFe1.NotasFiscais.Items[0].NFe.ide.tpAmb = taHomologacao) then
  begin
    FIdToken := '000001';
  end;
  if (ACBrNFe1.NotasFiscais.Items[0].NFe.ide.tpAmb = taHomologacao) then
  begin
    FToken := Copy(ACBrNFe1.NotasFiscais.Items[0].NFe.Emit.CNPJCPF, 1, 8)+IntToStr(YearOf(Now))+'0001';
  end;
 
  if (ACBrNFe1.NotasFiscais.Items[0].NFe.ide.tpAmb = taProducao) then
  begin
    FIdToken := '000001'
  end;
  if (ACBrNFe1.NotasFiscais.Items[0].NFe.ide.tpAmb = taProducao) then
  begin
    FToken := 'gg1c75db59f4afb2fe792a0b6f2e1685';
  end;
 
 
  s_aux :='chNFe=<chaveacesso>'+
          '&nVersao=100'+
          '&tpAmb=<ambiente>'+
          IIf(ACBrNFe1.NotasFiscais.Items[0].NFe.Dest.CNPJCPF<>'', '&cDest=<cnpj_dest>', '')+
          '&dhEmi=<data_hora>'+
          '&vNF=<valor>'+
          '&vICMS=<valor_icms>'+
          '&digVal=<digito_val>'+
          '&cIdToken=<id_token><token>';
 
  s_aux := StringReplace(s_aux, '<chaveacesso>', SomenteNumeros(ACBrNFe1.NotasFiscais.Items[0].NFe.infNFe.ID), []);
  s_aux := StringReplace(s_aux, '<ambiente>', TpAmbToStr(ACBrNFe1.NotasFiscais.Items[0].NFe.Ide.tpAmb), []);
  s_aux := StringReplace(s_aux, '<data_hora>', dh_emi, []);
  s_aux := StringReplace(s_aux, '<valor>', StringReplace(FormatFloat('##,##0.00',ACBrNFe1.NotasFiscais.Items[0].NFe.Total.ICMSTot.vNF),',','.',[]),[] );
  s_aux := StringReplace(s_aux, '<valor_icms>', StringReplace(FormatFloat('##,##0.00',ACBrNFe1.NotasFiscais.Items[0].NFe.Total.ICMSTot.vICMS),',','.',[]),[] );
  s_aux := StringReplace(s_aux, '<digito_val>', StringToHex(ACBrNFe1.NotasFiscais.Items[0].NFe.signature.DigestValue), []);
  s_aux := StringReplace(s_aux, '<id_token>', FIdToken, []);
  s_aux := StringReplace(s_aux, '<cnpj_dest>', ACBrNFe1.NotasFiscais.Items[0].NFe.Dest.CNPJCPF, []);
 
  with TACBrEAD.Create(nil) do
  try
    s_hash := StringReplace(s_aux,'<token>',FToken,[]);
    s_hash := CalcularHash(s_hash, dgstSHA1);
  finally
    Free;
  end;
 
  s_aux :=  StringReplace(s_aux,'<token>', '',[]) + '&cHashQRCode='+s_hash;
  s_aux := GetSiteConsulta( CodigoParaUF(ACBrNFe1.NotasFiscais.Items[0].NFe.Ide.cUF), ACBrNFe1.NotasFiscais.Items[0].NFe.Ide.tpAmb ) +'?'+ s_aux;

 

 

Bom dia, agora sem fazer quaisquer alteração nos fontes a tela de consulta mudou, agora mostra que o token não existe para o CNPJ.

 

divisor2.gif

ERRO

Codigo do TOKEN inexistente para o CNPJ 07212380 e cIdToken 000002

 

DADOS INFORMADOS Chave de Acesso: 51-1312-07.212.380/0001-77-65-001-000.000.083-100.000.083-7 Versão: 100 Ambiente: PRODUÇÃO Doc. Identificação do Consumidor: 96778865253 Data Hora Emissão: 2013-12-11T08:36:51-03:00 Valor Total da NF R$: 0.12  Valor Total do ICMS R$: 0.00  Código do XML: 3LE+5D2a2lALGWcCZAvkLS3GeGc= ID Token do Contribuinte: 000002 Código Hash dos Parâmetros: A80406FB209932AF9330C4CA4E2627470E43B051

 

divisor.gif

© Copyright 2001-2013 Secretaria de Estado de Fazenda de Mato Grosso - Todos os direitos reservados

;)O valor do homem é determinado, em primeira linha, pelo grau e pelo sentido em que se libertou do seu ego. A-E

Link para o comentário
Compartilhar em outros sites

 

Bom dia, agora sem fazer quaisquer alteração nos fontes a tela de consulta mudou, agora mostra que o token não existe para o CNPJ.

 

divisor2.gif

ERRO

Codigo do TOKEN inexistente para o CNPJ 07212380 e cIdToken 000002

 

DADOS INFORMADOS Chave de Acesso: 51-1312-07.212.380/0001-77-65-001-000.000.083-100.000.083-7 Versão: 100 Ambiente: PRODUÇÃO Doc. Identificação do Consumidor: 96778865253 Data Hora Emissão: 2013-12-11T08:36:51-03:00 Valor Total da NF R$: 0.12  Valor Total do ICMS R$: 0.00  Código do XML: 3LE+5D2a2lALGWcCZAvkLS3GeGc= ID Token do Contribuinte: 000002 Código Hash dos Parâmetros: A80406FB209932AF9330C4CA4E2627470E43B051

 

divisor.gif

© Copyright 2001-2013 Secretaria de Estado de Fazenda de Mato Grosso - Todos os direitos reservados

 

 

Boa noite amigos.

Apos enviar um email para [email protected] com o erro e os tokens que estava usando o problema se resolveu só.

Agora não sei se foi por intervenção da sefaz ou se o problema era generalizado e voltou a funcionar e isso foi uma consciência...

o importante é que resolveu.

;)O valor do homem é determinado, em primeira linha, pelo grau e pelo sentido em que se libertou do seu ego. A-E

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Boa tarde!

Pessoal estou com o mesmo problema de erro 100 Qr code invalido. Segue em anexo a URL e dados para calcular o hash

Bom dia!

Pessoal resolvido.

 

O problema era o seguinte a sefaz MT estava mantendo um token que estava revogado para a validação e não estava aceitando o token atual.

 

Obrigado a todos

Link para o comentário
Compartilhar em outros sites

  • Membros

Bom dia ... meu certificado é de SP, e sei que os links para SP ainda não foram disponibilizados.

Eu consigo realizar algum tipo de teste, com alguma UF que ja tenha disponibilizado os links utilizando o meu certificado ?

 

Obrigado.

 

Sérgio

Equipe ACBr Sérgio Assunção
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

[email protected]

Link para o comentário
Compartilhar em outros sites

Bom dia Pessoal,

 

Como foi falado nos tópicos acima, apenas em alguns estados já se pode emitir NFC-e, porém, gostaria de saber se existe alguma forma das empresas que estao nos outros estados iniciarem a alterações dos pdvs para atender a nfc-e, antes de a obrigatoriedade, para poupar nosso tempo no futuro...

 

Já comecei a ler alguns manuais, porém queria algumas dicas:

1- Posso iniciar o desenvolvimento/testes?

2- Posso criar um client para apontar para um dos WebServices do ambiente de desenvolvimento?

3- Como faço para obter um CNPJ válido? existe algum cadastro junto a SEFAZ?

 

Agradeço a atenção.

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Bom dia Pessoal,

 

Como foi falado nos tópicos acima, apenas em alguns estados já se pode emitir NFC-e, porém, gostaria de saber se existe alguma forma das empresas que estao nos outros estados iniciarem a alterações dos pdvs para atender a nfc-e, antes de a obrigatoriedade, para poupar nosso tempo no futuro...

 

Já comecei a ler alguns manuais, porém queria algumas dicas:

1- Posso iniciar o desenvolvimento/testes?

2- Posso criar um client para apontar para um dos WebServices do ambiente de desenvolvimento?

3- Como faço para obter um CNPJ válido? existe algum cadastro junto a SEFAZ?

 

Agradeço a atenção.

 

Estou vendo que é seu primeiro post, gostaria de convidá-lo a conhecer nossas

 

Veja que no tópico anterior ao que você postou, eu coloquei um link para uma matéria mostrando justamente o que você perguntou, o que me leva a crer que você não leu esse tópico.

Este tópico se lido do início ao fim vai tirar praticamente todas as suas dúvidas, e já temos outros tópicos também tratando desse mesmo assunto, por favor utiliza a ferramenta de pesquisa localizada logo acima no canto superior direito.

  • Curtir 1

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

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

 

Para quem ainda esta com problemas pra gerar o qrCode vou postar aqui da maneira que esta funcionando, pelo menos para o MT:

 

procedure TfrmDanfeECF.GerarQrCode;
var
  s_aux, dh_emi, s_hash: string;
begin
  dh_emi := GetUTC( CodigoParaUF(facbr.NotasFiscais.Items[0].NFe.Ide.cUF),
              StrToDateTime(FormatDateTime('dd/mm/yyyy',facbr.NotasFiscais.Items[0].NFe.Ide.dEmi)+' '+
              FormatDateTime('hh:mm:ss', facbr.NotasFiscais.Items[0].NFe.Ide.dEmi)));
  dh_emi := StrToHex( FormatDateTime('yyyy-mm-dd',facbr.NotasFiscais.Items[0].NFe.Ide.dEmi)+'T'+
              FormatDateTime('hh:mm:ss', facbr.NotasFiscais.Items[0].NFe.Ide.dEmi)+dh_emi );

  if (FAcbr.NotasFiscais.Items[0].NFe.ide.tpAmb = taHomologacao) then
  begin
    FIdToken := '000001';
  end;
  if (FAcbr.NotasFiscais.Items[0].NFe.ide.tpAmb = taHomologacao) then
  begin
    FToken := Copy(FAcbr.NotasFiscais.Items[0].NFe.Emit.CNPJCPF, 1, 8)+IntToStr(YearOf(Now))+'0001';
  end;

  s_aux :='chNFe=<chaveacesso>'+
          '&nVersao=100'+
          '&tpAmb=<ambiente>'+
          IIf(facbr.NotasFiscais.Items[0].NFe.Dest.CNPJCPF<>'', '&cDest=<cnpj_dest>', '')+
          '&dhEmi=<data_hora>'+
          '&vNF=<valor>'+
          '&vICMS=<valor_icms>'+
          '&digVal=<digito_val>'+
          '&cIdToken=<id_token><token>';

  s_aux := StringReplace(s_aux, '<chaveacesso>', SomenteNumeros(facbr.NotasFiscais.Items[0].NFe.infNFe.ID), []);
  s_aux := StringReplace(s_aux, '<ambiente>', TpAmbToStr(facbr.NotasFiscais.Items[0].NFe.Ide.tpAmb), []);
  s_aux := StringReplace(s_aux, '<data_hora>', dh_emi, []);
  s_aux := StringReplace(s_aux, '<valor>', StringReplace(FormatFloat('##,##0.00',facbr.NotasFiscais.Items[0].NFe.Total.ICMSTot.vNF),',','.',[]),[] );
  s_aux := StringReplace(s_aux, '<valor_icms>', StringReplace(FormatFloat('##,##0.00',facbr.NotasFiscais.Items[0].NFe.Total.ICMSTot.vICMS),',','.',[]),[] );
  s_aux := StringReplace(s_aux, '<digito_val>', StrToHex(facbr.NotasFiscais.Items[0].NFe.signature.DigestValue), []);
  s_aux := StringReplace(s_aux, '<id_token>', FIdToken, []);
  s_aux := StringReplace(s_aux, '<cnpj_dest>', facbr.NotasFiscais.Items[0].NFe.Dest.CNPJCPF, []);

  with TACBrEAD.Create(nil) do
  try
    s_hash := StringReplace(s_aux,'<token>',FToken,[]);
    s_hash := CalcularHash(s_hash, dgstSHA1);
  finally
    Free;
  end;

  s_aux :=  StringReplace(s_aux,'<token>', '',[]) + '&cHashQRCode='+s_hash;
  s_aux := GetSiteConsulta( CodigoParaUF(FAcbr.NotasFiscais.Items[0].NFe.Ide.cUF), FAcbr.NotasFiscais.Items[0].NFe.Ide.tpAmb ) +'?'+ s_aux;

  MontarQrCode(s_aux);

end;

Notem que, quando for gerar o hash, deve ser feito com IdToken e Com o Token, para homologação deve ser IdToken = '000001',

e Token, (primeiros 8 digitos do CNPJ)+Ano+0001. Quando for gerar o qrCode deve remover o "token" e deixar apenas o IdToken senão não vai fechar e vai retornar o erro 100.

 

pra quem tiver interesse segue uma string do qr_code funcionando.

http://homologacao.sefaz.mt.gov.br/nfce/consultanfce?chNFe=51131115319954000139650050000001031175076630&nVersao=100&tpAmb=2&dhEmi=323031332D31312D30375431363A33343A35322D30333A3030&vNF=111.01&vICMS=19.98&digVal=486256502F3478596278784230314470377466474E4151356949553D&cIdToken=000001&cHashQRCode=56A39A17537CAB21C1632887C332BE95CD1BD51F

Abaixo a string sob a qual foi gerado o hash

STRING:
chNFe=51131115319954000139650050000001031175076630&nVersao=100&tpAmb=2&dhEmi=323031332D31312D30375431363A33343A35322D30333A3030&vNF=111.01&vICMS=19.98&digVal=486256502F3478596278784230314470377466474E4151356949553D&cIdToken=0000011531995420130001


HASH: 
56A39A17537CAB21C1632887C332BE95CD1BD51F

Olá, poderias postar o MontarQrCode(s_aux), só ta pendente a geração desse qrcode não consegui identificar esse MontarQrCode(s_aux);

Grato.

Link para o comentário
Compartilhar em outros sites

Bom dia,

 

 esta função corresponde a função utilizada para gerar o QrCode, eu alterei aqui então não vou ter a mesma função, no entanto vou te passar a unit que utilizo pra gerar o qrcode utilizando o ZintBarcode.

unit uQrCode;

interface

uses
  SysUtils, uZintBarcode, Graphics;

type
  TxpQrCode = class
  private
    FQrCode: TBitmap;
  public
    function GerarQrCode(Valor: string): Boolean;
    destructor Destroy; override;
    property QrCode: TBitmap read FQrCode write FQrCode;
  end;

implementation

{ TQrCode }

destructor TxpQrCode.Destroy;
begin
  if Assigned(FQrCode) then
    FQrCode.Free;
  inherited;
end;

function TxpQrCode.GerarQrCode(Valor: string): Boolean;
var
  zint: TZintBarcode;
begin
  zint := TZintBarcode.Create;
  if not Assigned(FQrCode) then
    FQrCode := TBitmap.create;
  try
    zint.Data := Valor;
    zint.BarcodeType := tBARCODE_QRCODE;
    zint.GetBarcode( FQrCode );
    Result := True;
  finally
    zint.Free;
  end;
end;

end.

exemplo de uso:

  qrcode := TxpQrCode.Create;
  try
    if qrcode.GerarQrCode( s_aux ) then
      qrcode.QrCode.SaveToFile(ExtractFilePath(ParamStr(0))+'qrcode_temp.bmp');
  finally
    qrcode.Free;
  end;
Link para o comentário
Compartilhar em outros sites

Pessoal venho a agradecer aqui a todos que postaram duvidas/resolucoes de problemas apresentado no desenvolvimento do NFC-e.

baseando-se nisso consegui efetuar os testes em homologacao de primeira =D.

 

agora estou efetuando as validacoes de campos e alguns detalhes, mais ja esta ok a NFC-e ( MT ) .

 

Muito obrigado a todos.

  • Curtir 3
Link para o comentário
Compartilhar em outros sites

Pessoal venho a agradecer aqui a todos que postaram duvidas/resolucoes de problemas apresentado no desenvolvimento do NFC-e.

baseando-se nisso consegui efetuar os testes em homologacao de primeira =D.

 

agora estou efetuando as validacoes de campos e alguns detalhes, mais ja esta ok a NFC-e ( MT ) .

 

Muito obrigado a todos.

O meu projeto NFC-e esta rodando 100% em produção, tbm fiquei muito grato e satisfeito com o forum do Projeto, parabéns a todos e estou a disposição para ajudar a quem ainda esta desenvolvendo...

  • Curtir 1

;)O valor do homem é determinado, em primeira linha, pelo grau e pelo sentido em que se libertou do seu ego. A-E

Link para o comentário
Compartilhar em outros sites

 

Status Código : 767

Status Descrição : Rejeicao: NFC-e com somatorio dos pagamentos diferente do total da Nota Fiscal
 
meu xml esta correto tem apenas 2 item e não consigo resolver esse problema, a somatória esta correta mais permanece isso alguem ja pasosu por isso?

 

 

poste o XML

Link para o comentário
Compartilhar em outros sites

Pagamentos:

<pag>
   <tPag>03</tPag>
   <vPag>139.80</vPag>
   </pag>
<pag>
   <tPag>03</tPag>
   <vPag>139.80</vPag>
</pag>

Total:

<total>
  <vNF>139.80</vNF>
</total>

Você está gerando duas vezes as tag "pag" e a soma delas difere do total.

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 3553 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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.

The popup will be closed in 10 segundos...