Ir para conteúdo
  • Cadastre-se

dev botao

Informar quantidade de parcelas TEF


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

Recommended Posts

Quanto implementei o TEF com a empresa direção e utilizando a Dll, para iniciar a transação passava alguns parâmetros: Exemplo: Valor, tipo de operação, valor da parcela, quantidade de parcelas e se era permitido alteração. Dessa forma conseguia bloquear a interação do usuário com interface do TEF da direção, pois não era necessário.

Estou implementando a integração do TEF com a NTK(PAY&GO) e utilizando ACBR. Como faço para realizar uma transação de TEF com o parcelamento na administradora sem que o usuário precise digitar a quantidade de parcelas, pois essas informações já serão passados pelo meu sistema.

Utilizando o comando acbrtefd1.CRT, tenho uma quantidade limitada de parâmetros. Existe outro comando na qual possa passar mais parâmetros(ex: quantidade de parcelas), dispensando assim a interação com o usuário.

 

Obrigado.

 

Link para o comentário
Compartilhar em outros sites

  • Consultores

Você precisa verificar com o sistema de integração como é que eles esperam esse parâmetro. Daí poderá verificar se é implementado no ACBrTEFD.

[]'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

21 minutos atrás, EMBarbosa disse:

Você precisa verificar com o sistema de integração como é que eles esperam esse parâmetro. Daí poderá verificar se é implementado no ACBrTEFD.

Bom dia EMBarbosa, obrigado pela ajuda. 

Na verdade minha dúvida é exatamente essa. Como faço para passar outros parâmetros utilizando apenas o comando acbrtefd1.crt(Valor, IndiceFPG_ECF, DocumentoVinculado, Moeda). Existe outro comando?  Existe outra forma?

 

 

Link para o comentário
Compartilhar em outros sites

  • Consultores
3 minutos atrás, william disse:

Como faço para passar outros parâmetros utilizando apenas o comando acbrtefd1.crt(Valor, IndiceFPG_ECF, DocumentoVinculado, Moeda). Existe outro comando?  Existe outra forma?

Eles esperam esse parâmetro no CRT?

[]'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

  • Consultores
1 minuto atrás, william disse:

Não, apenas esses: Valor, IndiceFPG_ECF, DocumentoVinculado, Moeda

Então porque você quer passar isso no CRT?

[]'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

51 minutos atrás, EMBarbosa disse:

Então porque você quer passar isso no CRT?

CRT é o que estou utilizando conforme o exemplo no ACBR, mas somente o CRT não irá me atender, existe outra forma?.

Como outros desenvolvedores implementaram credito parcelado na administradora utilizando ACBR?

Link para o comentário
Compartilhar em outros sites

2 horas atrás, william disse:

CRT é o que estou utilizando conforme o exemplo no ACBR, mas somente o CRT não irá me atender, existe outra forma?.

Como outros desenvolvedores implementaram credito parcelado na administradora utilizando ACBR?

Lembrando que eu não quero interação do usuário o software do TEF. Porisso a necessidade de mais parâmetros. Entendeu?

Link para o comentário
Compartilhar em outros sites

  • Consultores

Não sei... Você parece estar rodando em círculos no que eu mencionei. Vamos voltar no começo:

5 horas atrás, EMBarbosa disse:

Você precisa verificar com o sistema de integração como é que eles esperam esse parâmetro. Daí poderá verificar se é implementado no ACBrTEFD.

 

[]'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

1 hora atrás, EMBarbosa disse:

Não sei... Você parece estar rodando em círculos no que eu mencionei. Vamos voltar no começo:

 

Verifiquei que no layout de solicitação da NTK(pay&go) existem vários outros campos, logo é possível passar esses campos como parâmetro.

Como posso verificar se isso é implementado no ACBR?

Qual a finalidade do comando abaixo?

      ACBRTEFD1.Req.Conteudo.GravaInformacao(const Chave, Informacao : AnsiString);

 

Link para o comentário
Compartilhar em outros sites

  • Moderadores
  • Solution

Tente o seguinte:

No evento OnAntesFinalizarRequisicao, informar os parâmetros mais ou menos assim

