Ir para conteúdo
  • Cadastre-se

dev botao

PIX Sitef PINPAD Travando


Ver Solução Respondido por Daniel Simoes,
  • Este tópico foi criado há 1121 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro
Postado

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.

  • Membros Pro
Postado

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;

 

  • Membros Pro
Postado

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.

  • Consultores
Postado
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"

  • Membros Pro
Postado
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

  • Moderadores
Postado
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?

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

 

  • Moderadores
Postado
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?

 

  • Membros Pro
Postado
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

  • Moderadores
Postado

Você precisa mandar algum comando no Evento OnKeyPress ou OnKeyDown do seu form.

Esse evento que deve informar o que ESC foi acionando! sem um evento desses o loop não tem como saber que a tecla foi pressionada.

 

 

  • Membros Pro
Postado

eu já faço isso 

 if CartaoCancelado then
    Interromper := True;

quando eu aciono essas teclas ela trata o CartaoCancelado como true

 

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