Usamos o ACBrTEFAPI sem confirmação automática, em uma nova aplicação nossa, ainda em fase de desenvolvimento.
Ao tentar autorizar um pagamento em cartão de crédito, componente solicita seleção da Rede Autorizadora, depois pede cartão e senha. Em seguida o Pay&Go retorna TRANSACAO PENDENTE.
Implementamos um tratamento de pendências no evento QuandoDetectarTransacaoPendente. Nossa aplicação espera que, durante a inicialização do componente, esse evento seja disparado, caso exista alguma transação pendente. Nesse caso, o componente inicializa, não detecta pendência (não dispara evento), e então aplicação prossegue com a autorização de pagamento.
Depois do retorno de TRANSACAO PENDENTE do Pay&Go, componente dispara o evento QuandoDetectarTransacaoPendente, mas o parâmetro RespostaTEF, passado pelo evento, vem vazio. Em anexo o trecho do nosso event handler (TForm1.ACBrTEFAPI1QuandoDetectarTransacaoPendente.pas), escrevendo os dados de RespostaTEF para um arquivo texto, e o arquivo texto contendo os dados de RespostaTEF (dadostransacao.txt).
Pelo que parece, o componente não conseguiu manter seu estado de "transação pendente" sincronizado com o Pay&Go, ou o ambiente de teste do Pay&Go está com algum problema, reportando pendência inexistente. Componente só dispararia o evento QuandoDetectarTransacaoPendente, na sua inicialização, quando tiver esse estado de pendência em seus arquivos temporários, correto? Método LimparRespostasTEF() limpa esse estado? Seguindo ACBrTEFAPI_Demo, estamos chamando LimparRespostasTEF() depois do método Inicializar(). Deveríamos fazer isso?
Queria saber se esse estado de "pendência no Pay&Go", que não é detectada na inicialização do ACBrTEFAPI, é um bug no ambiente de testes do Pay&Go, ou se devemos tratar esse caso em produção. Se for para tratar, como devemos fazer? Com RespostaTEF retornando vazio, não temos como decidir se a transação deve ser confirmada ou desfeita. Deveríamos desfazer sempre?
Em anexo os logs presentes nos diretórios de trabalho do componente e da PGWebLib.dll. Testei com a revision 24534 do ACBr (de 06/02/2022), e PGWebLib.dll v4.1.15.1 . Aplicação feita no Delphi 10.4.
TForm1.ACBrTEFAPI1QuandoDetectarTransacaoPendente.pas
dadostransacao.txt
ACBRTEFAPI.log
comms_220216.log
ppsers_220216.log