Ir para conteúdo
  • Cadastre-se

dev botao

Cartão de Débito em 2 ou + Parcelas


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

Recommended Posts

  • Membros Pro

Bom dia,

Estamos tentando implementar a opção de recebimento no TEF com cartão de débito com mais de 1 parcela.

Em anexo enviamos os arquivos de log para análise, se necessário.
A operação realizada e que consta no log foi:
- Cartão débito
- 3 parcelas
- Valor total: R$ 10,00

Ao iniciar o processamento, o TEF faz as perguntas:
1) Se a primeira parcela será à vista: foi respondido que não;

2) Se as parcelas serão iguais: respondido que não;
Por conta dessa resposta, o TEF pergunta o valor e vencimento de cada parcela. Foi informado assim:
- Parcela 01: R$ 2,00; vencimento: 05/01/24
- Parcela 02: R$ 3,00; vencimento: 10/01/24
- Parcela 03: R$ 5,00; vencimento: 15/01/24

A questão que não estamos conseguindo fazer é capturar os dados dessas parcelas. 
Como é uma informação que o operador vai digitar na tela do TEF, precisamos capturar essa lista de parcelas após a operação ser autorizada, para podermos gravar no banco de dados da nossa aplicação.
Como fazer essa captura?

Em anexo arquivos de log e também comprovante impresso da transação.

Obrigado!

Comprovante.jpg

comms_231221.log Log21122023.txt ppsers_231221.log

Valdir Dill

Rio de Janeiro - RJ

 

 

Link para o comentário
Compartilhar em outros sites

  • Consultores
5 horas atrás, Valdir Dill disse:

A questão que não estamos conseguindo fazer é capturar os dados dessas parcelas. 
Como é uma informação que o operador vai digitar na tela do TEF, precisamos capturar essa lista de parcelas após a operação ser autorizada, para podermos gravar no banco de dados da nossa aplicação.
Como fazer essa captura?

Olá Valdir,

Se você quiser capturar durante a apresentação dos dados, você pode usar os eventos OnObtemCampo e OnExibeMenu.

É justamente nesse código que os usuários vão informar os dados ao TEF.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

  • Membros Pro
4 horas atrás, EMBarbosa disse:

Olá Valdir,

Se você quiser capturar durante a apresentação dos dados, você pode usar os eventos OnObtemCampo e OnExibeMenu.

É justamente nesse código que os usuários vão informar os dados ao TEF.

Boa noite,

Obrigado @EMBarbosa  as acho que você não entendeu bem nossa dúvida/dificuldade.

Vou tentar explicar melhor.

Bem, em primeiro lugar, é preciso registrar que, na verdade os eventos que você sugere seriam os QuandoPerguntarCampo e QuandoPerguntarMenu.
Obs.: estamos falando do TEF PayGo, ok?

Mas a questão não é onde (quando) pegar esses dados e sim, COMO pegar. Qual a rotina/método usar? 

Por exemplo, se eu quiser saber a quantidade de parcelas, vou ler:
ACBrTEFAPI1.UltimaRespostaTEF.LeInformacao(PWINFO_INSTALLMENTS), certo?

Mas COMO ler, por exemplo, o valor e vencimento da parcela 02 dessa transação que eu mencionei na abertura deste post?

Os parâmetros PWINFO_INSTALLMDATE e PWINFO_INSTALLM1AMT trazem o vencimento e valor, mas é apenas da entrada (acredito que seja a primeira parcela).
Mas e as parcelas 2, 3, ...? Como faço para obter seus dados?

Obs.: eu já havia relatado essa situação no Discord e o @Daniel Simoes me orientou a abrir um post aqui no fórum para uma melhor análise.

Obrigado

Valdir Dill

Rio de Janeiro - RJ

 

 

Link para o comentário
Compartilhar em outros sites

  • Consultores
  • Solution

 

15 horas atrás, Valdir Dill disse:

Obrigado @EMBarbosa  as acho que você não entendeu bem nossa dúvida/dificuldade.

Desculpe se eu não entendi bem... Fica a vontade pra me mostrar sempre o que eu não tiver entendido. 👍

15 horas atrás, Valdir Dill disse:

Bem, em primeiro lugar, é preciso registrar que, na verdade os eventos que você sugere seriam os QuandoPerguntarCampo e QuandoPerguntarMenu.
Obs.: estamos falando do TEF PayGo, ok?

Ahh certo, você tem razão nos nomes do evento do componente. Na verdade, usei os nomes que são correspondentes a esses na classe interna porque são estes que estão no log.

Veja esse trecho por exemplo na linha 1244 do log21122023.txt que você compartilhou:

21/12/23 09:22:02:667 -   OnObtemCampo
21/12/23 09:22:10:687 -     Resposta: 150124, Valido: False, Cancelado: False
21/12/23 09:22:10:687 - PW_iAddParam( PWINFO_48900, 150124 )

 

15 horas atrás, Valdir Dill disse:

Mas COMO ler, por exemplo, o valor e vencimento da parcela 02 dessa transação que eu mencionei na abertura deste post?

Hmm.... talvez tenha sido mais isso que não entendi direito...

Você não disse que o usuário digitou isso? Ele digita os valores em um form que você cria e mostra ao chamar nos eventos que mencionamos.

