Ir para conteúdo
  • Cadastre-se

dev botao

TACBrTEFDClass.ConfirmarESolicitarImpressaoTransacoesPendentes sem NSU Última Transação


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

Recommended Posts

  • Membros Pro
Postado

Boa tarde,

Pesquisei no fórum e não encontrei algo especificamente sobre isso, então estou enviando esse questionamento para ver se alguém já passou pela mesma situação.

Estou realizando a homologação para o TEF usando CliSiTef.
Em uma das etapas da homologação é necessário fazer uma transação no cartão (Débito ou crédito tanto faz) e prosseguir até o final e no momento que solicitar para retirar o cartão do PinPad (momento em que confirmaria a transação), fechar a aplicação. Ao retornar na aplicação deverá confirmar as transações pendentes e mostrar a mensagem:
"Transação TEF efetuada.
Favor reimprimir último Cupom.
NSU: XXXXXX
(Para Cielo utilizar os 6 últimos dígitos.)"

Porém ao realizar esse procedimento, está fazendo tudo correto, só a mensagem retornada não mostra o NSU da última transação.
fica a mensagem da seguinte forma:
"Transação TEF efetuada.
Favor reimprimir último Cupom.

(Para Cielo utilizar os 6 últimos dígitos.)"

Alguém já passou por esse problema?

Testei com o TEFDemo disponibilizado pelo ACBR e também retorna a mensagem da mesma forma sem mostrar o NSU da última transação.

Em anexo o log do procedimento realizado.

Se alguém puder auxiliar com essa questão agradeço desde já.

CliSiTef_2018-07-17.log

  • Membros Pro
Postado

Bom dia Pessoal, para ajustar essa questão fiz a seguinte alteração no arquivo ACBrTEFDCliSiTef.pas

Na linha 1252 onde é gravado as informações da transação no arquivo temporário, só estava gravando as informações no arquivo quando a variável TipoCampo = 133 (NSU do SiTef) ou TipoCampo = 952 (Número de autorização NFCE), mas eu precisava de campos que vem na sequencia, como por exemplo o TipoCampo = 134 (NSU do Host autorizador) e este campo não estava sendo gravado no arquivo temporário, bem como outros campos que vem na sequencia. Então incluí nesta validação também para gravar no arquivo quando o TipoCampo = 1 (Dados de confirmação da transação) que pelo que entendi seria quando já passou por todos os outros campos, então poderia gravar novamente no arquivo as informações da transação, para que se a aplicação cair, quando reiniciar consiga buscar do arquivo temporário todas as informações necessárias da transação.

Conteúdo original:

133, 952:
begin
  fArqBackUp := CopiarResposta;
end;

Conteúdo alterado:

1, 133, 952:ACBrTEFDCliSiTef.pasACBrTEFDCliSiTef.pas
begin
  fArqBackUp := CopiarResposta;
end;

O arquivo alterado está em anexo.

Não sei se essa alteração impactaria no funcionamento do TEF, mas aqui para mim resolveu o problema. Peço que analisem da possibilidade de inclusão desta alteração no SVN se for pertinente. Ou então se verificarem que pode ser resolvido de outra forma peço que me avisem.

Obrigado

 

 

  • Curtir 1
  • 6 meses depois ...
  • Membros Pro
Postado

Bom dia pessoal, existe a possibilidade de inclusão no repositório dos fontes essa alteração realizada nos posts acima? Essa alteração está funcionando corretamente já tem bastante tempo e toda vez que atualizo os fontes se faz necessário efetuar a alteração no fonte manualmente.

Abaixo estou passando novamente o arquivo atualizado e alterado.

Agradeço desde já.

 

ACBrTEFDCliSiTef.pas

  • Fundadores
Postado

Estranho.. não sei como a alteração proposta, poderia corrigir o problema...

Observe no método procedure TACBrTEFDRespCliSiTef.ConteudoToProperty, que o valor para o TipoCampo = 1, nem mesmo é aproveitado na rotina (não está mapeado)

 

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.

  • Membros Pro
Postado

Oi Daniel,

Certo mas fazendo isso força com que quando o tipo campo for 1 grave as informações no TXT. E gravando no TXT quando vai confirmar a transação interrompida anteriormente vai ter o NSU da ultima transação efetuada, que é o que precisa.

Com essa alteração resolve o problema. Creio que se colocar o tipo campo = 134 (NSU do Host autorizador) também funcione para este campo, só que se precisar pegar algum outro campo que vem na sequencia não terá também pois não gravou no TXT com a informação da ultima transação efetuada.

 

  • Fundadores
Postado

Pode por favor fazer o teste com o valor de 134 ?
Faz mais sentido se ficar: 133, 134, 952...

Observando os logs do SiTef, percebo que ele não retorna os campos, em Ordem numérica... acho que ele retorna a medida que vai obtendo as informações...

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.

  • Membros Pro
Postado

Daniel, realmente não vem em ordem, por isso que coloquei o tipocampo=1 ali para gravar as informações, pois percebi que é retornado tipocampo=1 depois de todos os outros campos, por isso por isso coloquei o tipocampo=1 ali, para que se precisar recuperar outro campo além do 133, 134 e 952 também seja possível sem que seja necessário modificar nos fontes.

O que acha?

 

  • Membros Pro
Postado

Bom dia,

Daniel, fiz os testes e adicionando o TipoCampo 134 ali funciona para conseguir ter o valor do NSU da última transação efetuada no momento que restaurar a aplicação que caiu no momento que pedir para retirar o cartão para confirmar as transações. Porém verifiquei que eu preciso também da informação do Nome da Instituição (Bandeira) que é o tipo campo 156. Como pode ver no log que estou passando abaixo este campo vem depois na sequencia, aí já não tenho ele também no arquivo temporário e teria que incluir ali nos campos também. Que no caso ficaria: 133, 134, 156, 952. E veja ali nos logs também que o último campo que vem é o TipoCampo=1. E conforme o manual de integração do Sitef (Print em anexo) página 30 o TipoCampo = 1 significa "Dados de confirmação da transação. Para ambientes com múltiplos servidores será retornado no seguinte formato: <Dados_Confirmacao>;<Indice_SiTef>;<Endereco_SiTef>". Ou seja, eu não acharia incorreto deixar ali o tratamento para gravar no arquivo quando o TipoCampo for 1.

Se puder verifica isso, para minha aplicação eu precisaria dos campos 134 e 156 além dos que já estão sendo tratados (133 e 952). Mas acharia melhor já colocar o TipoCampo=1 ali. Para que não seja necessário acrescentar mais algum campo futuramente ali no tratamento.

 

Logs_SITEF.jpg

Print_pag30_ManualCliSitef.jpg

  • Fundadores
Postado

Podemos incluir o 1... não vejo problema de efeito colateral... mas isso não estaria atrasando a gravação do arquivo temporário ?  Se ele for desligado, antes do SiTef enviar o TipoCampo 1, o Backup poderá não ocorrer...

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.

  • Membros Pro
Postado

Eu acredito que somente quando acontece o TipoCampo=1 é que seja confirmada a transação aí seria o momento certo de gravar no temporário.

Pelo menos é o que dá a entender na descrição do manual do Sitef para o TipoCampo=1.

Eu deixaria da seguinte forma: 1, 133, 952:

 

  • Curtir 1
  • Este tópico foi criado há 2124 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.