procedure TdtmPDV.ACBrTEF1AntesFinalizarRequisicao(Req: TACBrTEFDReq);
begin
  if Req.Header = 'CRT' then
    Req.GravaInformacao(777, 777, 'TESTE REDECARD');
end;

 

  • Curtir 1

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
Link para o comentário
Compartilhar em outros sites

23 minutos atrás, Régys Silveira disse:

Tente o seguinte:

No evento OnAntesFinalizarRequisicao, informar os parâmetros mais ou menos assim


procedure TdtmPDV.ACBrTEF1AntesFinalizarRequisicao(Req: TACBrTEFDReq);
begin
  if Req.Header = 'CRT' then
    Req.GravaInformacao(777, 777, 'TESTE REDECARD');
end;

 

Já havia tentado dessa forma:

 

   if Req.Header = 'CRT' then begin
      Req.GravaInformacao(777, 777, 'REDECARD');
      Req.GravaInformacao(777, 777, 'CIELO');
      Req.Conteudo.GravaInformacao('018-000','6');
      Req.Conteudo.GravaInformacao('011-000','11');
      Req.Conteudo.GravaInformacao('030-000','teste');
      Req.Conteudo.GravaInformacao('730-000','1');
      Req.Conteudo.GravaInformacao('731-000','1');
      Req.Conteudo.GravaInformacao('732-000','2');
   end;

 

Link para o comentário
Compartilhar em outros sites

2 horas atrás, Régys Silveira disse:

Tente o seguinte:

No evento OnAntesFinalizarRequisicao, informar os parâmetros mais ou menos assim


procedure TdtmPDV.ACBrTEF1AntesFinalizarRequisicao(Req: TACBrTEFDReq);
begin
  if Req.Header = 'CRT' then
    Req.GravaInformacao(777, 777, 'TESTE REDECARD');
end;

 

Dessa forma deu certo Regys. Muito Obrigado.

 

   if Req.Header = 'CRT' then begin
      Req.GravaInformacao(777, 777, 'REDECARD');
      Req.GravaInformacao(777, 777, 'CIELO');
      Req.GravaInformacao(10,0,'Rede');
      Req.GravaInformacao(11,0,'11');
      Req.GravaInformacao(18,0,'09');
      Req.GravaInformacao(730,0,'1');
      Req.GravaInformacao(731,0,'1');
      Req.GravaInformacao(732,0,'2');
      Req.GravaInformacao(739,0,'001');
   end;

 

Link para o comentário
Compartilhar em outros sites

  • 7 meses depois ...

Boa tarde Senhores, 

O tópico aqui é meio antigo, mas por se tratar do mesmo assunto, acredito que podemos dar continuidade nele, por favor me corrijam se eu estiver enganado.

Estou ajustando o sistema aqui da empresa para trabalhar com o TEF, portanto estou ao mesmo tempo testando com NTK(TefDial) e com Skytef/Software Express(CliSitef).

Tentei localizar um outro tópico que por acaso vi outro dia de alguem mensionando que o evento OnAntesFinalizarRequisicao não estava sendo chamado, mas infelizmente não encontrei...

O que ocorre é o seguinte, usando TefDial o evento é chamado perfeitamente, pois no metodo CRT tem a chamada para o método FinalizarRequisicao que por sua vez aciona o evento OnAntesFinalizarRequisicao.

já usando o TefCliSitef, o método CRT foi sobrescrito, e não tem a chamada para o método FinalizarRequisicao, consequentemente o evento não é chamado.

 

Fiz um ajuste na unit ACBrTEFDCliSiTef.pas e estou enviando em anexo, se puderem avaliar e adicionar ao SVN.

 

Grato

ACBrTEFDCliSiTef.pas

Link para o comentário
Compartilhar em outros sites

Boa tarde, o que significa essas informações que você está passando em:

 Req.GravaInformacao(10,0,'Rede');
      Req.GravaInformacao(11,0,'11');
      Req.GravaInformacao(18,0,'09');
      Req.GravaInformacao(730,0,'1');
      Req.GravaInformacao(731,0,'1');
      Req.GravaInformacao(732,0,'2');
      Req.GravaInformacao(739,0,'001');

Tentei por isso nos meus teste do Sitef com cartão visa e nada aconteceu de diferente usando a nova unit corrigida.

