Ir para conteúdo
  • Cadastre-se

dev botao

TACBrAbecsPinPad


Recommended Posts

Boa tarde.. estou usando o novo componente TACBrAbecsPinPad, para exibir o logo da empresa no pinpad antes de inicialiar o tef, para dar o efeito de Splash...
Criei uma classe pra manipular o pinpad, que configura e ativa o pinpad, exibe a imagem e desativa... deixando a imagem até que o pdv comece e enviar as mensagens para o pinpad..
Então no inicio do form pdv eu instancio a classe do pinpad, mostro o logo e sigo com a venda.. tudo certo, as vendas funcionam.. quando encerro o form do PDV,
o componente TEFApi é devidamente desconectado e encerrado. Porém, na segunda vez que entro no form de pdv, não consigo exiir a image, pois recebo o erro 
de Acesso negado, como se tivesse algo conectaco na COM do pinpad.. sendo que todos os componentes foram devidamente encerrados e liberados da memória...

 

icone.png.a9a9834f5d376de0caa4952ae2bbf8ce.pngAggille Sistemas de Gestão

Leandro do Couto
(51) 99105.1600
Novo Hamburgo / RS
[email protected]
www.aggille.com.br

Link para o comentário
Compartilhar em outros sites

  • Fundadores

@Aggille Sistemas de Gestão

Se o TEF for sempre o PayGo.. vc poderia recorrer ao Typecast e dasativar na API  

if ACBrTEFAPI1.TEF is TACBrTEFAPIClassPayGoWeb then     
begin
  with TACBrTEFAPIClassPayGoWeb(ACBrTEFAPI1.TEF) do begin
      TEFPayGoAPI.DesInicializar; 
      TEFPayGoAPI.Inicializar;
   end;
end;
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

  • Fundadores
6 minutos atrás, Aggille Sistemas de Gestão disse:

isso teria o mesmo efeito de chamar FTEF.DesInicializar, ou FTEF.TEF.DesIncializar ? 

Esses métodos fariam algumas tarefas extras, como por exemplo, limpar a fila de transações pendentes

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

  • Fundadores

O erro "Acesso negado" indica que outra aplicação está acessando a Porta Serial... não há muito que possamos fazer do lado do ACBr

Qual o Tipo de TEF utilizado ?

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

PaygoWEB com componente TACBrTEFAPI... a impressão que tenho é que o componente, mesmo depois de Encerrado não está fechando a comunicação com a serial..

fiz um teste aqui.. abri o exemplo, com meu pdv fechado.. comunica tudo certo.. desativei o pinpad no programa exemplo, abri meu pdv.. logicamente nao consigo conecar pelo exemplo.. fechei o form do pdv, conferi na depuração que o TACBrTEFAPI foi desinicializado, o form e o componente foram devidamente destruidos.. dai nao consigo mais abrir o teste... quando eu encerro meu sistema dai libera o programa teste pra conectar novamente...

icone.png.a9a9834f5d376de0caa4952ae2bbf8ce.pngAggille Sistemas de Gestão

Leandro do Couto
(51) 99105.1600
Novo Hamburgo / RS
[email protected]
www.aggille.com.br

Link para o comentário
Compartilhar em outros sites

bom dia

em relação ao conflito da porta do pinpad tive o mesmo problema ao tentar exibir qrcode de pix no pinpad
mesmo fazendo assim

tefapi.DesInicializar;
freeandnil(tefapi);
application.ProcessMessages;
sleep(5000);
TACBrAbecsPinPad.IsEnabled := true;  // erro de acesso negado

 

o que eu percebi foi o seguinte:

na Tef, quando a dll da paygo finaliza uma transação ela envia um comando CLO para o pinpad
pra fechar a conexão do pinpad, e daí o display do pinpad "apaga"

mas alguns comandos do TefApi comunicam com o pinpad mas não enviam um CLO, 
daí o pinpad fica "aceso", como se a conexão ficasse ativa

isso acontece em

* tefapi.Inicializar;
* tefapi.ExibirMensagemPinPad();
* se cancelar uma transação de pagamento no meio dela, a dll da paygo encerra enviando um CLO mas depois
  o TefApi envia uma mensagem de "operacao cancelada" e como não há CLO o pinpad fica "aceso"
