Ir para conteúdo
  • Cadastre-se

dev botao

Informar quantidade de parcelas TEF


Ver Solução Respondido por Régys Silveira,

Recommended Posts

Postado

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.

 

  • Consultores
Postado

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.
Postado
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?

 

 

  • Consultores
Postado
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.
  • Consultores
Postado
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.
Postado
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?

Postado
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?

  • Consultores
Postado

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.
Postado
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);

 

  • Moderadores
  • Solution
Postado

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
Postado
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;

 

Postado
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;

 

  • 7 meses depois ...
Postado

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

Postado

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.

Postado
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,

  • Fundadores
Postado
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.

Postado
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

Postado (editado)

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
  • Fundadores
Postado
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.

Postado
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
Postado

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
  • 11 meses depois ...
Postado
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...

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.

The popup will be closed in 10 segundos...