Jump to content

dev botao

Verificar presença do pinpad - nova função


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

Recommended Posts

  • Membros Pro
Posted

Bom dia,

Atualizei os fontes e verifiquei que foi implementada uma nova função para verificar a presença do pinpad "VerificarPresencaPinPad", algo que considero de grande importância se permitir que possamos verificar se o equipamento está devidamente conectado e configurado já na abertura do sistema pois evitaria de o problema só ser percebido na hora de processar o pagamento.

Ao testar verifiquei que ao chamar a função está ocorrendo um AV.... também não consegui localizar nos fontes quais seriam os possíveis valores de retorno, apenas que retorna um tipo byte.

Utilizo a PayGoWeb DLL.

Grato.

  • Membros Pro
Posted

Ocorre na unit ACBrTEFAPI.pas linha 327
function TACBrTEFAPI.GetTEFAPIClass: TACBrTEFAPIClass;
begin
  Result := TACBrTEFAPIClass(fpTEFAPIClass);  // <<<---
end;

A DLL (PGWebLib.dll) é a de homologação versão 4.1.15.1.

O pinpad é um Gertec PPC 930 versão 2.12.

 

  • Membros Pro
Posted

Daniel, desculpe, falha minha... verifiquei agora que eu estava chamando a função antes da minha rotina de configuração do componente, então corrigi e o AV não ocorreu mais, apenas demorou um tempo e deu a mensagem de "Erro de comunicação com o pinpad" mesmo ele estando conectado e funcionando normal.

  • 8 months later...
  • Membros Pro
Posted

Ola.

Tentei usar a VerificarPresencaPinPad mas resulta em chamada inválida (-2494). Procurei na documentação da PayGo e

não encontrei a função PW_iPPCommTest para tentar verificar.

 

 

 

 

  • Consultores
Posted
Em 13/02/2024 at 08:07, DaniPro disse:

Ola.

Tentei usar a VerificarPresencaPinPad mas resulta em chamada inválida (-2494). Procurei na documentação da PayGo e

não encontrei a função PW_iPPCommTest para tentar verificar.

 

 

 

 

Esta com o componente e PGWebLib.dll atualizada ? 
 

 

  • Membros Pro
Posted (edited)

Sim, baixei tudo na sexta passada

 

Pelo que vi o retorno significa chamada fora do lugar.

Edited by DaniPro
  • Consultores
Posted
2 horas atrás, DaniPro disse:

Sim, baixei tudo na sexta passada

 

Pelo que vi o retorno significa chamada fora do lugar.

ta, de fato, parece estar chamando em um momento incorreto, geralmente, durante uma transação TEF ou Administrativa..
Tente inicializar o componente e logo após fazer a chamada VerificarPresencaPinPad

  • Membros Pro
Posted

Na verdade estou chamando ela antes do administrativo justamente para ver se o pinpad está operacional

vou depurar o código para ver se encontro algo.

 

 

 

 

 

  • Membros Pro
Posted
6 horas atrás, antonio.carlos disse:

Esta com o componente e PGWebLib.dll atualizada ? 
 

Uma dúvida. a versão que vem no SDK é a 4.1.15 e o Daniel refere a versão 4.1.25.

  • Fundadores
Posted

Você poderia usar o TACBrAbecsPinPad, para detectar ele...

Basta varrer as portas seriais no sistema, tentar abrir elas, e nas que tiver sucesso com a abertura, tentar o comando TACBrAbecsPinPad.OPN

 

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
Posted

Implementei no Demo do ACBrAbecsPinpad o seguinte Botão, para detectar o Pinpad

procedure TfrMain.btDetectPinPadClick(Sender: TObject);
var
  sl: TStringList;
  PortFound: String;
  i: Integer;
begin
  sl := TStringList.Create;
  try
    ACBrAbecsPinPad1.Device.AcharPortasSeriais( sl );
    i := 0;
    PortFound := '';
    while (i < sl.Count) and (PortFound = '') do
    begin
      try
        ACBrAbecsPinPad1.Disable;
        ACBrAbecsPinPad1.Port := sl[i];
        ACBrAbecsPinPad1.Enable;
        try
          ACBrAbecsPinPad1.OPN;
          ACBrAbecsPinPad1.CLO;
          PortFound := ACBrAbecsPinPad1.Port;
        finally
          ACBrAbecsPinPad1.Disable;
        end;
      except
      end;
      Inc(i);
    end;

    if (PortFound <> '') then
      ShowMessage('PinPad Found on '+PortFound)
    else
      ShowMessage('PinPad not Found');
  finally
    sl.Free;
  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.

  • Este tópico foi criado há 293 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Guest
This topic is now closed to further replies.
×
×
  • 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.

The popup will be closed in 10 seconds...