Link para o comentário
Compartilhar em outros sites

16 horas atrás, Jwest disse:

Boa tarde, o que significa essas informações que você está passando em:


 Req.GravaInformacao(10,0,'Rede');
      Req.GravaInformacao(11,0,'11');
      Req.GravaInformacao(18,0,'09');
      Req.GravaInformacao(730,0,'1');
      Req.GravaInformacao(731,0,'1');
      Req.GravaInformacao(732,0,'2');
      Req.GravaInformacao(739,0,'001');

Tentei por isso nos meus teste do Sitef com cartão visa e nada aconteceu de diferente usando a nova unit corrigida.

Bom dia Jwest

Não sou eu que postei isso acima, mas estou com essas informações bem frescas, então creio que posso lhe ajudar...

Este é o procedimento do passo 2 para homologação NTK Pay Go

"Realizar uma venda de qualquer valor, pré-selecionando a rede “CERTIFICAÇÃO” (campo 010-000=CERTIF), operação “VENDA” (campo 730-000=1), tipo de cartão “CRÉDITO” (campo 731-000=1) e tipo de financiamento “À VISTA” (campo 732-000=1)."

Perceba que no procedimento eles dizem quais campos devem ser informados. Porém creio que os campos devem ser diferentes para CliSitef por exemplo, ainda não cheguei nessa parte pelo CliSitef.

A minha sugestão de correção acima, é porque o evento não estava sendo chamado quando utiliza-se o CliSitef, mas no TefDial funciona perfeitamente.

 

Att,

Link para o comentário
Compartilhar em outros sites

  • Fundadores
22 horas atrás, marcianobandeira disse:

Fiz um ajuste na unit ACBrTEFDCliSiTef.pas e estou enviando em anexo, se puderem avaliar e adicionar ao SVN.

Porque você precisou desse evento, na CliSiTef ?

Observe que a variável "Req", não tem (muitas) informações úteis, assim como ocorre no TEF Dial...

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

Em 17/03/2018 at 13:02, Daniel Simoes disse:

Porque você precisou desse evento, na CliSiTef ?

Observe que a variável "Req", não tem (muitas) informações úteis, assim como ocorre no TEF Dial...

Boa tarde Daniel,

Eu gostaria de utilizar esse evento para direcionar o menu do CliSitef, a exemplo do PayGo, onde eu consigo direcionar a rede, o tipo de cartão, quantidade de parcelas etc.

Porém ainda não tenho certeza se essa seria a melhor alteranativa, usando este evento.

Consegui alguma coisa com a propriedade OperacaoCRT e a propriedade Restricoes do TefCliSitef, mas não consegui informar a quantidade de parcelas por exemplo.

Na prática, eu gostaria que o usuário não precisasse navegar pelo menu do CliSitef, e sim que o sistema, através de parametrizações, fizesse esse trabalho, assim é menos coisas para o usuário fazer o que agiliza o processo e evita erros.

Grato

Link para o comentário
Compartilhar em outros sites

Boa tarde,

Citar

Na prática, eu gostaria que o usuário não precisasse navegar pelo menu do CliSitef, e sim que o sistema, através de parametrizações, fizesse esse trabalho, assim é menos coisas para o usuário fazer o que agiliza o processo e evita erros.

Tenho a mesma necessidade. tentei fazer isso mas não consegui até agora.

Luiz

 

Editado por Jwest
Link para o comentário
Compartilhar em outros sites

  • Fundadores
1 hora atrás, marcianobandeira disse:

Consegui alguma coisa com a propriedade OperacaoCRT e a propriedade Restricoes do TefCliSitef, mas não consegui informar a quantidade de parcelas por exemplo.

Esse evento não funcionará, pois ele foi pensado apenas para o cenário do TEF Dial, onde é criado um arquivo TXT com todas as Chaves...

No SiTEF, você pode "interferir" nas respostas no próprio evento OnObtemCampo... Você pode ver qual é o "TipoCampo",  e já preencher o Valor em "Resposta" e "Digitado := True", sem a abertura de qualquer tela... De fato isso é muito usado, para quando o SiTef solicita as taxas de Embarque

 

  • Curtir 2
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

2 horas atrás, Daniel Simoes disse:

