Ir para conteúdo
  • Cadastre-se

dev botao

Recommended Posts

Postado

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

 

AGGILLE-LOGO-500x180_fw.jpg.07c79ceacf0537ee105c0bbf0139435f.jpg

Aggille Sistemas de Gestão
Leandro do Couto
(51) 99105.1600
Novo Hamburgo / RS
[email protected]
www.aggille.com.br

  • Fundadores
Postado

@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.

  • Fundadores
Postado
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.

  • Fundadores
Postado

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.

Postado

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

AGGILLE-LOGO-500x180_fw.jpg.07c79ceacf0537ee105c0bbf0139435f.jpg

Aggille Sistemas de Gestão
Leandro do Couto
(51) 99105.1600
Novo Hamburgo / RS
[email protected]
www.aggille.com.br

Postado

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
  • Fundadores
Postado

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.

  • Membros Pro
Postado

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? 

  • Fundadores
Postado

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.

Postado

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

Postado

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;

  • Membros Pro
Postado

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.

  • Fundadores
Postado
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.

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

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

  • Membros Pro
Postado

Obrigado pelo retorno Daniel.

Acredito que isso seria a única pendência que falta para que funcione o TEF junto com o Abecs. Fico no aguardo.

  • 3 semanas depois ...
  • Membros Pro
Postado

Olá Daniel,

Tem alguma notícia sobre essa informação do TEF não apagar as respostas quando é desativado a comunicação com a dll?

  • Fundadores
Postado

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.

  • Membros Pro
Postado

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.

  • 2 meses depois ...
  • Membros Pro
Postado (editado)

Olá @Daniel Simoes

Quando você tiver um tempo, conseguiria verificar se existe uma solução para esse meu report que fiz em 01/04?

Testei essa função de capturar o cpf/cnpj via PIN PAD na versão 5.1.30.0 e funcionou corretamente em modo de homologação. Pedirei para os técnicos testarem em produção.

Então faltaria apenas não apagar as respostas quando é desativado a comunicação do tef com a dll para poder utilizar o componente Abespinpad, pois o componente faz uma função muito importante para o uso do PIX com QRCode.

Isso nos ajudaria bastante se esse componente pudesse ser utilizado.

Editado por WINDEL
  • Curtir 1
  • Fundadores
Postado

Oi @WINDEL, em conversar recentes com a Setis, percebi que eles não veem com bons olhos, compartilhar a porta Serial do PinPad, com outra aplicação

O que solicitei a eles, e provavelmente será implementado, é um método na própria PGWebLib, para enviar imagens ao PinPad

Adicionei você em cópia no Caso no Jira da Setis...

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

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.