Membros Pro marcelosantos Postado 3 Agosto Membros Pro Postado 3 Agosto 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á
Fundadores Daniel Simoes Postado 5 Agosto Fundadores Postado 5 Agosto 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) Daniel Simões de Almeida O melhor TEF, é com o Projeto ACBr - Clique e Conheça Ajude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (15)99790-2976.
Membros Pro marcelosantos Postado 5 Agosto Autor Membros Pro Postado 5 Agosto 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 marcelosantos Postado 5 Agosto Autor Membros Pro Postado 5 Agosto (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 5 Agosto por marcelosantos
Fundadores Daniel Simoes Postado 5 Agosto Fundadores Postado 5 Agosto 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 ? Daniel Simões de Almeida O melhor TEF, é com o Projeto ACBr - Clique e Conheça Ajude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (15)99790-2976.
Consultores antonio.carlos Postado 5 Agosto Consultores Postado 5 Agosto 3 minutos atrás, Daniel Simoes disse: Eu não compreendi muito bem os passos... Seriam essas instruções ? @antonio.carlos, @Pedro Frayman, conseguem reproduzir ? 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 ?
Membros Pro marcelosantos Postado 5 Agosto Autor Membros Pro Postado 5 Agosto 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 marcelosantos Postado 5 Agosto Autor Membros Pro Postado 5 Agosto 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; 1
Consultores Pedro Frayman Postado 5 Agosto Consultores Postado 5 Agosto 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? 1
Moderadores Juliomar Marchetti Postado 5 Agosto Moderadores Postado 5 Agosto 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 ? Juliomar Marchetti skype: juliomar telegram: juliomar e-mail: [email protected] http://www.juliomarmarchetti.com.br
Membros Pro marcelosantos Postado 5 Agosto Autor Membros Pro Postado 5 Agosto (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 Editado 5 Agosto por marcelosantos
Moderadores Juliomar Marchetti Postado 5 Agosto Moderadores Postado 5 Agosto 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 eles devem ser apagados. mas eles apagam assim que é finalizado o pagamento tef corretamente Juliomar Marchetti skype: juliomar telegram: juliomar e-mail: [email protected] http://www.juliomarmarchetti.com.br
Membros Pro marcelosantos Postado 5 Agosto Autor Membros Pro Postado 5 Agosto 2 minutos atrás, Juliomar Marchetti disse: Delphi 7 ? Não, Delphi 10.2
Membros Pro marcelosantos Postado 5 Agosto Autor Membros Pro Postado 5 Agosto (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 5 Agosto por marcelosantos
Moderadores Juliomar Marchetti Postado 5 Agosto Moderadores Postado 5 Agosto 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 Juliomar Marchetti skype: juliomar telegram: juliomar e-mail: [email protected] http://www.juliomarmarchetti.com.br
Recommended Posts