Ir para conteúdo
  • Cadastre-se

dev botao

TEF Scope - Problema ao comunicar com Pinpad.


Ver Solução Respondido por Daniel Simoes,

Recommended Posts

Postado

Boa tarde 

Estou implementando a integração com o TEF Scope por API. Estou tendo um problema para comunicar com o Pinpad onde ao passar pela primeira vez em ScopeConsultaPP recebo o retorno 65431 e o fluxo é interrompido.

Conforme instruído por @Daniel Simões de Almeida no Discord, entrei em contato com o pessoal da Scope onde fui informado que a função em questão está obsoleta e a mesma não consta mais no manual. Fui instruído pelo pessoal da Scope a usar a função ScopePPGetCOMPort, caso queira buscar a porta ou então caso já tenha a porta, conectar diretamente com ScopePPOpenSecure.

Verificando a função reparei que isso já é feito na função ConfigurarPortaPinPad que é chamada dentro de AbrirPinPad. Então fiz a remoção da validação inicial e ai funciona perfeitamente pra mim. Ou seja, quando chamar ConfigurarPortaPinPad, caso a mesma não seja passada, irá chamar o ScopePPGetCOMPort para localizar e caso já tenha sido passada ele pula e vai direto para o ScopePPOpenSecure.

Vou enviar a função aqui para ver se vocês acham que é valida essa mudança para aplicar ao fonte:

procedure TACBrTEFScopeAPI.AbrirPinPad;
var
  ret: LongInt;
  bConfig, bExclusivo, aPorta, bPorta: Byte;
  Canal: Word;
  endereco: AnsiString;
begin
  FecharComunicacaoScope;
  GravarLog('AbrirPinPad');

  GravarLog('ScopeValidaInterfacePP( '+IntToStr(PP_INTERFACE_LIB_COMPARTILHADA)+' )');
  ret := xScopeValidaInterfacePP( PP_INTERFACE_LIB_COMPARTILHADA );
  GravarLog('  ret: '+IntToStr(ret));
  if (ret <> PC_OK) then
    TratarErroPinPadScope(ret);

  try
    AbrirComunicacaoScope;

    aPorta := ConfigurarPortaPinPad(fPortaPinPad);
    if (aPorta = 0) then
      aPorta := bPorta;

    if (bConfig = PPCONF_MODO_ABECS) then
      fPinPadSeguro := True;

    if fPinPadSeguro then
    begin
      if (aPorta = 0) then
        Canal := CANAL_COMM_NONE
      else
        Canal := CANAL_COMM_SERIAL;

      GravarLog('ScopePPOpenSecure( '+IntToStr(Canal)+', '+IntToStr(aPorta)+' )');
      endereco := IntToStr(aPorta);
      ret := xScopePPOpenSecure(Canal, PAnsiChar(endereco));
    end
    else
    begin
      GravarLog('ScopePPOpen( '+IntToStr(aPorta)+' )');
      ret := xScopePPOpen(bPorta);
    end;

    GravarLog('  ret: '+IntToStr(ret));
    if (ret <> PC_OK) then
      TratarErroPinPadScope(ret);
  finally
    VerificarSeMantemConexaoScope;
  end;
end;

  • Fundadores
  • Solution
Postado

Olá @danielznt,

Por favor tente a alteração abaixo em procedure TACBrTEFScopeAPI.AbrirPinPad;

    if (ret = RCS_PP_NAO_ENCONTRADO) then
    begin
      bExclusivo := 0;
      bPorta := 0;
      bConfig := PPCONF_MODO_ABECS;
    end
    else if (ret <> PC_OK) then
      TratarErroPinPadScope(ret);

 

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.