Então você poderia capturar eles ali, naquele evento ou no form. Como no log acima...

Não?

 

15 horas atrás, Valdir Dill disse:

Obs.: eu já havia relatado essa situação no Discord e o @Daniel Simoes me orientou a abrir um post aqui no fórum para uma melhor análise.

Ahh quando for assim, é bom você mencionar logo no início do tópico. Assim a gente já direciona pra quem pediu, ou mesmo quando for outra pessoa que vá continuar, ela pode ir no Discord e pegar o contexto da conversa.

Por exemplo, é o que eu vou fazer agora, ir lá ler todas as suas mensagens. :)

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

  • Fundadores

@Valdir Dill, pelo que notei no Log, não há um mapeamento entre Vero e PayGo, com os dados das parcelas, em identificadores bem específicos... 

Ou seja, o Log não retorna as parcelas, de forma normatizada...

 

Você tem algumas opções para capturar o valor

1 - capturar do "espelho" do comprovante

Isso pode não ser muito bacana, pois se a adquirente modificar o layout do Espelho, sua pesquisa pode falhar... mas pelo que notei, as informações das parcelas, estão bem formatadas por lá...

09:22:32:309 0x53= ------------ 1 via - loja -----------


VERO - BANRICOMPRAS
PAGAMENTO PARCELADO

NELSON HENRI
CNPJ: 04.357.337/0001-01
ROLANTE

041131200661000  00620893

DATA: 21/12/2023          HORA: 09:22:28
NSU BERGS: 00235925
CARTAO: 4313                VALOR: 10,00
NUMERO DE PARCELAS: 03

PARCELAS        VALOR     DEBITO EM 
   01            2,00     05/01/2024
   02            3,00     10/01/2024
   03            5,00     15/01/2024

Banrisul Debito
00-00C1-28B9524DD4A38C0A
A0000001544442                

--------------------------------------
5745823 EC:0000688678 REF:0000002257

 

2 - Capturar assim que o usuário digitar

Essa foi a sugestão do @EMBarbosa...

Observe que no evento onde ocorre as perguntas, você recebe o título e alguns indicadores, que poderia usar para saber quando essa informação está sendo perguntada, e acumular as respostas, em registradores internos do seu sistema

21/12/23 09:21:48:793 -  PW_GetData: 1
  wIdentificador: PWINFO_48901  // <---------- NOME DO REGISTRADOR -----------
  bTipoDeDado: PWDAT_TYPED
  szPrompt: VALOR 1 PARCELA:    // <---------- TITULO DA PERGUNTA -----------
  bNumOpcoesMenu: 0
  szMascaraDeCaptura: R$@.@@@.@@@,@@
  bTiposEntradaPermitidos: PWTYP_Numerico
  bTamanhoMinimo: 1
  bTamanhoMaximo: 9
  ulValorMinimo: 0
  ulValorMaximo: 998
  bOcultarDadosDigitados: 0
  bValidacaoDado: PWVAL_Nenhuma
  bAceitaNulo: 1
  szValorInicial: 333
  bTeclasDeAtalho: 0
  szMsgValidacao: 
  szMsgConfirmacao: 
  szMsgDadoMaior: 
  szMsgDadoMenor: 
  bCapturarDataVencCartao: 0
  ulTipoEntradaCartao: 0
  bItemInicial: 0
  bNumeroCapturas: 0
  szMsgPrevia: 
  bTipoEntradaCodigoBarras: 0
  bOmiteMsgAlerta: 0
  bIniciaPelaEsquerda: 0
  bNotificarCancelamento: 0
  bAlinhaPelaDireita: 1

21/12/23 09:21:48:809 -   OnObtemCampo
21/12/23 09:21:53:599 -     Resposta: 200, Valido: False, Cancelado: False

Porém... Isso também está sujeito a alguma alteração do texto exato da pergunta...

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.

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Deixe-me se entendi a sugestão e me ajudem colocar isso em um código, por favor.

no evento ACBrTEFAPI1QuandoPerguntarMenu eu faria:

- if szPrompt = "DATA 1 PARCELA:" then VIDentificadorGuardadoDataPrimeiraParcela := wIdentificador

- if szPrompt = "VALOR 1 PARCELA:" then  VIDentificadorGuardadoValorPrimeiraParcela := wIdentificador


aí, no final da operação faço:
DataPrimeiraParcela := ACBrTEFAPI1.UltimaRespostaTEF.LeInformacao(VIDentificadorGuardadoDataPrimeiraParcela)
ValorPrimeiraParcela := ACBrTEFAPI1.UltimaRespostaTEF.LeInformacao(VIDentificadorGuardadoValorPrimeiraParcela)

Seria isso?

Obrigado!

Valdir Dill

Rio de Janeiro - RJ

 

 

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Não pois conforme está no Log esses valores não estão sendo retornados como indicadores...

A sugestão é capturar o que o usuário digitou no Edit...

Algo como:

if szPrompt = "DATA 1 PARCELA:" then VIDentificadorGuardadoDataPrimeiraParcela := EditCampo.Text

  • Curtir 1
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.

Link para o comentário
Compartilhar em outros sites

×
×
  • 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.