william Postado 7 Agosto, 2017 Postado 7 Agosto, 2017 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 EMBarbosa Postado 9 Agosto, 2017 Consultores Postado 9 Agosto, 2017 Você precisa verificar com o sistema de integração como é que eles esperam esse parâmetro. Daí poderá verificar se é implementado no ACBrTEFD. []'s Elton Profissionalize o ACBr na sua empresa, conheça o ACBr Pro. (15) 2105-0750 (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.
william Postado 9 Agosto, 2017 Autor Postado 9 Agosto, 2017 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 EMBarbosa Postado 9 Agosto, 2017 Consultores Postado 9 Agosto, 2017 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 Elton Profissionalize o ACBr na sua empresa, conheça o ACBr Pro. (15) 2105-0750 (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.
william Postado 9 Agosto, 2017 Autor Postado 9 Agosto, 2017 Agora, EMBarbosa disse: Eles esperam esse parâmetro no CRT? Não, apenas esses: Valor, IndiceFPG_ECF, DocumentoVinculado, Moeda
Consultores EMBarbosa Postado 9 Agosto, 2017 Consultores Postado 9 Agosto, 2017 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 Elton Profissionalize o ACBr na sua empresa, conheça o ACBr Pro. (15) 2105-0750 (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.
william Postado 9 Agosto, 2017 Autor Postado 9 Agosto, 2017 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?
william Postado 9 Agosto, 2017 Autor Postado 9 Agosto, 2017 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 EMBarbosa Postado 9 Agosto, 2017 Consultores Postado 9 Agosto, 2017 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 Elton Profissionalize o ACBr na sua empresa, conheça o ACBr Pro. (15) 2105-0750 (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.
william Postado 9 Agosto, 2017 Autor Postado 9 Agosto, 2017 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 Régys Silveira Postado 10 Agosto, 2017 Moderadores Solution Postado 10 Agosto, 2017 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; 1 Régys Borges da Silveira http://www.regys.com.br
william Postado 10 Agosto, 2017 Autor Postado 10 Agosto, 2017 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;
william Postado 10 Agosto, 2017 Autor Postado 10 Agosto, 2017 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;
marcianobandeira Postado 16 Março, 2018 Postado 16 Março, 2018 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
Jwest Postado 16 Março, 2018 Postado 16 Março, 2018 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.
marcianobandeira Postado 17 Março, 2018 Postado 17 Março, 2018 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 Daniel Simoes Postado 17 Março, 2018 Fundadores Postado 17 Março, 2018 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... Daniel Simões de Almeida O melhor TEF, é com o Projeto ACBr - Clique e Conheça Ajude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (15)99790-2976.
marcianobandeira Postado 18 Março, 2018 Postado 18 Março, 2018 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
Jwest Postado 18 Março, 2018 Postado 18 Março, 2018 (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 18 Março, 2018 por Jwest
Fundadores Daniel Simoes Postado 18 Março, 2018 Fundadores Postado 18 Março, 2018 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 2 Daniel Simões de Almeida O melhor TEF, é com o Projeto ACBr - Clique e Conheça Ajude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (15)99790-2976.
marcianobandeira Postado 18 Março, 2018 Postado 18 Março, 2018 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. 1
Jwest Postado 20 Março, 2018 Postado 20 Março, 2018 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? 4
Fundadores Daniel Simoes Postado 21 Março, 2018 Fundadores Postado 21 Março, 2018 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 Daniel Simões de Almeida O melhor TEF, é com o Projeto ACBr - Clique e Conheça Ajude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (15)99790-2976.
Márcio Antônio Postado 25 Fevereiro, 2019 Postado 25 Fevereiro, 2019 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...
Recommended Posts