Painel de líderes
Conteúdo popular
Showing content with the highest reputation on 15-02-2022 em todas as áreas
-
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 ponto
-
@Daniel Simoes ignora minha mensagem por gentileza, a cliente não havia ligado a impressora.... Está funcionando perfeitamente, testei I7, I9 e TMT20 100% funcionando perfeito. Muito obrigado... Por favor, pode fechar o post.... Muito obrigado !1 ponto
-
No modo USB nativo, o ACBr consegue ler e escrever na porta... será quase idêntico ao modo porta Serial o ACBr detectar o dispositivo USB que tenha a "assinatura" de impressora e usa a WinAPI, para escrever e ler nele...1 ponto
-
O melhor é usar o ACBr em modo USB nativo... Configure a impressora, para ficar em modo USB... Veja esse tópico:1 ponto
-
Nem citei ali a resolução pq, procurei o esquema do log que o Daniel falou e coloquei pra gravar, e compilei novamente o sistema, nisso começou a funcionar. Não entendi o porque, mas ta funcionando desde ontem pela manhã. Qualquer coisa abro novo tópico aqui pra falar sobre isso.1 ponto
-
1 ponto
-
1 ponto
-
Olá Italo! Vou atualizar o componente durante a semana e te aviso os resultados. Obrigado.1 ponto
-
não precisa ir longe. tem vídeos no canal do regys mostrando como salvar os xmls direto no banco e restaurar só que o schemas não tem como esses vai precisar estar no micro local mas te digo uma coisa se tu tem o banco em nuvem e liberou a porta está errado a forma de trabalhar e tu tá consumindo banda de internet desnecessária e também recursos do servidor quanto faz isso tu tem que ter api pra isso e conectar nela levar regra de negocia pra ela.1 ponto
-
1 ponto
-
Sinceramente, nunca tentei enviar cobrança sem fazer o cálculo do dígito do nosso número. Vou ver se consigo fazer este teste de alguma forma e retorno com mais informações, caso consiga.1 ponto
-
Agradeço imensamente o retorno dos 2. Creio piamente que o problema realmente é com o provedor, visto que os componentes do ACBr nunca me deixaram na mão e realmente o erro não é mesmo do componente. O problema é que temos apenas 2 clientes usando a NFSe e o volume de problemas que nos trás é imensamente maior que o valor R$ pago de suporte. Realmente não faz mais sentido manter a emissão de NFSe em nosso sistema por este motivo. @Italo Giurizzato Junior te compreendo perfeitamente e sei que o problema não é o ACBr e sempre que posso eu dou retornos sobre as situações que ocorrem conosco. Enfim, agradeço a ajuda e emprenho de todos....1 ponto
-
1 ponto
-
Vi que voces aceitaram minha colaboração. Muito obrigado! Identifiquei o mesmo problema na ACBrNFeDANFEFRDM.pas, a original processou por 12hs e nao terminou a geraçao de 3000 NF's Segue a versao corrigida que fez o trabalho em 50mins Abraços ACBrNFeDANFEFRDM.pas1 ponto
-
1 ponto