Jump to content

Promoção de Natal SAC Mensal

Contrate e ganhe 1 Kit agenda + Caneta
Saiba mais

LANÇAMENTO
Curso Completo - Dominando o ACBrMonitor

Conheça o Curso

Balança SM100 performance surpreendente

Tecnologia Japonesa   Teclado e Visor resistentes a água
Consumo inteligente de etiquetas   Baixo custo de manutenção
Comunicação Ethernet e WIFI independentes

Saiba mais

Impressora de Etiquetas ELGIN - L42 PRO

Protocolos PPLA, PPLB, ZPL, EPL (automático)
Porta USB padrão Opcionais: Ethernet, Serial, Paralela
Sensor de Etiquetas Móvel Garantia de 18 meses

Saiba mais

william

ANSWERED Informar quantidade de parcelas TEF

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.

 

Share this post


Link to post
Share on other sites

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
Ajude o Projeto ACBr crescer - Assine o SAC

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.

Share this post


Link to post
Share on other 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?

 

 

Share this post


Link to post
Share on other sites
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
Ajude o Projeto ACBr crescer - Assine o SAC

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.

Share this post


Link to post
Share on other sites
Agora, EMBarbosa disse:

Eles esperam esse parâmetro no CRT?

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

Share this post


Link to post
Share on other sites
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
Ajude o Projeto ACBr crescer - Assine o SAC

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.

Share this post


Link to post
Share on other 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?

Share this post


Link to post
Share on other 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?

Share this post


Link to post
Share on other sites

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
Ajude o Projeto ACBr crescer - Assine o SAC

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.

Share this post


Link to post
Share on other 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);

 

Share this post


Link to post
Share on other sites

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;

 

  • Like 1

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi

Share this post


Link to post
Share on other 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;

 

Share this post


Link to post
Share on other 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;

 

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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,

Share this post


Link to post
Share on other sites
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
Ajude o Projeto ACBr crescer - Assine o SAC

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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

 

Edited by Jwest

Share this post


Link to post
Share on other sites
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

 

  • Like 2

Consultor SAC ACBr

Daniel Simões de Almeida
Ajude o Projeto ACBr crescer - Assine o SAC

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

Share this post


Link to post
Share on other 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.

  • Like 1

Share this post


Link to post
Share on other 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?

 

  • Like 3

Share this post


Link to post
Share on other sites

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
Ajude o Projeto ACBr crescer - Assine o SAC

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

Share this post


Link to post
Share on other sites
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...

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...