Ir para conteúdo
  • Cadastre-se

dev botao

Recommended Posts

  • Membros Pro
Postado

Olá a todos, existe algum problema de System Exception no ACBrTEFAPI, neste post vou descrever como simular, e postar algumas imagens

Estou com os Fontes do ACBRTEF Atualizados, usando a DLL da Paygo 5.1.30.0 (Em Debug)

1 - Abrir o Demo do TEFAPI para Delphi, e compilar em DEBUG (Erro passa despecebido se compilado em RELEASE)

2 - Configurar o TEFAPI e Realizar uma Operação de Testes (Botão TESTAR TEF)

Aqui tudo vai ocorrer bem, a DLL de Debug será carregada, os testes irão acontecer, a aplicação vai imprimir os comprovantes (sem nenhuma informação)

3 - Ao fechar a Aplicação começam a aparecer os erros, na sequencia abaixo dos arquivos anexados:
1º a imagem 3.1 -> Debug Exception Notification
2º a imagem 3.2 -> system excpetion (code 0xc0000008) at 0xc7cd14ba
3º a imagem 3.3 ->  tela do Delphi mostrando o erro de instrução na CPU

4 - Já tentei adicionar ao DEMO a instrução -> initialization ReportMemoryLeaksOnShutdown := true; na tentativa de achar algum erro, mais não consegui nada

5 - Eu acredito que o problema está na escrita em disco (ou delete) do arquivo de backup (ACBr_00x.Tef) , porque? se realizar os passos 1 e 2 varias vezes são criados varios arquivos de backup e os mesmos não estão sendo apagados (imagem 5.1)


Considerações finais
Como descrito acima o erro não é visível quando a aplicação está em RELEASE, mas usando o projeto ACBrTEFAPI em nossa aplicação, começamos a detectar travamentos, lentidões (quando iniciava transação TEF), e erros de acesso ao PINPAD todos esses na re-homologação do TEF para a nova DLL da Paygo, e procurando o problema encontramos  o exe de nossa aplicação "preso" no gerenciador de tarefas do Windows, executando em Debug nos deparamos com o erro relatado no ponto 3, daí quando partimos para o DEMO, encontramos o mesmo erro.

Em algum determinando momento procurando pelo erro, ao iniciarmos a trasanção TEF, recebemos o erro de acesso ao diretorio c:\manager\tef (nosso diretorio TEF de trabalho), e foi aí que percebi que os arquivos de backup também são salvos neste diretorio, então comecei a acreditar que pode ser o WARSAM que está bloqueando este diretorio em algum  momento, e o Projeto ACBrTEFAPI não está conseguindo escrever dados no mesmo diretorio e com isto ocasionando o erro. Procuramos a opção de alterar o diretorio do arquivo de backup (assim como existe a opção de alterar o arquivo de log), na tentativa de resolver o problema, mais esta opção não existe no ACBrTEFAPI, então resolvi compatilhar com a comunidade na tentativa de alguem testar em suas maquinas de desenvolvimento e se realmente o erro existir, tentamos alterar o projeto ACBrTEFAPI para escrever seus arquivos backups em uma pasta dirente da usada pela Paygo para salvar seus logs, certificados, arquivos, etc.
 

fico no aguardo de pelo menos alguém realizando os passos 1 e 2 e verificando se o problema realmente existe

Obrigado desde já

imagem 3.1.png

imagem 3.2.png

imagem 3.3.png

imagem 5.1.png

  • Fundadores
Postado

No Demo do ACBr, rodando na IDE, observe no Log, se ele realmente carregou a DLL da pasta Debug...

Em sua aplicação de Produção, certifique-se de que o Componente é inicializado no Início da Aplicação e Desinicializado apenas quando a aplicacao fecha

O sintoma da pasta Presa, e a Proteção da DLL ainda ativa, o que indica que o componente não for Desinicializado

Há ainda a possibilidade de você adotar a DLL intermediaria, sem a proteção do Warsaw...

Veja esse link: https://projetoacbr.com.br/tef/comunicado/

(Se for adotar a DLL intermediaria, por favor remova o PayGo Windows antes) 

 

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

  • Membros Pro
Postado

1 - No Demo do ACBr, rodando na IDE, observe no Log, se ele realmente carregou a DLL da pasta Debug...