* em algumas operações Administrativas também acontece isso

daí quando eu chamo tefapi.DesInicializar; se o pinpad estiver "aceso" a porta fica bloqueada, só fechando
o EXE para o TACBrAbecsPinPad poder conectar

o ideal seria que dentro da função tefapi.DesInicializar, o componente pudesse enviar através da dll da paygo
um comando CLO para o pinpad.

eu contornei isso com uma Gambiarra....  aqui no meu ppc930 deu certo

tefapi.EfetuarAdministrativa(tefopTesteComunicacao, '');
// dar um tempo para operação administrativa terminar

tefapi.DesInicializar;
TACBrAbecsPinPad.IsEnabled := true;


a operação de Teste de comunicação no final envia um CLO e "apaga" o pinpad, daí desbloqueia a porta

na verdade eu coloquei tefapi.EfetuarAdministrativa(tefopTesteComunicacao, '') após todas as operação
de Tef em que ao serem concluídas o pinpad fica "aceso"

o ideal é que o pinpad sempre ficasse "apagado"(CLO) após as rotinas de Tef terminarem

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

  • Fundadores

O ACBrTEFAPI não envia msgs ao PinPad, isso é feito pela PGWebLib, quando necessário...

O comando CLO, não chega fechar a comunicação Serial... você pode testar pelo Demo do ACBr, que mesmo após enviar o "CLO", você conseguirá enviar outros comandos ao PinPad...

Mas provavelmente, internamente na PGWebLib, os comandos que chamam o CLO, na sequencia, fecham a Serial

 

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

Estou realizando esses testes de utilizar a comunicação com o TEF juntamente com o componente TACBrAbecsPinPad e para mim também está aparecendo essa mensagem do acesso negado no momento que tento ativar a comunicação com o componente TACBrAbecsPinPad, através do comando "ACBrAbecsPinPad1.IsEnabled := true".

Essa parte de utilizar transações tef e pix simultâneas é muito comum. Por isso tentei fazer o teste de antes mesmo de criar o componente TACBrAbecsPinPad na minha aplicação, utilizar o comando TEFPayGoAPI.DesInicializar para tentar liberar a utilização do pin pad, mas mesmo assim ocorre a mensagem de "acesso negado".

Fiz o teste utilizando esses comandos acima:

tefapi.EfetuarAdministrativa(tefopTesteComunicacao, '');
// dar um tempo para operação administrativa terminar

tefapi.DesInicializar;
TACBrAbecsPinPad.IsEnabled := true;

No caso funcionou, mas infelizmente não é viável a cada transação de tef fazer uma operação administrativa de teste de comunicação com tef (demora em torno de 10 segundos cada vez que chama essa operação) e chamando o comando "tefapi.DesInicializar" vai apagar todos os comprovantes de resposta que foram emitidos.

Daniel, caso tiver alguma novidade sobre a Setis, pode nos avisar? 

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Por favor certifiquem-se de estarem rodando a última versão dos fontes do ACBr, e a nova DLL da PGWebLib...

Nesse tópico eu comento sobre as principais mudanças na PGWebLib e nos fontes do ACBr..

 

..o que acho que pode fazer a diferença, nessa nova DLL, é o método PW_End, que agora é chamado no DesInicializar

procedure TACBrTEFPGWebAPI.DesInicializar;
begin
  if not fInicializada then
    Exit;

  GravarLog('TACBrTEFPGWebAPI.DesInicializar');
  if Assigned(xPW_End) then
    xPW_End;

  UnLoadLibFunctions;
  SetPGWebLibPermiteAtualiza(fAtualizaPGWebLibAutomaticamente);
  fInicializada := False;
end;

 

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

realmente esta gambiarra é inviável pelo delay que causa, eu só postei
pra compartilhar os motivos de ocorrer o conflito na serial

na verdade nem é necessário DesInicializar a tef
quando você quer usar o pinpad fora da TEF pra exibir um PIX por exemplo
basta fazer

