Ir para conteúdo
  • Cadastre-se

dev botao

Erro ao assinar NFce apos usar o TEF


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

Recommended Posts

Boa noite, estou tendo um erro peculiar e não consegui encontrar a causa dele... temos uma aplicação PDV e estamos migrando o tef do Pay&Go para o Pay&GoWeb.

Depois de enviar um cupom, passando pela autorização do TEF, etc... o segundo cupom da erro de memória no momento de assinar... se eu fechar a aplicação e abrir novamente ele envia mais um cupom normalmente... caso eu não chame o TEF e só realize operações em DH ou POS, ele tambem funciona normalmente... realmente não sei aonde pode estar o problema... no momento de assinar uso o seguinte metodo, logo depois de preencher o componente com as informações do cupom.
DM.ACBrNFe1.NotasFiscais.GerarNFe;
DM.ACBrNFe1.NotasFiscais.Assinar;

WhatsApp Image 2022-05-19 at 20.09.18 (1).jpeg

WhatsApp Image 2022-05-19 at 20.09.18.jpeg

Link para o comentário
Compartilhar em outros sites

11 horas atrás, Juliomar Marchetti disse:

Precisamos de mais informações.

está inicializando e finalizando a dll do tef a cada chamada?

O estranho é que eu posso passar quantos TEFs eu quiser... ele sempre vai comunicar certinho... mas quando o TEF foi inicializado, o cupom para de assinar na função ACBrNFe1.NotasFiscais.Assinar... tentei seguir oque ele faz no componente, mas me pareceu normal... e algum momento simplesmente da o erro de memória.

a cada chamada eu testo se ela esta inicializada, se não tiver eu inicializo ela, o bloco do TEF é basicamente esse aqui:

 

//****************************************************************************
     // VALIDAÇÃO PARA O TEF
     if (FDQueryFinfintipo.AsString='TEF')
        then
            begin
                 //inicia o TEF
                 //DM.ACBrTEFD1.TEFCliSiTef.OnObtemCampo

                 try
                    if not DM.ACBrTEFD1.Inicializado then DM.ACBrTEFD1.Inicializar(TACBrTEFDTipo(gpPayGoWeb));
                 except
                       on E : Exception do
                       begin
                            Mensagem(E.Message,Informacao);
                       end;
                 end;

                 {if not(DM.ACBrTEFD1.Inicializado(TACBrTEFDTipo(gpPayGoWeb)))
                    then raise Exception.Create('TEF não inicializado.'); }

                 //chama o PayGo
                 DM.estadoSimuladoEcf := stsIniciada;

                 //DM.VerificarTestePayGo(cbTestePayGo.Text);

                 DM.AtualizaIndiceTEF(IndicePagto);
                 //mensagem(FloatToStr(StrToFloatDef(EditRestante.Text, 0)),informacao);

                 valor := NumeroSemMascara(EditRestante.Text);
                 //DM.estadoSimuladoEcf := stsAguardandoTEF;

                 FormPrincipal.MemoPainel.Text := 'INFORMAÇÃO NO PINPAD.';

                 StatusTransacao := DM.ACBrTEFD1.CRT( valor , '01');
                 //StatusTransacao := DM.ACBrTEFD1.CRT( StrToFloatDef(EditRestante.Text, 0) , '01');
                 DM.estadoSimuladoEcf := stsEmPagamento;

                 if StatusTransacao then
                  begin
                    Inc(IndiceTransacaoTef);
                    UltResp := DM.ACBrTEFD1.RespostasPendentes[DM.ACBrTEFD1.RespostasPendentes.Count-1];

                    FDQueryPagpagtefcnpj.AsString:=UltResp. NFCeSAT.CNPJCredenciadora;
                    FDQueryPagpagteftband.AsString:=UltResp.CodigoRedeAutorizada;
                    FDQueryPagpagtefcaut.AsString:=UltResp.CodigoAutorizacaoTransacao;
                    FDQueryPagpagtefnsu.AsString:=UltResp.NSU;
                    FDQueryPagpagtefrede.AsString:=UltResp.Rede;

                    DM.ACBrTEFD1.ConfirmarTransacoesPendentes(False);

                  end
                 else
                  begin
                    Application.MessageBox('Transação Negada', 'Informação', MB_OK + MB_ICONWARNING);
                    DM.ACBrTEFD1.CancelarTransacoesPendentes;
                    abort;
                  end;

                  //DM.ACBrTEFD1.DesInicializar(TACBrTEFDTipo(gpPayGoWeb));
            end;

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

  • Moderadores
  • Solution
1 hora atrás, Lowry David disse:

O estranho é que eu posso passar quantos TEFs eu quiser... ele sempre vai comunicar certinho... mas quando o TEF foi inicializado, o cupom para de assinar na função ACBrNFe1.NotasFiscais.Assinar... tentei seguir oque ele faz no componente, mas me pareceu normal... e algum momento simplesmente da o erro de memória.

