-
Total de ítens
29.299 -
Registro em
-
Última visita
-
Days Won
781
Tipo de Conteúdo
Blocks
Notes ACBrLibNFe
Fóruns
Downloads
Calendário
Tudo que Daniel Simoes postou
-
Exibindo Imagens e Menus em PinPads com TEF PayGo - PGWebLib
um tópico no fórum postou Daniel Simoes TEF,PIX e Carteiras Digitais
O PayGo, disponibilizou uma nova versão de sua biblioteca PGWebLib 4.1.44.0, que permite as automações Enviar e manipular Imagens no PinPad, além de Menus para pesquisas ou outras funcionalidades Você pode encontrar essa nova biblioteca, no site oficial da PayGo Com essa nova biblioteca, implementamos os seguintes métodos, na classe TACBrTEFAPIClassPayGoWeb procedure CarregarImagemPinPad(const NomeImagem: String; AStream: TStream; TipoImagem: TACBrTEFAPIImagemPinPad ); override; procedure ExibirImagemPinPad(const NomeImagem: String); override; procedure ObterListaImagensPinPad(ALista: TStrings); override; procedure ApagarImagemPinPad(const NomeImagem: String); override; function MenuPinPad(const Titulo: String; Opcoes: TStrings; TimeOut: Integer = 30000): Integer; override; Isso permitirá que aplicações que usam o TEF PayGo, através da biblioteca PGWebLib, possam enviar Logotipos ao PinPad, ou QRCode do PIX, quando integrado por fora do TEF... A funcionalidade de exibição de Menus no PinPad, também é muito útil para pesquisas de satisfação, por exemplo... Exemplo de como enviar um QRCode ao PinPad, usando o componente ACBrTEFAPI ACBrTEFAPI1.ExibirQRCodePinPad( '00020101021226900014BR.GOV.BCB.PIX2568pix-qr.mercadopago.com/instore/p/v2/7edcf890b0de4f0689fe7aea52e447b843540016com.mercadolibre0130'+ 'https://mpago.la/pos/1078225765204000053039865802BR5907GETCARD6009SAO PAULO62070503***6304424C', 'QRCODE'); Usando o método acima, o ACBrTEFAPI, cuidará de renderizar uma imagem PNG em QRCode, com a String de um PIX, respeitando as dimensões de tela do PinPad, e por fim, transmiti-lo ao PinPad, e exibi-lo... Se você deseja enviar a sua própria imagem, use o comando abaixo: procedure TFormPrincipal.Button2Click(Sender: TObject); var FileLogo, MediaName: String; begin FileLogo := ApplicationPath+'LogoACBr.png'; // Path completo, para a Imagem a ser transmitida MediaName := 'LOGOACBR'; // Nome da Imagem no PinPad ACBrTEFAPI1.CarregarImagemPinPad(MediaName, FileLogo); ACBrTEFAPI1.ExibirImagemPinPad(MediaName); end; Observe que o primeiro comando, apenas transmite a Imagem ao PinPad... e isso pode demorar alguns segundos... O Segundo comando, comanda a exibição da uma Imagem já existente (carregada) no PinPad... Você pode ainda, usar o comando abaixo, para conhecer as imagens existentes no PinPad... ACBrTEFAPI1.ObterListaImagensPinPad(AStringList); O comando espera receber um TStrings, e irá preenche-lo com o nome das imagens existentes no PinPad ...se necessário, você pode aparar as Imagens da memória do equipamento MediaName := 'LOGOACBR'; ACBrTEFAPI1.ApagarImagemPinPad(MediaName); Já a funcionalidade de Exibição de Menus no PinPad, pode ser obtida, conforme exemplo abaixo: procedure TFormPrincipal.btMenuPinPadClick(Sender: TObject); var sl: TStringList; i: Integer; begin sl := TStringList.Create; try sl.Add('Item1'); sl.Add('Item2'); sl.Add('Item3'); i := ACBrTEFAPI1.MenuPinPad('Titulo do Menu', sl); // Chama o Menu no PinPad ShowMessage('Selecionada opção: '+IntToStr(i)); finally sl.Free; end; end;-
- 2
-
-
O ACBr não usa essa DLL
-
ACBRLIB NFSe Cidade de Guajara-Mirim RO
Daniel Simoes replied to Desenvolvimento.microline's tópico in ACBrLIB
@Italo Giurizzato Junior, Acredita que as alteracoes estão corretas? -
Relatórios Administrativos não imprimem
Daniel Simoes replied to jefferson.vivaldi's tópico in Dúvidas sobre TEF
O mesmo problema, ocorre com o Demo do ACBrTEFAPI ? -
ACBRLIB NFSe Cidade de Guajara-Mirim RO
Daniel Simoes replied to Desenvolvimento.microline's tópico in ACBrLIB
Olá @Desenvolvimento.microline, Você teria alguma informação, sobre a URL ou provedor correto ? -
Certificação MSitef FiServ
Daniel Simoes replied to Dércio Luis Zanatta's tópico in Dúvidas sobre TEF
Tentou usar o ACBrTEFAndroid ? -
@Robson_Renan, não está nos nossos planos recentes, tentar fazer ajustes para essas restrições do google No meu entendimento, o correto é a Sw.Houses ter ser próprio servidor SMTP, ao invés de usar contas pessoais, dos clientes, para envio de emails Veja esse vídeo:
-
Humm... realmente o problema ocorrerá, quando 'FazerRequisicaoSiTef' for chamado novamente... Ou seja, se houver multiplos cartões na mesma venda, ele usará uma informação de DataHora, para cada chamada a 'FazerRequisicaoSiTef'... Estou aguardando a liberação de um SDK para testes, para rever a integração com a Fiserv
-
@antoniojmsjr, enviei ao SVN, modificações, baseado em suas sugestões... Commit [r39850] -- ACBrTEFComum -- [+] Adicionada a propriedade TACBrTEFResp.PAN [*] Quando atribui algum valor a PAN, calcula o BIN e NFCeSAT.UltimosQuatroDigitos, caso essas propriedades sejam vazias
-
Não encontrei na documentação oficial, informações sobre o retorno do campo 2021 https://dev.softwareexpress.com.br/docs/clisitef/clisitef_documento_principal/ Ele não seria a mesma coisa, que o campo 136 (BIN) ?
-
oi @antoniojmsjr, poderia por favor, anexar a Unit modificada ?
-
@SIDesenvolvimento, Estou aguardando a liberação de um ambiente de testes pela Fiserv... Retorno nesse tópico em breve...
-
ficou um pouco confuso... - o TEF Scope, é implementado no componente ACBrTEFAPI, usando a DLL. - A GetCard tem uma aplicação que emula o TEF por troca de arquivos, no TEF Scope
-
Faz todo sentido.. obrigado, enviado ao SVN... Commit 39700
-
humm, ok... provavelmente eles repostaram em relação a esses outros métodos.. Vou fazer uma validação Experimente apagar eles, antes da inicialização... ACBrTEFAPI1.LimparRespostasTEF;
-
Obrigado pela contribuição... Revi as demais classes, e implementei nas que tem a informação da Versão.. Commit [r39573]
-
Apliquei uma ampla revisão nos fontes, no método LerInfo de todas as classes... Commit [r39561]
-
O Sitef tem um funcionamento diferente, onde devemos informar quais formas de pagamento não queremos... Isso é feito, nos fontes do ACBr, em TACBrTEFAPIClassCliSiTef.EfetuarPagamento Observe que nesse método, o ACBr tenta traduzir os parâmetros recebidos no método EfetuarPagamento para esses parâmetros de restrição... Restricoes := DadosAdicionais; if (pos('[', fParamAdicFuncao.Text) = 0) then // Não especificou Restrições de Menu ? begin if (Op <> 0) and (OP <> 1) then // Débito Restricoes := Restricoes + CSITEF_RestricoesCueque + ';'; if (Op = 2) then // Débito Restricoes := Restricoes + CSITEF_RestricoesCredito + ';' else if (Op = 3) then // Crédito Restricoes := Restricoes + CSITEF_RestricoesDebito + ';'; if (Financiamento = tefmfAVista) then begin Restricoes := Restricoes + CSITEF_RestricoesParcelado + ';'; Restricoes := Restricoes + CSITEF_RestricoesParcelaAministradora + ';'; Restricoes := Restricoes + CSITEF_RestricoesParcelaEstabelecimento + ';'; end else if (Financiamento = tefmfParceladoEmissor) then begin Restricoes := Restricoes + CSITEF_RestricoesAVista + ';'; Restricoes := Restricoes + CSITEF_RestricoesParcelaEstabelecimento + ';'; end else if (Financiamento = tefmfParceladoEstabelecimento) then begin Restricoes := Restricoes + CSITEF_RestricoesAVista + ';'; Restricoes := Restricoes + CSITEF_RestricoesParcelaAministradora + ';'; end; e no final, ele adiciona os parâmetros que você tenha injetado em ParamAdicConfig e move tudo para ParamAdicFuncao... // Convertendo para formato de parâmetro, conforme esperado if (SL.Count > 0) then begin Restricoes := StringReplace(Trim(SL.Text), sLineBreak, ';', [rfReplaceAll]); if Restricoes <> '' then Restricoes := '['+Restricoes+']'; if fParamAdicConfig.Count > 0 then Restricoes := Restricoes + ';'+ Trim(fParamAdicConfig.Text); if (Restricoes <> '') then fParamAdicFuncao.Add( Restricoes ); end; finally SL.Free; end; Então precisamos ver no Log do ACBr (ou Sitef), como ficaram as restrições e parâmetros finais, enviados para o Sitef Segunda a documentação do SiTEF: https://dev.softwareexpress.com.br/docs/clisitef/clisitef_documento_principal/#início-da-transação-de-pagamento-ou-gerencial 110 Abre o menu de transações Gerenciais Os Cancelamentos, iniciam no comando 200 (que é o comando padrão do ACBr)
-
Show, obrigado @antoniojmsjr já vou analisar...
-
Olá @SIDesenvolvimento Você usa ACBrTEFD ou ACBrTEFAPI ? Seus fontes estão atualizados ? (lembro de ter feito um ajuste, para ele usar a hora atual, se não for informado o Documento da Venda) notei que em algumas situações no Log, está sendo enviado o Indentificador da Transação como zeros No seu Log, parece estar sendo enviado 200... veja Você pode configurar isso, na propriedade OperacaoCancelamento, exemplo: if ACBrTEFAPI1.TEF is TACBrTEFAPIClassCliSiTef then begin with TACBrTEFAPIClassCliSiTef(ACBrTEFAPI1.TEF) do begin OperacaoCancelamento := 110; end; end; Você está informando o parâmetro 'Financiamento' do método 'EfetuarPagamento' ? Ok := ACBrTEFAPI1.EfetuarPagamento( IntToStr(Venda.NumOperacao), AValor, Modalidade, CartoesAceitos, tefmfAVista); // <----- AQUI -----
-
Enviado ao SVN... Commit [r39536] Não consegui baixar esse último anexo...
-
Obrigado... Analisando...
