Ir para conteúdo
  • Cadastre-se

Erro ao assinar NFce apos usar o TEF


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

Recommended Posts

Postado

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

  • Consultores
Postado

Precisamos de mais informações.

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

 

Consultora ACBr Pro

Juliomar Marchetti

Ajude o Projeto ACBr crescer - Seja Pro

discord: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br

 

MVP_NewLogo_100x100_Transparent-02.png
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Postado (editado)
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
  • Consultores
  • Solution
Postado
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.

 

Consultora ACBr Pro

Juliomar Marchetti

Ajude o Projeto ACBr crescer - Seja Pro

discord: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br

 

MVP_NewLogo_100x100_Transparent-02.png
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Postado
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

Postado

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
  • Consultores
Postado

Obrigado por reportar.

Fechando. Para novas dúvidas, criar um novo tópico.

 

Consultora ACBr Pro

Juliomar Marchetti

Ajude o Projeto ACBr crescer - Seja Pro

discord: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br

 

MVP_NewLogo_100x100_Transparent-02.png
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

  • Este tópico foi criado há 1503 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...
The popup will be closed in 10 segundos...