Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 3975 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Boa tarde,

 

Estou tento um pequeno problema com o ACBrTEFD com o GP do V$Pague. Não sei o problema está com o GP ou como ACBrTEFD.

 

Ao fazer leitura da tarja de um cartão com chip de segurança no pinpad, o componente não está conseguindo capturar o retorono no GP, provavelmente devido a algum problema de encoding no retorno do GP.

 

Segue o log do vespague:

 

-- 11/06 14:40:55:545 -   TRANSMITIDO, (0)

-- 11/06 14:40:55:545 - Aguardando Resposta do V&SPague
-- 11/06 14:40:56:215 - <- RECEBIDO
automacao_coleta_sequencial="17"
automacao_coleta_mensagem="
CARTAO COM CHIP
INSIRA O CARTAO

Utilize o CHIP para realizar transacoes com este cartao.
"
automacao_coleta_retorno="9"

-- 11/06 14:40:56:217 - BloquearMouseTeclado: NAO
 

 

 

 

Debugando no delphi:

 

procedure TACBrTEFDVeSPague.FinalizarRequisicao ;
var
  Mensagem : String ;
begin
  if (RespVS.Retorno = 0) and RespVS.IsColeta then
     ProcessarColeta;

  if RespVS.IsColeta then
     Mensagem := RespVS.GetParamString('automacao_coleta_mensagem')
  else
     Mensagem := RespVS.GetParamString('mensagem');

....

 

function TACBrTEFDVeSPagueCmd.GetParamString(const ParamName : String) : AnsiString ;
begin
   Result := DecodificaString( fsParams.Values[ParamName] );
end ;

 

fsParams.Text

 

'automacao_coleta_sequencial="17"'#$D#$A'automacao_coleta_mensagem="'#$D#$A'CARTAO COM CHIP\x0AINSIRA O CARTAO\x0A\x0AUtilize o CHIP para realizar transacoes com este cartao.\x0A"'#$D#$A'automacao_coleta_retorno="9"'#$D#$A

 

 

Porém:

 

fsParams.Values['automacao_coleta_mensagem'] = ''

fsParams.Strings[0] = 'automacao_coleta_sequencial="17"'

fsParams.Strings[1] = ''automacao_coleta_mensagem="''

fsParams.Strings[2] = 'CARTAO COM CHIP\x0AINSIRA O CARTAO\x0A\x0AUtilize o CHIP para realizar transacoes com este cartao.\x0A"'

 

 

Com isso a mensagem na é retornada corretamente e a requisição é finalizada sem nenhuma resposta.

 

Ainda não encontrei a solução, porém estou tentando.

 

Se alguém puder ajudar.

 

Obrigado

 

 

 

  • 6 meses depois ...
Postado

Boa tarde Regys,

Resolvi o problema incluindo o código na função a baixo. Neste caso o automação coleta mensagem vinha com uma

quebra de linha antes de "CARTAO COM CHIP" que que resultava na decodificação uma campo vazio para a mensagem ao operador.

procedure TACBrTEFDVeSPagueCmd.SetFrameEnvio(const AValue : AnsiString) ;

Var

Buffer : AnsiString;

begin

fsParams.Clear;

fsSequencial := 0 ;

//Linha Incluida

Buffer := StringReplace(AValue,'automacao_coleta_mensagem="'+#10,'automacao_coleta_mensagem="',[rfReplaceAll]);

//

Buffer := StringReplace(buffer,'"'+#10,'[LineBreak]',[rfReplaceAll]);

Buffer := BinaryStringToString(Buffer);

Buffer := StringReplace(Buffer,'[LineBreak]','"'+sLineBreak,[rfReplaceAll]);

fsParams.Text := Buffer;

fsIsColeta := (GetParamInteger('automacao_coleta_sequencial') > 0);

end;

  • 2 semanas depois ...
  • Fundadores
Postado

Apliquei nos fontes do SVN uma possível correção baseado nas informações deste post e do LOG capturado...

 

Obrigado a todos pelas analises e contribuições...

 

Por favor atualizem os fontes e testem se está OK

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á 3975 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

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.