Sim olhei aqui e ele está carregando a DLL debug (vou anexar o log do teste que acabei de realizar, e o erro que relatei acima aconteceu novamente)

05/08/24 07:38:07:672 - Inicializar
05/08/24 07:38:07:681 - TACBrTEFPGWebAPI.SetDiretorioTrabalho( c:\manager\tef\PGWeb )
05/08/24 07:38:07:689 - TACBrTEFPGWebAPI.Inicializar
05/08/24 07:38:07:701 - LibFullName: Usando Path da Váriável de Ambiente "PathPGWebLib": C:\Program Files (x86)\PayGo\PGWebLib\DEBUG\PGWebLib.dll
05/08/24 07:38:07:707 - TACBrTEFPGWebAPI.LoadDLLFunctions - C:\Program Files (x86)\PayGo\PGWebLib\DEBUG\PGWebLib.dll

2- Em sua aplicação de Produção, certifique-se de que o Componente é inicializado no Início da Aplicação e Desinicializado apenas quando a aplicacao fecha
O sintoma da pasta Presa, e a Proteção da DLL ainda ativa, o que indica que o componente não for Desinicializado

Ok Daniel vou me certificar se estou inicializando e desinicializando o componente corretamente


Daniel ou outra pessoa da comunidade, seria possível realizar vocÊs realizarem o teste que descrevi no DEMO do ACBr, para verificar se realmente o Componente está causando o erro de instrução na CPU? 

LogTEFAPIDemo.txt

  • Membros Pro
Postado (editado)

Mais informações, mais um teste

realmente eu estava fechando o DEMO do ACBr como ACBrTEFAPI inicializado, então adicionei no onClose do FrPrincipal 

 if ACBrTEFAPI1.Inicializado then
    ACBrTEFAPI1.DesInicializar;

Ele entrou nesta condição quando eu cliquei no botão de fechar, executou o desinicializar, e voltou para o delphi com o mesmo erro de system exception e  os arquivos de Backup ainda não foram apagados...


PS.: na aplicação da empresa já existe o código acima relatado 

Editado por marcelosantos
  • Fundadores
Postado
2 horas atrás, marcelosantos disse:

Daniel ou outra pessoa da comunidade, seria possível realizar vocÊs realizarem o teste que descrevi no DEMO do ACBr, para verificar se realmente o Componente está causando o erro de instrução na CPU? 

Eu não compreendi muito bem os passos...

Seriam essas instruções ?

Em 03/08/2024 at 06:34, marcelosantos disse:

1 - Abrir o Demo do TEFAPI para Delphi, e compilar em DEBUG (Erro passa despecebido se compilado em RELEASE)

2 - Configurar o TEFAPI e Realizar uma Operação de Testes (Botão TESTAR TEF)

Aqui tudo vai ocorrer bem, a DLL de Debug será carregada, os testes irão acontecer, a aplicação vai imprimir os comprovantes (sem nenhuma informação)

3 - Ao fechar a Aplicação começam a aparecer os erros, na sequencia abaixo dos arquivos anexados:
1º a imagem 3.1 -> Debug Exception Notification
2º a imagem 3.2 -> system excpetion (code 0xc0000008) at 0xc7cd14ba
3º a imagem 3.3 ->  tela do Delphi mostrando o erro de instrução na CPU

@antonio.carlos, @Pedro Frayman, conseguem reproduzir ?

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

  • Membros Pro
Postado

Exato, são estes mesmos

simplesmente execultar o DEMO em DEBUG por dentro da IDE, executar um teste de TEF (Botão TESTAR TEF), e quando este finalizar, clicar no botão de fechar o DEMO

Fontes Atualizados, sem nenhuma alteração

No DEMO apenas incluí no onClose do Form, mais pode realizar o teste com/sem essas 2 linhas que o erro acontece aqui
 

 if ACBrTEFAPI1.Inicializado then
    ACBrTEFAPI1.DesInicializar;
  • Membros Pro
Postado
24 minutos atrás, antonio.carlos disse:

Realizando os testes.. Logo daremos um retorno @marcelosantos
@marcelosantos só por desencargo, não existe nenhuma alteração local dos fontes ACBr e esta com ele atualizado certinho ?

Fontes atualizados, sem nenhuma alteração

Paygo na Versão 5.1.30.0
PGWebLib na versão 4.1.30.0