tefapi.EfetuarAdministrativa(tefopTesteComunicacao, '');
// dar um tempo para operação administrativa terminar

TACBrAbecsPinPad.IsEnabled := true;
// usar o pinpad

TACBrAbecsPinPad.IsEnabled := false;

mas claro que isso é uma gambiarra inviável em produção....

o componente TACBrAbecsPinPad está incrível e resolveria muitos dos nossos
problemas, principalmente com o PIX já que o pix da Paygo é muito limitado em termos
de bancos

mas se não conseguirmos resolver esta questão de conflito da serial, 
infelizmente continuaremos com o stress do pix

Link para o comentário
Compartilhar em outros sites

realmente deve ser a PGWebLib que fecha a serial após enviar o CLO
nas transações de Pagamentos, Cancelamentos e na maioria das Administrativas a
PGWebLib fecha a serial no fim. Mas infelizmente em alguns casos a serial fica aberta o que bloqueia o pinpad

uma sugestão é falar com a Paygo para eles tornarem Public dentro da PGWebLib o método que fecha a serial 
(não querendo ser leviano, mas acho que isso deve ser barbada pra eles....)

daí o componente TefApi poderia implementar este método e nós poderíamos simplesmente fazer

TefApi.FecharSerialPinPad();
TACBrAbecsPinPad.IsEnabled := true;
// usar o pinpad
TACBrAbecsPinPad.IsEnabled := false;

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Isso marcelo, entendi o seu exemplo que a intenção era mostrar que dessa forma liberava o pin pad para utilização de outros comandos. Mas para produção não é possível utilizar dessa forma.

vou primeiramente atualizar a nova versão do tef PGWebLib que o Daniel comentou acima para ver se dessa forma possa resolver esse problema de acesso negado por motivo da porta continuar em uso.

Link para o comentário
Compartilhar em outros sites

  • Fundadores
2 horas atrás, marcelobd disse:

uma sugestão é falar com a Paygo para eles tornarem Public dentro da PGWebLib o método que fecha a serial 
(não querendo ser leviano, mas acho que isso deve ser barbada pra eles....)

Eu creio que o PW_End que existe na nova DLL já faz isso... (veja o código que postei acima)

  • Curtir 1
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

  • 1 mês depois ...
  • Membros Pro

Olá Daniel, 

Fiz alguns testes com a nova dll e utilizando os comandos acima de DesInicializar e Inicializar e não ocorreu mais o erro de "Acesso Negado". Porém, quando utilizo mais de uma transação tef, apenas imprime a última transação. Segue os passos que simulei e o log do componente ACBR em anexo.

- Realizei uma transação de tef de 1,00 (comprovante aparece no log)

- Acionei o comando de DesInicializar.

- Mostrei o QRCode no visor do Pin Pad (sem utilizar o tef).

- Acionei o comando de Inicializar.

- Realizei mais uma transação de crédito de 0,50 (comprovante aparece no log)

- Utilizei o comando "ImprimirTodosComprovantes" e percebi que o array "RespostasTEF" contém apenas 1 resposta (a última). A anterior foi desprezada e assim consigo imprimir apenas o último comprovante.

Seria possível ter uma forma de não apagar a resposta anterior? 

log.txt

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Obrigado pelos testes, @WINDEL...

Vou procurar nessa nova DLL, uma forma de apenas desativar a comunicação com o Pinpad... me parece que eles haviam comentado algo nesse sentido...

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

  • 3 semanas depois ...
  • Fundadores

Ainda não tive... e pelo que notei, a DLL nova PGWebLib, está com problemas para solicitar dados do PinPad... estou tentando resolver isso com eles, primeiro...

  • Curtir 1
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

Ok! Sim, isso realmente está acontecendo mesmo. Quando utilizo a função de obter dados do pin pad para capturar o valor do cpf/cnpj que o cliente digitou, ocorre uma mensagem de erro no visor com o conteúdo "Processando.." ou dependendo da ocasião até trava o sistema e tem que finalizar pelo gerenciador de tarefas.

Certo, vou aguardar primeiramente essa solução que é mais importante e urgente.

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

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