Ir para conteúdo
  • Cadastre-se

dev botao

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


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

Recommended Posts

  • Membros Pro
Postado

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
Postado

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
Postado

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

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
Postado
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
Postado (editado)

Sim, baixei tudo na sexta passada

 

Pelo que vi o retorno significa chamada fora do lugar.

Editado por DaniPro
  • Consultores
Postado
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
Postado

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

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
Postado

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á 282 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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.