Esse evento não funcionará, pois ele foi pensado apenas para o cenário do TEF Dial, onde é criado um arquivo TXT com todas as Chaves...

No SiTEF, você pode "interferir" nas respostas no próprio evento OnObtemCampo... Você pode ver qual é o "TipoCampo",  e já preencher o Valor em "Resposta" e "Digitado := True", sem a abertura de qualquer tela... De fato isso é muito usado, para quando o SiTef solicita as taxas de Embarque

 

Entendi, neste caso se eu utilizar em conjunto as propriedades OperacaoCRT e Restricoes e tratar o evento OnObtemCampo e nos casos mais extremos tratar até o evento OnExibeMenu do clisitef creio que consigo chegar ao resultado esperado.

Obrigado pelas dicas Daniel.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Oi Daniel, 

segundo sua dica eu fiz algo como:

procedure TfrmPrincipal.ACBrTEFD1CliSiTefObtemCampo(Titulo: string;
  TamanhoMinimo, TamanhoMaximo, TipoCampo: Integer;
  Operacao: TACBrTEFDCliSiTefOperacaoCampo; var Resposta: AnsiString;
  var Digitado, VoltarMenu: Boolean);
 ....

.... 

 function no_parcelas_cartao:integer;
  var total:currency;
  begin
     total:=totaliza();
     if total<=100 then result:=1
     else if ((total>100) and (total<=500)) then result:=3
     else if ((total>501) and (total<=1000)) then result:=4
     else if (total>1000) then result:=6
     else result:=1
  end;

case TipoCampo of
      
      500:
        begin // esconde solicitação de Senha do Supervisor para Transação TEF
          Digitado := true; // TMinhaTelaSolicitacaoPersonalizada.Autoriza();
          VoltarMenu := false;
          Resposta := '';
        end;

      504: // Esconde Taxas de Servico e Taxa de Embarque
        begin
          PerguntaCampo := (ACBrTEFD1.TEFCliSiTef.Tag > 0);

          if not PerguntaCampo then
          begin
            Digitado := true;
            VoltarMenu := false;
            Resposta := '0,00';
          end
        end;
      505:
        begin // Preenche o no de parcelas do cartão
          AForm.ValorMinimo:=1;
          AForm.ValorMaximo:=no_parcelas_cartao;
          AForm.Edit1.Text:='1';
          if (no_parcelas_cartao>1) then begin
            MR := AForm.ShowModal;
            Digitado := (MR = mrOK);
            VoltarMenu := false;
            Resposta := AForm.Edit1.Text;//'3';
           end else begin //nao precisa mostrar dialogo- só 1 parcela
            Digitado := true;
            VoltarMenu := false;
            Resposta := '1';
           end
        end;

    else
      begin
        MR := AForm.ShowModal;
        Digitado := (MR = mrOK);
        VoltarMenu := (MR = mrRetry);
        if Digitado then
          Resposta := AForm.Edit1.Text;
      end;
    end;

Uma dúvida. Não tenho pinpad ainda. Comprei mas não recebi até o momento.

Minha pergunta é se fazendo assim e usando pinpad, o no. de parcelas vai aparecer no pinpad.

Sem pinpad, eu abro o form e checo se o número de parcelas está dentro da politica de preços do cliente, antes dele fechar o form.

Quando usando pinpad comporta-se de que forma?

 

  • Curtir 4
Link para o comentário
Compartilhar em outros sites

  • Fundadores

O PinPad é usado apenas quando é necessária a Senha do cartão... e o Sitef que comanda ele... não é disparado nenhum evento para a aplicação

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

  • 11 meses depois ...
Em 18/03/2018 at 20:27, marcianobandeira disse:

Entendi, neste caso se eu utilizar em conjunto as propriedades OperacaoCRT e Restricoes e tratar o evento OnObtemCampo e nos casos mais extremos tratar até o evento OnExibeMenu do clisitef creio que consigo chegar ao resultado esperado.

Obrigado pelas dicas Daniel.

Você conseguiu resolver? estou querendo informar antes de chamar a função CRT, se a venda será com cartão de crédito ou débito...

Link para o comentário
Compartilhar em outros sites

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

The popup will be closed in 10 segundos...