-
Total de ítens
2.835 -
Registro em
-
Última visita
-
Days Won
6
Tudo que antonio.carlos postou
-
Como utilizar voucher no TEF Dedicado (PayGoWeb) em Produção
um tópico no fórum postou antonio.carlos TEF,PIX e Carteiras Digitais
Olá pessoal, estou criando este tópico para orientar como utilizar as Bandeiras Vouchers no TEF Dedicado (PayGo Web). Cartão do tipo benefícios (alimentação, refeição, pass), são conhecidos como Vouchers. Antes de qualquer tentativa de transacionar um voucher no estabelecimento, precisamos validar algumas informações: 1 - Estabelecimento precisa ter contrato com a empresa de voucher que deseja utilizar, isso é uma exigência do próprio fornecedor de voucher, para que o estabelecimento possa aceitar a bandeira em sua região. Note que existem modalidades até em casos de Voucher, ramos de negócios são separados por tipos, ALIMENTAÇÃO, REFEIÇÃO, PASS, PRESENTE, CAR, SALÁRIO, NATAL, CULTURA, etc. Seu cliente escolhe a modalidade que encaixa no negócio que ele atua: 2 - A partir disso, o estabelecimento precisa habilitar a compatibilidade com a(s) adquirente (s). Lembrando a Regra de negócio: a adquirente decide se a bandeira tem compatibilidade no TEF, a negociação parte dela, não pela Integradora PayGo. Quando o estabelecimento habilitar a compatibilidade do voucher tem que informar que vai transacionar pelo TEF Dedicado PayGoWeb. Exemplo: Adquirente CIELO aceita o voucher Alelo Alimentação pelo TEF Dedicado PayGoWeb. Observação: Isso é um contrato entre Voucher e Adquirente, então pode ocorrer mudanças , como por exemplo, VR Refeição não passa mais na REDE pois houve encerramento de contrato entre elas , mas pode ser aceito por outra(s) adquirente(s), como a CIELO. 3 - Se o estabelecimento estiver com o cadastro correto no voucher e habilitado na adquirente, precisamos informar a forma de pagamento correta, no TEF Dedicado (PayGoWeb) para pagamentos com voucher informar PWINFO_CARDTYPE = 04. Veja exemplo no componente ACBrTEFAPI: procedure TFormPrincipal.AdicionarPagamento(const Indice: String; AValor: Double ); var Ok, TemTEF: Boolean; Modalidade: TACBrTEFModalidadePagamento; CartoesAceitos: TACBrTEFTiposCartao; ReajusteValor: Double; IndicePagto: LongInt; begin Ok := False; TemTEF := False; IndicePagto := StrToIntDef(Indice, 0); try // ** NOTA ** // Usa '01' como Indice de Forma de Pagamento de ECF, para todas as operações TEF, // para evitar que o ACBrTEFD tente separar os Comprovantes por Forma de Pagamento Modalidade := tefmpNaoDefinido; CartoesAceitos := []; TemTEF := (IndicePagto >= 2) and (IndicePagto <= 5); case IndicePagto of 2: Modalidade := tefmpCheque; 3: begin Modalidade := tefmpCartao; CartoesAceitos := [teftcCredito] end; 4: begin Modalidade := tefmpCartao; CartoesAceitos := [teftcDebito] end; 5: Modalidade := tefmpCarteiraVirtual; 6: begin Modalidade := tefmpCartao; CartoesAceitos := [teftcVoucher] <--------------------- AQUI end; end; if TemTEF then begin // -- Exemplo, usando TypeCast, para inserir Propriedades direto na Classe de TEF -- // if ACBrTEFAPI1.TEF is TACBrTEFAPIClassPayGoWeb then begin with TACBrTEFAPIClassPayGoWeb(ACBrTEFAPI1.TEF) do begin //TEFPayGoAPI.ParametrosAdicionais.ValueInfo[PWINFO_AUTHSYST] := 'DEMO'; // Autorizador //TEFPayGoAPI.ParametrosAdicionais.ValueInfo[PWINFO_FINTYPE] := '2'; // 01: à vista, 2: parcelado //TEFPayGoAPI.ParametrosAdicionais.ValueInfo[PWINFO_INSTALLMENTS] := '3'; // Parcelas end; end; Ok := ACBrTEFAPI1.EfetuarPagamento( IntToStr(Venda.NumOperacao), AValor, Modalidade, CartoesAceitos, tefmfAVista ); Ok := Ok and ACBrTEFAPI1.UltimaRespostaTEF.Sucesso and ACBrTEFAPI1.UltimaRespostaTEF.TransacaoAprovada; end else Ok := True; finally StatusVenda := stsEmPagamento; end; // -- Exemplo de como capturar os Erros retornados pela API do TEF PayGoWeb -- // (* if not OK then begin if (ACBrTEFAPI1.TEF is TACBrTEFAPIClassPayGoWeb) then begin CodErro := ACBrTEFAPI1.UltimaRespostaTEF.LeInformacao(PWINFO_RET).AsInteger; MsgErro := ACBrTEFAPI1.UltimaRespostaTEF.LeInformacao(PWINFO_RESULTMSG).AsBinary; ShowMessage('Erro: '+IntToStr(CodErro)+' - '+Trim(MsgErro)); end; end; *) if Ok then begin with Venda.Pagamentos.New do begin TipoPagamento := Indice; ValorPago := AValor; if TemTEF then begin NSU := ACBrTEFAPI1.UltimaRespostaTEF.NSU; Rede := ACBrTEFAPI1.UltimaRespostaTEF.Rede; RedeCNPJ := ACBrTEFAPI1.UltimaRespostaTEF.NFCeSAT.CNPJCredenciadora; // Calcula a Diferença do Valor Retornado pela Operação TEF do Valor que // Informamos no CRT/CHQ ReajusteValor := RoundTo(Double(ACBrTEFAPI1.UltimaRespostaTEF.ValorTotal - ValorPago), -2); Saque := ACBrTEFAPI1.UltimaRespostaTEF.Saque; if (Saque > 0) then begin // Se houve Saque na operação TEF, devemos adicionar no ValorPago, // para que o Saque conste como Troco ValorPago := ValorPago + Saque end else if (ReajusteValor > 0) then begin // Se não é Saque, mas houve acréscimo no valor Retornado, devemos lançar // o Reajuste como Acréscimo na venda Venda.TotalAcrescimo := Venda.TotalAcrescimo + ReajusteValor; end; Desconto := ACBrTEFAPI1.UltimaRespostaTEF.Desconto; if (Desconto > 0) then begin // Se houve Desconto na Operação TEF, devemos subtrair do ValorPago // e lançar um Desconto no Total da Transacao ValorPago := ValorPago - Desconto; Venda.TotalDesconto := Venda.TotalDesconto + Desconto; end else if (ReajusteValor < 0) then begin // Se não é Desconto, mas houve redução no Valor Retornado, devemos // considerar a redução no ValorPago, pois a Adquirente limitou o // valor da Operação, a um máximo permitido... Deverá fechar o cupom, // com outra forma de Pagamento ValorPago := ValorPago + ReajusteValor; end; end else Confirmada := True; end; AtualizarPagamentosVendaNaInterface; if (Venda.TotalPago >= Venda.TotalVenda) then FinalizarVenda; end; end; Veja exemplo no componente ACBrTEFD: procedure TFormPrincipal.AdicionarPagamento(const Indice: String; AValor: Double ); var Ok, TemTEF: Boolean; ReajusteValor: Double; UltResp: TACBrTEFResp; procedure InformarParametrosVoucher; begin if (ACBrTEFD1.GPAtual = gpPayGoWeb) then begin ACBrTEFD1.TEFPayGoWeb.ParametrosAdicionais.ValueInfo[PWINFO_PAYMNTTYPE]:='1'; ACBrTEFD1.TEFPayGoWeb.ParametrosAdicionais.ValueInfo[PWINFO_CARDTYPE]:='04'; <----------------------- AQUI end; end; begin Ok := False; TemTEF := False; FIndicePagto := Indice; if (ACBrTEFD1.GPAtual = gpPayGoWeb) then ACBrTEFD1.TEFPayGoWeb.ParametrosAdicionais.Clear else if (ACBrTEFD1.GPAtual = gpCliSiTef) then ACBrTEFD1.TEFCliSiTef.OperacaoCRT := 0; try // ** NOTA ** // Usa '01' como Indice de Forma de Pagamento de ECF, para todas as operações TEF, // para evitar que o ACBrTEFD tente separar os Comprovantes por Forma de Pagamento else if (Indice = '06') then // 05-VALE REFEICAO begin InformarParametrosVoucher; <--------------------------- AQUI Ok := ACBrTEFD1.CRT(AValor, '01'); TemTEF := True; end else Ok := True; // Pagamentos não TEF finally StatusVenda := stsEmPagamento; end; if Ok then begin with Venda.Pagamentos.New do begin TipoPagamento := Indice; ValorPago := AValor; if TemTEF then begin UltResp := ACBrTEFD1.RespostasPendentes[ACBrTEFD1.RespostasPendentes.Count-1]; NSU := UltResp.NSU; Rede := UltResp.Rede; RedeCNPJ := UltResp.NFCeSAT.CNPJCredenciadora; // Calcula a Diferença do Valor Retornado pela Operação TEF do Valor que // Informamos no CRT/CHQ ReajusteValor := RoundTo(Double(UltResp.ValorTotal - ValorPago), -2); Saque := UltResp.Saque; if (Saque > 0) then begin // Se houve Saque na operação TEF, devemos adicionar no ValorPago, // para que o Saque conste como Troco ValorPago := ValorPago + Saque end else if ReajusteValor > 0 then begin // Se não é Saque, mas houve acréscimo no valor Retornado, devemos lançar // o Reajuste como Acréscimo na venda Venda.TotalAcrescimo := Venda.TotalAcrescimo + ReajusteValor; end; Desconto := UltResp.Desconto; if Desconto > 0 then begin // Se houve Desconto na Operação TEF, devemos subtrair do ValorPago // e lançar um Desconto no Total da Transacao ValorPago := ValorPago - Desconto; Venda.TotalDesconto := Venda.TotalDesconto + Desconto; end else if (ReajusteValor < 0) then begin // Se não é Desconto, mas houve redução no Valor Retornado, devemos // considerar a redução no ValorPago, pois a Adquirente limitou o // valor da Operação, a um máximo permitido... Deverá fechar o cupom, // com outra forma de Pagamento ValorPago := ValorPago + ReajusteValor; end; end else Confirmada := True; end; AtualizarPagamentosVendaNaInterface; if (Venda.TotalPago >= Venda.TotalVenda) then FinalizarVenda; end; end; 4 - Se continuar recusando ou dando erros durante a venda... Faça uma carga de tabelas no Muxx manualmente na PayGo, contate a Central de suporte do TEF PayGo, podem receber atendimento gratuito e funciona 24 horas por dia e 7 dias por semana! Contato PayGo Ligação: 3003-9968 (não é necessário DDD). Ou via WhatsApp: (11) 3003-6615 Importante sempre informar o *CNPJ do estabelecimento*, sem pontos ou traços. Ex: 12345678000100 , e o tipo do TEF ativado na automação: TEF Dedicado PayGo Web . Se você já parceiro TEF do Projeto ACBr pode esclarecer suas dúvidas nos canais exclusivos ACBR TEF #tefproducao em nosso Discord. https://www.projetoacbr.com.br/discord E se ainda não é, O Projeto ACBr é Distribuidor do TEF PayGo.. Seja nosso parceiro, preencha este formulário, https://projetoacbr.com.br/tef/ por favor, com algumas perguntas rapidinhas, que nosso Consultor comercial entrara em contato explicar a parceria.- 1 reply
-
- 4
-
-
Exemplo do SVN é uma coisa, download da biblioteca ACBrLib é outra.. você faz download da biblioteca.. feito isso você vai precisar copiar a biblioteca para o exemplo conforme o tópico de configuração .. pronto Qual linguagem de programação você vai utilizar para ACBrLibBoleto ?
-
exato, ai estão os exemplos em C#, Java, VB6 e etc. para utilizar a biblioteca você tem que fazer download dela no link que postei acima e ai usar o tópico de como configurar a biblioteca conforme sua linguagem de programação.
-
Veja este tópico: https://www.projetoacbr.com.br/forum/topic/64887-bem-vindo-a-acbrlib/
-
Acabei de testar exemplo do svn, AnyCPU. Seu computador é 32 ou 64 ? se for 32 e rodar em anycpu, você precisa utilizar ACBrLibNFe32. se seu computador for 64 você tem que usar ACBrLibNFe64.
-
você esta compilando exemplo SingleThread ou MultiThread e em AnyCPU, x86 ou x64 ?
-
para NFCe não, somente NFe.
-
@jt_vb bom dia ! não precisa informar esta tag para NFCe. veja exemplo NFCe.ini da documentação https://acbr.sourceforge.io/ACBrLib/ModeloNFCeINI.html
-
anexe um print desta pasta. você esta usando sua aplicação ou o exemplo disponível no svn ?
-
-
Como realizar limpeza das tabelas do pinpad
um tópico no fórum postou antonio.carlos TEF,PIX e Carteiras Digitais
Olá pessoal, estou criando este tópico para mostrar como realizar uma limpeza das tabelas do pinpad. Essas tabelas são baixadas das adquirentes para o pinpad, consumindo uma memória interna. Caso a memória interna do pinpad fique em 100% de uso, irá começar a receber algumas mensagens de retorno dependendo do TEF que estiver utilizando em seu cliente, por exemplo, no TEF PayGoWeb via dll, podemos notar estas mensagens no log da dll: 10:33:28:965 [PP-Treatment] ERRO! [-2121] Se olharmos no manual de integração do TEF PayGoWeb, o erro -2121 quer dizer: PWRET_PPS_TABERR - Erro ao tentar gravar tabelas (falta de espaço, por exemplo). Outra mensagem que também pode aparecer nos log do TEF PayGoWeb é: [PIN Treatment] Necessidade de limpeza de tabelas PIN-pad. E como faço para limpar essa tabela do pinpad ? Muito simples ! Abaixo vou deixar algumas imagens de como funciona. Primeiramente vamos realizar uma busca do pinpad: Podemos informar o numero da PortaCOM que o pinpad esta configurado ou fazer uma busca automática do pinpad (dê preferencia sempre pela busca automática). Então vamos selecionar opção 1 - Busca automática pela porta. Assim que o programa identificar o pinpad, vai aparecer as seguintes opções: Você pode realizar um teste completo do pinpad ou parcial dependendo da opção que escolher, como o intuito deste tópico é sobre a limpeza das tabelas. Então vamos selecionar a opção 4 - Apagar Tabela pinpad. Após selecionar opção 4, vamos ter que informar o índice da tabela a ser apagada: Se for apagar todos os índices, vamos manter o valor "00" e dar um Enter. Feito isso, você receberá uma mensagem dizendo que as tabelas foram deletadas com sucesso. Podemos então selecionar opção 0 - Sair e realizar uma nova transação, onde vai ocorrer uma nova carga de tabelas serão baixadas para o pinpad. Entre em contato conosco no Discord ou por e-mail: tef@projetoacbr.com.br que vamos disponibilizar o programa para realizar limpeza das tabelas.- 1 reply
-
- 4
-
-
Olhando o xml, o elemento 'pgto' não pode estar vazio veja este xml de exemplo: exemplo_007.xml
-
Tente utilizar o ACBrSATSign:
-
Obrigado por reportar. Fechando. Para novas dúvidas, criar um novo tópico.
-
Instalou driver da fabricante ? nas configurações do SAT no ACBrMonitor, basta apontar o modelo do SAT que o próprio ACBrMonitor vai apontar a dll correta. Veja exemplo de configuração:
-
Olá pessoal, estou criando este tópico para mostrar quais portas devem ser liberadas no seu cliente, caso você estiver utilizando TEF Dedicado (PayGoWeb). Todos que utilizam o TEF Dedicado (PayGoWeb), sabem que no passo de configuração, precisamos informar um endereço e porta de conexão, para se comunicar com os servidores do TEF PayGo. Caso não tenham sucesso neste passo, verifique se estão liberados os seguintes endereços e portas na infraestrutura do seu cliente: Ambiente: PL03 - Site principal AWS Endereço: pl03.pgweb.io Range: 18.230.107.108 18.228.255.251 Portas: 17500 31735 Ambiente: PRD - Site principal AWS (Porteiro) Endereço: porteiro-prod.pgweb.io Range: 18.228.250.49 18.229.245.89 Portas: 17500 31732 Ambiente: PL03 - Site Recovery Endereço: pl03.pgweb.io Range: 200.219.237.102 186.228.18.244 Portas: 17500 31735 Ambiente: PRD - Site Recovery (Porteiro) Endereço: porteiro-prod.pgweb.io Range: 200.219.237.101 186.228.18.243 Portas: 17500 31732 Qualquer dúvida entre em contato nos canais TEF em nosso Discord: https://www.projetoacbr.com.br/discord
- 1 reply
-
- 6
-
-
-
@walter faria veja se este tópico pode te ajudar
-
Obrigado por reportar. Fechando. Para novas dúvidas, criar um novo tópico.
-
Obrigado por reportar. Fechando. Para novas dúvidas, criar um novo tópico.
-
Obrigado por reportar. Fechando. Para novas dúvidas, criar um novo tópico.