Jump to content

Delphi chamada_delphi.png acbr.png

C6 chamada_c6.png botao.png

PIX Sitef PINPAD Travando


brajan
Go to solution Solved by Daniel Simoes,
  • Este tópico foi criado há 199 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro

Estou com um problema usando em produção com PIX e sitef pelo PINPAD.

Depois que é mostrado o Qrcode no pinpad, caso o cliente desista, e queira pagar com um cartao DEB/CRED o processo que o operador precisa fazer é interromper com a tecla ESC essa operação, e continuar com outra modalidade,

o problema é que quando é carteira digital (PIX) a tecla ESC para abortar(interromper) nao esta funcionando, fica uns 2 minutos a contagem e só depois disso que para o processo. 

Fazendo o mesmo processo pelo TEFDemo em producao acontece a mesma coisa e fico apertando o ESC e mesmo assim a venda é finalizada, ja fiz a programação do código de retorno 52 mas parece que nem entra nessa rotina quando joga a venda para o pinpad.

Link to comment
Share on other sites

  • Consultores

em homologação ele aprova tudo

para funcionar o ESC tu tem que programar o evento em si

Consultor SAC ACBr Juliomar Marchetti
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil

 

Link to comment
Share on other sites

  • Membros Pro

eu já programei o evento mas mesmo assim não destrava quando é enviado para o PinPAD, no evento ACBrTEFDAguardaResp utilizo dessa forma

var
  Msg: String;
begin
  Msg := '';
  if (ACBrTEFD.GPAtual in [gpCliSiTef, gpVeSPague, gpPayGoWeb]) then 
  begin //Alteração para evitar cancelamento com enter precionado no tef normal
        // 23 = TEF | 52 = Pix e PicPay
    if (Arquivo = '23') or (Arquivo = '52') then // Está aguardando Pin-Pad ?
    begin
      if ACBrTEFD.TecladoBloqueado then
        ACBrTEFD.BloquearMouseTeclado(False); // Desbloqueia o Teclado

      Msg := 'Tecle "ESC" para cancelar.';
    end;
  end
  else
    Msg := 'Aguardando: ' + Arquivo + ' ' + IntToStr(SegundosTimeOut);

  Application.ProcessMessages;

  if Msg <> '' then
    if (ACBrTEFD.GPAtual in [gpCliSiTef, gpVeSPague, gpPayGoWeb]) then
      LabelConfirmaValores.Caption := Msg
    else
      FCaixa.labelDescricaoProduto.Caption := Msg;

  if CartaoCancelado then
    Interromper := True;
end;

 

Link to comment
Share on other sites

  • Membros Pro

Eu não tenho o pinpad físico em mãos ainda estou aguardando chegar, mas no cliente sempre que usa a função exibir no pinpad a tecla esc ou cancelar do mesmo não funciona ele fica travado, mas quando eu uso com a função no delphi em debug ele entra na função sim, o problema está sendo quando está com o pinpad conectado.

Link to comment
Share on other sites

  • Consultores
16 minutos atrás, brajan disse:

Eu não tenho o pinpad físico em mãos ainda estou aguardando chegar, mas no cliente sempre que usa a função exibir no pinpad a tecla esc ou cancelar do mesmo não funciona ele fica travado, mas quando eu uso com a função no delphi em debug ele entra na função sim, o problema está sendo quando está com o pinpad conectado.

e se usar a tecla cancelar do pinpad?

Consultor SAC ACBr

Victor H Gonzales - Pandaaa
Ajude o Projeto ACBr crescer - Assine o SAC

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

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil

Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

"Aprender é a única coisa que a mente nunca se cansa, nunca tem medo e nunca se arrepende” - Leonardo da Vinci

"Ter sucesso é falhar repetidamente, mas sem perder o entusiasmo"

Link to comment
Share on other sites

  • Membros Pro
Agora, Victor H. Gonzales - Panda disse:

e se usar a tecla cancelar do pinpad?

Então, mesmo usando a tecla não faz nada, não responde aos comandos, tanto o teclado do pc quando a tecla do pinpad não respondem, parece que fica aguardando alguma coisa em loop

Link to comment
Share on other sites

  • Moderadores
2 minutos atrás, brajan disse:

Então, mesmo usando a tecla não faz nada, não responde aos comandos, tanto o teclado do pc quando a tecla do pinpad não respondem, parece que fica aguardando alguma coisa em loop

Será que não falta um Application.ProcessMessage e um Sleep de alguns milissegundos  para o Windows conseguir tratar o evento?

Link to comment
Share on other sites

  • Moderadores
18 minutos atrás, brajan disse:

como pode ver acima estou usando o 

 Application.ProcessMessages;

mas usando o exemplo tbm ocorre a mesma coisa

Poe um sleep(100)! ele precisa de um tempinho de processamento livre!
Se o loop for muito severo! ele não consegue processar os outros eventos.

 

Link to comment
Share on other sites

  • Moderadores
9 minutos atrás, Waldir Paim disse:

Poe um sleep(100)! ele precisa de um tempinho de processamento livre!
Se o loop for muito severo! ele não consegue processar os outros eventos.

 

Nesse evento onde captura o pressionamento da tecla ESC que código tem nele?

Ele insere alguma informação para interromper o loop?

 

Link to comment
Share on other sites

  • Membros Pro
Agora, Waldir Paim disse:

Nesse evento onde captura o pressionamento da tecla ESC que código tem nele?

Ele insere alguma informação para interromper o loop?

 

var
  Msg: String;
begin
  Msg := '';
  if (ACBrTEFD.GPAtual in [gpCliSiTef, gpVeSPague, gpPayGoWeb]) then 
  begin //Alteração para evitar cancelamento com enter precionado no tef normal
        // 23 = TEF | 52 = Pix e PicPay
    if (Arquivo = '23') or (Arquivo = '52') then // Está aguardando Pin-Pad ?
    begin
      if ACBrTEFD.TecladoBloqueado then
        ACBrTEFD.BloquearMouseTeclado(False); // Desbloqueia o Teclado

      Msg := 'Tecle "ESC" para cancelar.';
    end;
  end
  else
    Msg := 'Aguardando: ' + Arquivo + ' ' + IntToStr(SegundosTimeOut);

  Application.ProcessMessages;

  if Msg <> '' then
    if (ACBrTEFD.GPAtual in [gpCliSiTef, gpVeSPague, gpPayGoWeb]) then
      LabelConfirmaValores.Caption := Msg
    else
      FCaixa.labelDescricaoProduto.Caption := Msg;

  if CartaoCancelado then
    Interromper := True;
end;

o código é esse acima, para o tef ou para quando exibir o qrcode em tela funciona certinho, mas quando joga o qrcode no pinpad que da o problema

Link to comment
Share on other sites

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.