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.

The popup will be closed in 10 segundos...
The popup will be closed in 10 segundos...