apenas essas 2 linhas adicionadas no DEMO no evento onClose do Form Principal, mas o erro aqui acontece com ou sem elas 2

if ACBrTEFAPI1.Inicializado then
    ACBrTEFAPI1.DesInicializar;
  • Curtir 1
  • Consultores
Postado

Bom dia, Marcelo. Tudo bem?


Criei o mesmo cenário aqui em duas máquinas, onde não consegui obter tal erro.

1 - Atualizei os fontes do ACBR;
2 - Compilei em debug no Delphi 12:
3 - Apontei para o TEF Paygo;
4 - Selecionei a opção "Testar TEF";
5 - Fechei a aplicação.

Também testei selecionando o botão "Operações" (forçando o carregamento da DLL) no passo 4.

Nenhum erro foi retornado em ambos os cenários.


Foi esse o processo que você realizou?

  • Curtir 1
  • Moderadores
Postado
34 minutos atrás, marcelosantos disse:

Fontes atualizados, sem nenhuma alteração

Paygo na Versão 5.1.30.0
PGWebLib na versão 4.1.30.0

apenas essas 2 linhas adicionadas no DEMO no evento onClose do Form Principal, mas o erro aqui acontece com ou sem elas 2

if ACBrTEFAPI1.Inicializado then
    ACBrTEFAPI1.DesInicializar;

Delphi 7 ?

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

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

 

  • Membros Pro
Postado (editado)
29 minutos atrás, Pedro Frayman disse:

Bom dia, Marcelo. Tudo bem?


Criei o mesmo cenário aqui em duas máquinas, onde não consegui obter tal erro.

1 - Atualizei os fontes do ACBR;
2 - Compilei em debug no Delphi 12:
3 - Apontei para o TEF Paygo;
4 - Selecionei a opção "Testar TEF";
5 - Fechei a aplicação.

Também testei selecionando o botão "Operações" (forçando o carregamento da DLL) no passo 4.

Nenhum erro foi retornado em ambos os cenários.


Foi esse o processo que você realizou?

Ok Pedro, é exatamente este os passos, a unica diferença no seu teste foi a versão do Delphi

Vou criar um novo ambiente de desenvolvimento, com um computador diferente, e dou retorno aqui, muito obrigado

Deixo aqui apenas 1 pergunta, se você realizar varias vezes os arquivos de backup são apagados?  (conforme citei no ponto 5 da primeira mensagem deste tópico) - vou anexar a imagem novamente, para explicar este ponto

 

Captura de tela 2024-08-05 113017.png

Editado por marcelosantos
  • Moderadores
Postado
1 minuto atrás, marcelosantos disse:

Ok Pedro, é exatamente este os passos, a unica diferença no seu teste foi a versão do Delphi

Vou realizar criar um novo ambiente de desenvolvimento, com um computador diferente e dou retorno aqui, muito obrigado

Deixo aqui apenas 1 pergunta, se você realizar varias vezes os arquivos de backup são apagados?  (conforme citei no ponto 5 da primeira mensagem deste tópico) - vou anexar a imagem novamente, para explicar este ponto

 

Captura de tela 2024-08-05 113017.png

eles devem ser apagados. mas eles apagam assim que é finalizado o pagamento tef corretamente

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

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

 

  • Membros Pro
Postado (editado)
7 minutos atrás, Juliomar Marchetti disse:

eles devem ser apagados. mas eles apagam assim que é finalizado o pagamento tef corretamente

Sim eles são apagos se eu realizar uma operação de pagamento.

O detalhe é que na impressão ele vai imprimir cada operação que estiver no Backup, neste caso não há problema, porque na impressão não há nenhum caracter (apenas quebra de linha) e posso tratar isso antes de imprimir, mas achei que o meu problema de system exception estava justamente nesta função (de apagar o arquivo)

Ou seja, você está me confirmando que o comportamento normal hoje é  se eu realizar varios testes os arquivos vão ficando 1 por 1?

Editado por marcelosantos
  • Moderadores
Postado

Não.

se tu iniciar uma venda. e fizer os pagamentos dela. e fechar com o tef correto ele deve eliminar o backup pois o mesmo só existe enquanto a transação não foi confirmada.

quando ela é confirmada deve ser eliminado.

sem precisar iniciar outra venda ou fechar o sistema

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

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

 

×
×
  • 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.