Ir para conteúdo
  • Cadastre-se

Daniel Simoes

Fundadores
  • Total de ítens

    26.199
  • Registro em

  • Última visita

  • Days Won

    749

Posts postados por Daniel Simoes

  1. Olá comunidade do ACBr,

    É com muita satisfação, que anunciamos a criação de um novo componente, o ACBrAbecsPinPad, no Package ACBrSerial

    eftpos.png

     

    O que faz o ACBrAbecsPinPad ?

    Esse componente permite que você se comunique de forma direta, com PinPads que sigam o protocolo ABECS.

    Com ele você poderá realizar tarefas como:

    • Limpar e Exibir Mensagens no Display
    • Exibir imagens PNG, JPG, GIF no Display (útil para exibição de QRCode, Animações e Logos)
    • Efetuar Perguntas padrões no PinPad, e coletar a resposta dos usuários (os tipos de perguntas, são padronizados pela ABECS)
    • Exibir Menus no PinPad (útil para pesquisa de satisfação)
    • Coletar Informações do PinPad, como: Num.Serial, capacidades da Tela, Memória disponível, etc

    No mercado nacional, todos os PinPads comercializados, precisam seguir essa especificação.

    Você pode encontrar a especificação do Protocolo ABECS, nesse Documento

    Não é o intuito desse componente, contemplar os métodos de captura de cartão e senha, pois isso exige o conhecimento de tarefas complexas, e chaves para a comunicação segura... Essas tarefas já são realizadas pelas bibliotecas de TEF como a PayGo

     

    O que é um PinPad ?

    O Pin Pad pode ser definido como um equipamento eletrônico de pagamento que faz a leitura de cartões e que conta com um teclado para que o cliente possa digitar a senha (se necessário) e, assim, validação da transação financeira.

    O Pin Pad não é um aparelho autônomo. Ele precisa estar conectado a outros elementos para funcionar, tais como um PC ou um PDV Android.

    De modo geral, eles aceitam diferentes tipos de cartões — a exemplo dos de crédito, débito, vale-alimentação e vale-refeição — e das mais variadas bandeiras

    Fonte: https://zoop.com.br/blog/pagamento/o-que-e-pin-pad/

    Veja um exemplo do Equipamento: Q25 da Tectoy

     

    Onde posso achar o novo componente ?

    Os fontes já estão disponíveis no SVN do ACBr.

    Demos em Lazarus e Delphi já estão disponíveis na pasta: \ACBr\Exemplos\ACBrSerial\ACBrAbecsPinPad...

    A versão mínima do Delphi é a 10.3.x, isso ocorre porque as versões anteriores não suportam Imagem PNG, e o Pinpad não suporta Imagem em formato BMP.

    p3.png

    p2.pngp1.png

     

    O que preciso para testar ?

    Qualquer PinPad, que seja compatível com ABECS.
    Lembrando que todos os PinPads vendidos no mercado brasileiro o são.

    A versão da ABECS que nos baseamos a 2.12, entretanto ele deve ser compatível com versões inferiores...
    Você pode ver a versão da biblioteca ABECS embarcada no seu PinPad, quando o mesmo é inicializado.

    Por norma da ABECS, o PinPad deve possuir cabo USB, mas disponibilizar uma Porta Serial, quando conectado ao equipamento.Portanto, sempre usaremos a comunicação Serial do ACBr, para "falar" com o PinPad

    É importante que você instale o Driver do Fabricante do equipamento, antes de iniciar os testes, pois o driver genérico do Windows, pode não funcionar adequadamente...

     

    O ACBrAbecsPinPad  está disponível em Lib (DLL) ?

    Não no momento, mas há planos futuros...

     

    Quem é  a ABECS ?

    A Abecs atua desde 1971 como representante oficial do setor de meios eletrônicos de pagamento no Brasil. É responsável pela interlocução do setor perante o mercado, os órgãos públicos e a sociedade. Congrega atualmente mais de 90 empresas desse segmento, representando assim mais de 96% do mercado. Entre seus associados estão instituições financeiras, bancos digitais, adquirentes, bandeiras, fintechs, marketplaces, empresas de tecnologia, entre outras que atuam no sistema de pagamentos.

    É a interlocutora do setor em assuntos regulatórios e promove a autorregulação desde 2008. Consolida e divulga o balanço de dados do setor, realiza anualmente o Congresso de Meios Eletrônicos de Pagamento (CMEP), fomenta o desenvolvimento do mercado em seus comitês e grupos de trabalho e promove campanhas que incentivam o uso consciente do cartão, entre outras atribuições.

    https://abecs.org.br/quem-somos

     

     

    Exemplo do componente ACBrAbecsPinPad carregando e exibindo uma imagem no PinPad

    20240201_105236.jpg

     

    • Curtir 20
  2. Algumas observações...

    • Em ACBrTEFAPI.pas, nos métodos: TACBrTEFAPI.GetPathDLL e TACBrTEFAPI.SetPathDLL, eles estão comentados para a classe de TEF PayGo... há algum motivo ?

    Acho que o "case"  também não é bacana... poderíamos refatorar para criar um método virtual nas classes de TEF, e chamarmos ela, usando o Polimorfismo

     

    • A modificação desse enumerado, incluindo tefmtdPIX.
      TACBrTEFAPIMetodo = (tefmtdNenhuma, tefmtdPagamento, tefmtdCancelamento, tefmtdAdministrativa, tefmtdPIX);

    Tenho receio que isso gere problemas nas implementações existentes, pois para todos os demais TEF existentes, o PIX é uma opção de Pagamento, acessível por tefmtdPagamento.

    A inclusão desse novo enumerado, poderá gerar confusão e erro nos demais TEFs... As opções são:

    - Não incluir o tefmtdPIX e de alguma forma na classe da Elgin, distinguirmos quando o pagamento é PIX (talvez com alguma outra informação ou parâmetro do Pagamento)

    - Tratar o tefmtdPIX em todas as demais classes de TEF, para igualar ela a tefmtdPagamento  (isso não é muito bacana)

     

    • O mesmo ocorre com a modificação do enumerado TACBrTEFModalidadePagamento com a inclusão de tefmpPIX
    TACBrTEFModalidadePagamento = ( tefmpNaoDefinido,
                                      tefmpCartao,
                                      tefmpDinheiro,
                                      tefmpCheque,
                                      tefmpCarteiraVirtual,
                                      tefmpPIX );

    Para todos os demais TEFs, PIX se enquadra em tefmpCarteiraVirtual

  3. Desculpe, não estou compreendendo a sua postagem...

    por favor detalhe um passo a passo, de como reproduzir o problema no Demo do ACBr...

    Observe ainda nos fontes do Demo, que a chave é informada na geração da cobrança...

    procedure TForm1.btCriarCobVClick(Sender: TObject);
    ...
      with ACBrPixCD1.PSP.epCobV.CobVSolicitada do
      begin
        Clear;
        chave := ACBrPixCD1.PSP.ChavePIX;

     

    procedure TForm1.btCriarCobrancaImediataClick(Sender: TObject);
    ...
      with ACBrPixCD1.PSP.epCob.CobSolicitada do
      begin
        Clear;
        chave := ACBrPixCD1.PSP.ChavePIX;  

     

     

  4. Não há como testar o Demo, com duas empresas... No Demo a configuração de chave, é feita por PSP, e permite a digitação de apenas uma chave...

    Provavelmente a sua rotina de configuração do componente, não está sendo executada corretamente, ou não está sendo executada antes da chamada

    Nos fontes do Demo do ACBr, também demonstram como configurar a chave no Sicred, veja em: procedure TForm1.ConfigurarACBrPSPs;

      ACBrPSPSicredi1.ChavePIX := edSicrediChavePIX.Text;
      ACBrPSPSicredi1.ClientID := edSicrediClientID.Text;
      ACBrPSPSicredi1.ClientSecret := edSicrediClientSecret.Text;
      ACBrPSPSicredi1.ArquivoChavePrivada := edSicrediArqChavePrivada.Text;
      ACBrPSPSicredi1.ArquivoCertificado := edSicrediArqCertificado.Text;        

     

  5. Verifique se você está atribuindo a nova chave ao componente ACBrPSPxxx que está ligado no componente ACBrPIXCD

    Exemplo,para mudar a chave no Bradesco

      ACBrPSPBradesco1.ChavePIX := edBradescoChavePIX.Text;
      ACBrPSPBradesco1.ClientID := edBradescoClientID.Text;
      ACBrPSPBradesco1.ClientSecret := edBradescoClientSecret.Text;
      ACBrPSPBradesco1.ArquivoPFX := edBradescoArqPFX.Text;
      ACBrPSPBradesco1.SenhaPFX := edBradescoSenhaPFX.Text;      

     

  6. Olá comunidade do ACBr,

    Gostaríamos de informar que já se encontra no SVN do ACBr, mudanças na Unit ACBrTEFPayGoWebComum.pas, que permitem a aplicação usar a nova PGWebLib, com recurso de atualização automática e proteção contra fraudes, usando o "warsaw"

    A PayGo disponibiliza um manual detalhado, sobre essa nova versão e como instala-la... Ele está anexo nesse tópico, até termos um endereço oficial da PayGo

     

    Porque a PayGo efetuou essas modificações ?

    Uma resposta curta: Segurança

    Todo sistema que manipula transações financeiras, pode ser alvo de um ataque Hacker, onde as transações podem ser desviadas para uma outra conta destino... Um grupo especializado nesse tipo de ataque é o "Prilex"....

    Por isso, sempre instrua os seus usuários, a NUNCA permitir o acesso remoto a máquina sem a autorização da Sw.House

    Com essa nova versão da DLL PGWebLib, a PayGo utiliza uma camada de proteção de Software já reconhecida e utilizada por vários serviços financeiros, o Warsaw

    A atualização da DLL também é um fator muito importante para ela se manter segura. Outro fato é que o certificado usado na comunicação TLS, sempre terá um prazo de validade, obrigado a atualização da PGWebLib, e com essa nova versão a atualização pode ocorrer de forma automática, enquanto a aplicação PDV não está sendo executada.

     

    Onde posso baixar a nova PGWebLib ?

    Documentação e SDK podem ser encontrados em:
    https://paygodev.readme.io/docs/kit-para-atualização-da-documentação

     

    Como instalar a nova PGWebLib

    Com essa nova versão, não basta apenas distribuir a "PGWebLib.dll", junto com a sua aplicação. Na verdade isso não será mais permitido

    A PayGo fornecerá um instalador completo, que é de Simples instalação...

    Esse instalador cuidará de copiar a PGWebLib.dll na pasta correta e protegida, além de instalar o "Cliente Windows", que ficará no Systray da máquina Windows, e será responsável pela atualização da PGwebLib

    Através de variáveis de ambiente o ACBr saberá onde a PGWebLib.dll está instalada e fará uso dela... (leia mais sobre isso, abaixo)

    Se você deseja automatizar o processo de instalação da PGWebLib, em conjunto com o instalador da sua aplicação, isso e possível, pois o instalador da PayGo pode ser executado no modo "silent" e "verysilent".  Exemplo

    SetupPayGo_full_v5.1.25.1.exe /verysilent


    A sua aplicação que consome a PGWebLib diretamente, você não precisará fazer uso do "Cliente Windows". Ou seja, apesar dele estar sempre no Systray do Windows ele não precisará ser aberto ou utilizado pelo usuário... Ele será carregado para o Systray, na inicialização do Windows, com o único intuito de verificar por atualizações da PGWebLib

     

    Ativando o Cliente Windows com as informações do PDC


    O Cliente windows, já é utilizado por vários tipos de TEF da PayGo, como o TEF por API ControlPay e o TEF por Troca de Arquivos TXT

    Para configurarmos o Cliente Windows para uso como atualizador da PGWebLib, precisamos mudar a chave no topo, para que ele mude a interface para "Ativação - PGWebLib" (imagem abaixo)

    image.png

    Após isso, basta inserir o CNPJ do Cliente final, e o PDC, e clicar em Ativar

     

    Como ativar um PDC em modo de Homologação ?

    • Abra o Cliente Windows
    • clique 3x com o botão direito do mouse no Logo "PayGo", no Topo da janela.
      image.png
    • Quando ele solicitar a pergunta "Digite o Ambiente" escreva a palavra "Demo"

    O Client Windows assumirá a cor "roxa", sinalizando que o modo Demonstração foi ativado

     

    O que muda na sua aplicação, que usa nossos componentes do ACBrTEFD e ACBrTEFAPI ?

    Esperamos que nenhuma mudança seja necessária nos seus fontes, a não ser é claro, atualizar os fontes do ACBr e compilar uma nova versão com as alterações efetuadas na Unit ACBrTEFPayGoWebComum.pas

    Todos os ajustes necessários para consumir a nova PGWebLib, foram introduzidos nessa Unit do ACBr, e ela também cuida de Ler a Gravar valores nas variáveis de ambiente, para verificar por atualizações e sinalizar quando a PGWebLib pode ser atualizada

    Para conhecer as mudanças em detalhes mais técnicos, veja abaixo a transcrição do Change-Log

     

    Os fontes de ACBrTEFPayGoWebComum.pas continuam compatíveis com a versão antiga da DLL ?

    SIM. Os fontes do ACBr ajustam suas chamadas conforme a versão da DLL, portanto essa Unit é compatível com a DLL antiga e a atual.

     

    Eu não uso os componentes do ACBr. Como posso ajustar minha aplicação ?

    Por favor leia a documentação em anexo, ela descreve em detalhes e dá exemplos de código das implementações necessárias...
    Veja ainda, o Change-Log do ACBr (abaixo), para compreender as mudancas que implementamos em nossos fontes

    Mas basicamente você precisará efetuar as seguintes modificações:

    1. NÃO MAIS copiar a PGWebLib.dll para pasta de sua aplicação, agora você deve usar a PGWebLib.dll que está instalada na pasta segura (veja item 2)
    2. Ler o conteúdo da variável de ambiente PathPGWebLib  ou PathPGWebLib_x64, para saber qual é o Caminho completo para a DLL que deve ser carregada, e utilizar ela na sua aplicação (lembrando que você só deve usar a DLL de 64 bits se a sua aplicação é compilada em 64 bits)
    3. Chamar o novo método PW_End, antes de sua aplicação encerrar ( para encerrar o processo de proteção ao seu executável e a DLL )
    4. Gravar o valor "True" na variável de ambiente PGWebLibPermiteAtualiza,  quando a sua aplicação encerrar (opcional)

     

    Quais são as variáveis de ambiente utilizadas pela PGWebLib ?

    Antes de conhecer as variáveis, saiba que os componentes do ACBr já fazem uso dela, de forma automática e intuitiva (veja o Chenage-Log, abaixo)

    • PathPGWebLib:  Path completo da PGwebLib.dll que deve utilizada pela aplicação
      • PathPGWebLib=C:\Program Files (x86)\PayGo\PGWebLib\PGWebLib.dll
    • PathPGWebLib_x64: Versão 64 bits da PGWebLib, e que deve ser utilizada APENAS se você compila sua aplicação em 64 bits
      • PathPGWebLib_x64=C:\Program Files (x86)\PayGo\PGWebLib\x64\PGWebLib.dll
    • PGWebLibAtualiza: Terá os Valores "True" ou "False", definidos pelo Client e Windows. Quando "True", indica que há uma atualização pendente, para a PGWebLib.
      • PGWebLibAtualiza=False
    • PGWebLibPermiteAtualiza: Terá os Valores "True" ou "False". Deve ser manipulada pela automação comercial, para que a mesma sinalize ao Client Windows, quando este pode baixar e atualizar a PGWebLib. Isso evita atualizações em horários indesejados, permitindo a aplicação comercial, definir a melhor estratégia para a atualização. É uma boa prática a automação comercial ligar essa variável de ambiente, sempre que for encerrada.
      • PGWebLibPermiteAtualiza=True
    • CPFCNPJ: Opcional, pode ser utilizada pela aplicação, para definir o CNPJ do cliente final, automatizando o processo de ativação do Cliente Windows
    • PontoDeCaptura: Opcional, pode ser utilizada pela aplicação, para definir o PDC que deve ser utilizado pelo Cliente Windows

     

    Usando a DLL protegida, em ambiente de Desenvolvimento

    Em ambiente de Desenvolvimento, usar a DLL protegida, pode tornar difícil o desenvolvimento...

    O Warsaw irá detectar que um Debugger está tentando executar a DLL, e causará algum erros como "privileged instruction"

    Pensando nisso, a PayGo disponibilizou uma DLL para ser usada em modo Debug. Você poderá encontrá-la em:

    C:\Program Files (x86)\PayGo\PGWebLib\DEBUG

    Observe que os fontes do ACBr, já tentarão fazer uso dessa DLL, quando o compilador detectar que o programa está sendo compilado em modo Debug. Isso é feito pela nova propriedade IsDebug

    Você pode ativar ela, usando TypeCast, exemplo:

      if (ACBrTEFAPI1.TEF is TACBrTEFAPIClassPayGoWeb) then
      begin
        with TACBrTEFAPIClassPayGoWeb(ACBrTEFAPI1.TEF) do
        begin
          DiretorioTrabalho := 'C:\PAYGOWEB';   // Permite informar o diretório de trabalho da PGWebLib
          //TEFPayGoAPI.PathLib := 'C:\temp\64bits\PGWebLib.dll';   // Permite forçar o uso de uma DLL específica, diferente do definido em "PathPGWebLib" 
          {$IFDEF DEBUG}
           TEFPayGoAPI.IsDebug := True;   // <---------- AQUI ------------
          {$EndIf}
        end;
      end; 

      

     

    Change-Log de ACBrTEFPayGoWebComum.pas

    [*] Modificações para suportar nova DLL 4.1.25.3, PayGo Windows no modo atualizador da PGWebLib.
    [+] Adicionado mapeamento para o comando "PW_End".
        Esta função tem como finalidade encerrar alguns serviços e remover a proteção do Warsaw da automação, possibilitando a realização da atualização.
    [*] Estrutura "TPW_GetData", modificada, removendo campo "bIndice: Byte" que não fazia parte da Estrutura original
    [*] Métodos "ObterDadoCartao", "RealizarOperacaoPinPad", "LogPWGetData", modificados para receber o indice do Parâmetro sendo processado na estrutura TPW_GetData
    [+] Adicionado o método:       "function GetPathPGWebLib: String;"
        Retorna o valor da variável de ambiente "PathPGWebLib" (32 bits) ou  "PathPGWebLib_x64" (64 bits), e que contem o Path completo da DLL PGWebLib, com proteção, e que deve ser carregada pela aplicação
    [+] Adicionado o método:        "function GetPGWebLibAtualiza: Boolean;"
        Que Verifica o conteúdo da Variável de Ambiente "PGWebLibAtualiza".  Essa variável de ambiente fica com o Valor "TRUE", quando há atualizações disponíveis para a PGWebLib.
    [+] Adicionado o método:         "function SetPGWebLibPermiteAtualiza(PermiteAtualizacao: Boolean): Boolean;"
        Permite que a aplicação configure a variável de ambiente "PGWebLibPermiteAtualiza"  Quando a aplicação grava nela o valor "TRUE", permite que o Cliente Windows da Paygo, baixe e atualize a PGWebLib da pasta "PathPGWebLib"
    [+] Adicionada a propriedade: "AtualizaPGWebLibAutomaticamente: Boolean default True"
        Quando essa propriedade é True (padrão), o valor de "PGWebLibPermiteAtualiza" será ajustado para True, sempre que TACBrTEFPGWebAPI.DesInicializar for chamado
    [*] Método "TACBrTEFPGWebAPI.Destroy", modificado para chamar "DesInicializar"
    [*] Método "TACBrTEFPGWebAPI.Inicializar" mmodificado para configurar a variável de ambiente "PontoDeCaptura", se a propriedade "PontoCaptura" estiver com
        valor definido  a variável de ambiente "CPFCNPJ" se a propriedade "CNPJEstabelecimento" estiver com valor definido.
    [*] Método "TACBrTEFPGWebAPI.Inicializar", grava no Log o estado da variável de ambiente "PGWebLibAtualiza"
    [*] Método "TACBrTEFPGWebAPI.DesInicializar" passa a chamar "PW_End", para encerrar o processo de proteção, e "SetPGWebLibPermiteAtualiza", para
        permitir a atualização da PGWebLib, conforme o valor da propridade "AtualizaPGWebLibAutomaticamente"
    [*] Método "TACBrTEFPGWebAPI.LibFullName" modificado para usar o Path definido na variável de ambiente "PathPGWebLib", caso a propriedade "PathLib" esteja vazia.
    [*] Método "TACBrTEFPGWebAPI.LoadLibFunctions" modificado para gravar no log, o caminho completo da DLL PGWebLib que está sendo carregada
        (por: DSA)  

     

    PGWin - Modo atualizador da PGWebLib - v1.04.pdf

    • Curtir 12
  7. Não é possível mudar o conteúdo... As TEF Houses usam esse padrão, (maiúsculas e sem acentos), porque muitas vezes as soluções usam hardwares limitados, com poucas linhas e sem suporte a acentos

  8. Fabiano.. 

    Toda semana as Libs são recompiladas, independente de haver ou não mudanças..

    Observe ainda que esse não é o único arquivo de ChangeLog no ZIP... há também os arquivos de Change Log dos componentes...

    As modificações podem ter ocorrido nos componentes do ACBr que essa Lib utiliza

×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.