a cada chamada eu testo se ela esta inicializada, se não tiver eu inicializo ela, o bloco do TEF é basicamente esse aqui:

 

//****************************************************************************
     // VALIDAÇÃO PARA O TEF
     if (FDQueryFinfintipo.AsString='TEF')
        then
            begin
                 //inicia o TEF
                 //DM.ACBrTEFD1.TEFCliSiTef.OnObtemCampo

                 try
                    if not DM.ACBrTEFD1.Inicializado then DM.ACBrTEFD1.Inicializar(TACBrTEFDTipo(gpPayGoWeb));
                 except
                       on E : Exception do
                       begin
                            Mensagem(E.Message,Informacao);
                       end;
                 end;

                 {if not(DM.ACBrTEFD1.Inicializado(TACBrTEFDTipo(gpPayGoWeb)))
                    then raise Exception.Create('TEF não inicializado.'); }

                 //chama o PayGo
                 DM.estadoSimuladoEcf := stsIniciada;

                 //DM.VerificarTestePayGo(cbTestePayGo.Text);

                 DM.AtualizaIndiceTEF(IndicePagto);
                 //mensagem(FloatToStr(StrToFloatDef(EditRestante.Text, 0)),informacao);

                 valor := NumeroSemMascara(EditRestante.Text);
                 //DM.estadoSimuladoEcf := stsAguardandoTEF;

                 FormPrincipal.MemoPainel.Text := 'INFORMAÇÃO NO PINPAD.';

                 StatusTransacao := DM.ACBrTEFD1.CRT( valor , '01');
                 //StatusTransacao := DM.ACBrTEFD1.CRT( StrToFloatDef(EditRestante.Text, 0) , '01');
                 DM.estadoSimuladoEcf := stsEmPagamento;

                 if StatusTransacao then
                  begin
                    Inc(IndiceTransacaoTef);
                    UltResp := DM.ACBrTEFD1.RespostasPendentes[DM.ACBrTEFD1.RespostasPendentes.Count-1];

                    FDQueryPagpagtefcnpj.AsString:=UltResp. NFCeSAT.CNPJCredenciadora;
                    FDQueryPagpagteftband.AsString:=UltResp.CodigoRedeAutorizada;
                    FDQueryPagpagtefcaut.AsString:=UltResp.CodigoAutorizacaoTransacao;
                    FDQueryPagpagtefnsu.AsString:=UltResp.NSU;
                    FDQueryPagpagtefrede.AsString:=UltResp.Rede;

                    DM.ACBrTEFD1.ConfirmarTransacoesPendentes(False);

                  end
                 else
                  begin
                    Application.MessageBox('Transação Negada', 'Informação', MB_OK + MB_ICONWARNING);
                    DM.ACBrTEFD1.CancelarTransacoesPendentes;
                    abort;
                  end;

                  //DM.ACBrTEFD1.DesInicializar(TACBrTEFDTipo(gpPayGoWeb));
            end;

vi seu erro aqui.

inicie o TEF quando abrir sua aplicação e só desicialize quando fechar ela.

não é uma boa prática ficar a todo  momento por isso ocasiona erros.

54 minutos atrás, Lowry David disse:

pra dar mais informção, essas são as configurações que eu estou usando para o TEF e para o processo do XML.

image.png.854995ac9af6ac8cdd67b12b73f6b7e7.png

Aqui se livre do Capicom, use o WinCrypt

pois de nada adianta ali o TLS 1.2 se for capicom , terá que alterar manualmente lá no I.E.

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

2 minutos atrás, Juliomar Marchetti disse:

vi seu erro aqui.

inicie o TEF quando abrir sua aplicação e só desicialize quando fechar ela.

não é uma boa prática ficar a todo  momento por isso ocasiona erros.

Aqui se livre do Capicom, use o WinCrypt

pois de nada adianta ali o TLS 1.2 se for capicom , terá que alterar manualmente lá no I.E.

entendi e faz sentido... vou tentar fazer isso aqui agora

Link para o comentário
Compartilhar em outros sites

Bom dia @Juliomar Marchetti, muito obrigado pela ajuda!!!! funcionou demais!
Eu já tinha tentado o processo da inicialização mas ai ele não funcionava nem no envio da primeira NFCe... o problema de fato eatava no conjunto de configurações para a assinatura... para funcionar direitinho eu precisei pegar a pasta de Schemas do projeto ACBr... os que a receita disponibiliza não funcionam direito e dão erro...

Mas fora isso, ficou 100%, acredito que a conxeão da paygoweb mude algo nas configurações de segurança da maquina e ai o capicom deixa de funcionar.

 

image.png.369a7bee3739b054c6aad2ceb5370a0b.png

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

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