Ir para conteúdo
  • Cadastre-se

dev botao

Erro na inicilização do TEF com o modo "IsDebug" ativado


Clipeus
Ver Solução Respondido por Daniel Simoes,

Recommended Posts

  • Membros Pro

Conforme relatado no discord, ao configurar o componente TACBrTEFAPI para habilitar o modo Debug, através da propriedade "IsDebug", não é possível efetuar a inicialização do TEF.

A inicialização só é possível se for editado manualmente a variável de ambiente "PathPGWebLib" para apontar também para a pasta "DEBUG".

Segue arquivo de log com teste feito pelo Demo do ACBr

LogTEF.txt

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

  • Fundadores

@Clipeus,

A Setis confirmo que realmente será necessário editar a variável de ambiente para usar a versão Debug...

Não era assim antes... ;/

Vou ajustar nos fontes do ACBr e subir no SVN para que ele mesmo ajuste a variável quando IsDebug estiver ligado ou desligado

  • Curtir 2
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.

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois ...
  • Membros Pro

Olá, consigo usar essa propriedade no acbrtefd? Se sim como? Pois preciso Re homologar e no debug estou tendo problemas de erro de comunicação e em release estou tendo problema em erro de ssl não sei se o Acbr está usando a dll de sandbox imagino que seja isso como resolver? 

Outra dúvida é na minha instalação da dll não tenho essa pasta debug e baixei direto do site da Paygo o instalador alguém tem o link correto? 

Link para o comentário
Compartilhar em outros sites

  • Fundadores

@simons, atualizei no tópico

Se você ainda usa o ACBrTEFD

{$IFDEF DEBUG}    
 if (ACBrTEFD1.GPAtual = gpPayGoWeb) then
 begin
   ACBrTEFD1.TEFPayGoWeb.PGWebAPI.IsDebug := True;
 end;
{$ENDIF}

 

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.

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

@Daniel Simoes hoje notei que o componente não estava alterando novamente a variável para a pasta "DEBUG", e, após fazer alguns testes constatei o seguinte:

No constructor da TACBrTEFPGWebAPI ( ACBrTEFPayGoWebComum.pas ), há a seguinte instrução:

  {$IfDef DEBUG}
   fIsDebug := True;
  {$Else}
   fIsDebug := False;
  {$EndIf}

Aparentemente está certo, pois se identificar que está compilando em modo debug, a variável já é iniciada de forma correspondente.

Porém, como está acessando diretamente a variável "fIsDebug", o método "SetIsDebug" não é executado, e, com isso, não ocorre a mudança no path da lib, que é feito apenas através do "SetIsDebug".

Alterei o trecho para:
 

  {$IfDef DEBUG}
   IsDebug := True;
  {$Else}
   IsDebug := False;
  {$EndIf}

E com isso passou a funcionar corretamente.

Segue arquivo com a mudança que fiz.

 

ACBrTEFPayGoWebComum.pas

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

  • Fundadores

Você tem razão, que ela fica errada, quando é ligada por compilação...

Mas não acho que não seja seguro, rodar o Setter de IsDebug no Create da Classe (pode ter efeitos colaterais e abortar o Create)

Mudei o Create, para a seguinte forma:

  // Definindo IsDebug, baseado no valor atual de PathPGWebLib
  lPathAtual := GetPathPGWebLib;
  fIsDebug := (pos(CACBrTEFPGWebDirDebug, lPathAtual) > 0);

ACBrTEFPayGoWebComum.pas

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.

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Bom dia @Daniel Simoes

Sim.. compreendo que pode ter efeitos colaterais, vou fazer um teste, porém, acredito que agora o componente não irá mais alterar automaticamente para o modo Debug conforme a compilação, vai depender sempre de colocarmos via código no sistema uma atribuição ao IsDebug, antes de inicializar o componente, tanto para ativar quanto para desativar o modo debug.

Ex: Teremos que ter uma configuração para ativar/desativar o modo debug dentro dos aplicativos (ou uma outra forma qq de controlarmos isso), e, antes de inicializar o componente, fazer algo assim:

...
//Assunindo que "VerParametro" retorna true/false e o aplicativo tenha alguma forma de configurar/identificar se está ou não no modo "debug"
if (ACBrTEFAPI.TEF is TACBrTEFAPIClassPayGoWeb) then
  TACBrTEFAPIClassPayGoWeb(ACBrTEFAPITEF).TEFPayGoAPI.IsDebug:=VerParametro('ModoDebug');
...
ACBrTEFAPI.Inicializar;
...
	

Do contrário, uma vez "ativado" o modo Debug, vai sempre continuar nele e somente após reiniciar o computador que o cliente da PayGo voltará para a pasta original.

Na ausência do aplicativo ter algum tipo de configuração, dependerá sempre de alterarmos manualmente a variável de ambiente para ativar/desativar o modo debug...

Está correto o meu entendimento?

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Apenas para ficar registrado

1 - com os fontes atualizados e
2 - se a aplicação for compilada em DEBUG e
3 - se estiver usando a DLL com proteção Warsaw e
4 - a DLL de debug não estiver presente em "C:\Program Files (x86)\PayGo\PGWebLib\DEBUG\PGWebLib.dll"

a aplicação vai estourar um erro, e tudo com relação ao TEF para de funcionar começam a acontecer varios Access Violation


PS.: Não adianta pegar a DLL de um outro computador e tentar copiar para o local, o Warsaw bloqueia esta operação

Link para o comentário
Compartilhar em outros sites

  • Fundadores
1 hora atrás, marcelosantos disse:

4 - a DLL de debug não estiver presente em "C:\Program Files (x86)\PayGo\PGWebLib\DEBUG\PGWebLib.dll"

mas em que situação a DLL não existiria nessa pasta ?

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.

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Em minha maquina de desenvolvimento há alguma incompatiiblidade (silenciosa) na instalação que a pasta e DLL não são criados, há alguns relatos no discord e inclusive a SETIS já respondeu informando que isso ocorre quando há "vestigios" da DLL antiga

Não tenho certeza mais: Em testes peguei o instalador e coloquei em uma máquina com instalação do Windows nova, a instalação foi ok, no momento que setei a ferramenta da paygo para DEMO a pasta foi criada junto com a DLL, ou seja, cheguei na conclusão que esta pasta só é criada se ativamos o DEMO na ferramenta da Paygo

 

Link para o comentário
Compartilhar em outros sites

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