Ir para conteúdo
  • Cadastre-se

dev botao

Sugestão de ajuste no ACBRPixCD PSP Banco do brasil


Ver Solução Respondido por Daniel Simoes,
  • Este tópico foi criado há 895 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro
Postado

Já estamos utilizando o Pix em Produção pelo PSP Banco do Brasil.

Mas, segue uma sugestão de ajuste para o PSP do BB

Para o Banco do Brasil em testes (homologação) o acbr tem gerado a url acessando
https://api.hm.bb.com.br/pix/v1/cob/,
Entretanto para o retorno vir com o QRCode já montado pelo BB em homologação teria que usar o endpoint https://api.hm.bb.com.br/pix/v1/cobqrcode/

Dessa forma, o BB já retorna uma opção de qrcode já montado (O copia e cola completo) com os dados de testes em textoImagemQRcode.

Com esse textoImagemQRcode seria possível simular um pagamento do Pix pelo BB (Eles possuem um EndPoint com a opção de simular o pagamento)

Eu Pessoalmente me obriguei a fazer os testes em Produção.
Devido meus parcos conhecimentos do componente (ACBr).

A conta bancária da nossa Empresa virou uma bagunça com inúmeros créditos de Pix sem origem.
A Contadora tem me procurado cedo, a tarde e a noite pra matar. hehehehe
Felizmente Ela não tem logrado exito. rsrsrsrs

 

  • Membros Pro
Postado

Juliomar
Não consegui alterar o código do ACBr
Não sei se consegui me explicar.

Na verdade, ao invés de usar em homologação, acabei usando em Produção pra poder testar os pagamentos.
Não sei como fazer esse desvio no componente para quando a geração do Pix para o Banco do Brasil em homologação ir para o endpoint /cob/ ir para /cobqrcode/

 

  • Membros Pro
  • Fundadores
  • Solution
Postado

@icozeira, eu havia notado esse EndPoint, no B.B.

Mas como ele é muito específico do B.B. apenas, acabamos não utilizando o mesmo...

No ACBr, temos um método que calcula o QRCode (copia e cola)

Veja esse trecho, extraído do Demo:

    qrcode := Trim(ACBrPixCD1.PSP.epCob.CobGerada.pixCopiaECola);
    if (qrcode = '') then   // ------------ Se o pixCopiaECola não foi retornado... calcule o mesmo... -------------
    begin
      qrcode := ACBrPixCD1.GerarQRCodeDinamico( ACBrPixCD1.PSP.epCob.CobGerada.location );
      mCriarCobrancaImediata.Lines.Add('');
      mCriarCobrancaImediata.Lines.Add('- pixCopiaECola -');
      mCriarCobrancaImediata.Lines.Add(qrcode);
    end;
    PintarQRCode(qrcode, imgQRCriarCobrancaImediata.Picture.Bitmap, qrUTF8BOM);

tendo o conteúdo (string) do qrcode, basta usar ele no WebService de Pagamento do B.B., que implementamos apenas no PSP do B.B.

image.png

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

  • Membros Pro
Postado

@Daniel Simoes boa noite,

Obrigado pela atenção.

Notei a existência do GerarQRCodeDinamico também e inclusive faço uso dele.
Detalhe é que nos testes do BB (só para homologação) o GerarQRCodeDinamico do ACBr não funciona.
Pelo menos, não consegui usar.
Quando o BB recebe uma requisição da criação de um Pix em Homologação ele gera informação totalmente diferente daquilo que Vc enviou na solicitação (criação).
Os dados:
MerchantName, MerchantCity e PostalCode são Eles que decidem e não a tua requisição.
O nome do Recebedor que deveria ser Daniel (quem fez a solicitação), por exemplo.
Eles alteram e tratam como se fosse:
EMPRORT AMBIENTAL ou
ALAN GUIACHERO
(desculpe a caixa alta, mas, é assim que retorna o dado)

Aqui um exemplo:
00020101021226870014br.gov.bcb.pix2565qrcodepix-h.bb.com.br/pix/v2/fffd7a08-8b7d-4559-8cc0-7118d374d1425204000053039865802BR5920ALAN GUIACHERO BUENO6008BRASILIA62070503***63044871

ou


00020101021226920014br.gov.bcb.pix2570qrcodepix-h.bb.com.br/pix/v2/cobv/ce0a57a8-d66e-448d-a0df-9b7c9352daea52040000530398654042.005802BR5925EMPRORT AMBIENTAL 6008BRASILIA62070503***630442BB

E, com um detalhe.
Vc nunca sabe se vem o Alan ou a Emprort (além de outros que Eles utilizam)

Repetindo.
Lembrando que isso é só para Homologação.

Quando em Produção, se Vc enviar Daniel vai voltar Daniel como recebedor.

A encrenca é que para simular o Pagamento (opção muita boa criada pelo BB) Vc precisa do copia e Cola exatamente como eles retornam.
E, pra isso ocorrer, obrigatoriamente, é necessário usar o EndPoint https://api.hm.bb.com.br/pix/v1/cobqrcode/
E, também não pode usar GerarQRCodeDinamico do ACBr como copia e cola.
Tem de usar o retorno que vem do json deles na opção textoImagemQRcode.

 

Só reforçando mais uma vez.
Estou sugerindo isso para os Colegas que irão iniciar a programação para o PSP B Brasil.
Para Mim, isso não vai me afetar pq já estou com minha aplicação em produção e rodando nos Clientes.

Inclusive, agradeço de coração a mão na roda que é o ACBr pra Nós, facilitando muito nossa vida.
Só estou tentando auxiliar os Colegas que iniciarem a Programação e no momento que precisar fazer os testes de pagamento não ter que gerar esses testes diretamente em Produção.

  • Curtir 2
  • Membros Pro
Postado

Pessoal,

Estou tentando resolver pelo menos a alteração do EndPoint p/a criação do Pix no BBrasil em Teste, mas, estou com dificuldades.

Fiz uma alteração na unit ACBrPIXPSPBancoDoBrasil.pas, no método abaixo:

procedure TACBrPSPBancoDoBrasil.QuandoAcessarEndPoint(
  const AEndPoint: String; var AURL: String; var AMethod: String);
begin
  // Banco do Brasil, não tem: POST /cob   Mudando para /PUT com "txid" vazio
  if (UpperCase(AMethod) = ChttpMethodPOST) and (AEndPoint = cEndPointCob) then
  begin
    AMethod := ChttpMethodPUT;

    // Texto inserido p/testar o desvio na criação da URL -- Icozeira
    if ACBrPixCD.Ambiente = ambTeste then
      begin
        AURL := StringReplace(AURL, cEndPointCob, '/cobqrcode/', [rfReplaceAll]);
      end
    else
      begin
        AURL := StringReplace(AURL, cEndPointCob, '/cob/', [rfReplaceAll]);
      end;
  end;
end;

O problema que está passando por cima e não obedece o que está na alterando quando está em ambiente de teste, sempre carrega com '/cob/'.

@EliasCesar quando tiver um tempinho, tente dar uma verificada se funciona aí contigo.

  • Membros Pro
Postado

Pessoal bom dia

Consegui fazer o ajuste no componente para fazer o acesso no EndPoint que retorna o textoImagemQRCode do Banco do Brasil
Na verdade, o campo textoImagemQRCode no BB nada mais é do que o pixCopiaECola.
O Banco do Brasil não retorna o campo pixCopiaECola. Tua aplicação com ajuda do ACBr que deverá monta-la usando ACBrPixCD.GerarQRCodeDinamico como bem explicou o Daniel em seu post acima.

O BB só retorna quando estiver em ambiente de Testes e cujo nome do campo é alterado para textoImagemQRCode ao invés de pixCopiaECola.
Eles fazem isso pra Vc poder usar o EndPoint deles de simulação de Pagamentos do Pix em ambiente de testes.

Fiz um ajuste no momento em que está montando o EndPoint para consulta e outro quando chega o retorno.
Peço aos Colegas Moderadores efetuar uma revisão e análise para atualizar o componente.
Checando, evidentemente, se não está quebrando o código em outros locais.

Agora estou enfrentando outroo problema.
Na Simulação do Pagamento do Pix no método procedure TACBrPSPBancoDoBrasil.SimularPagamentoPIX está dando erro.
A impressão que tenho é que o campo js.S['pix'] := pixCopiaECola não está sendo encontrado para montar o corpo (body) da requisição.
Se algum Colega se prontificar a auxiliar já resolveremos essa parada.

Pessoal estou fazendo essa tarefa de tentar funcionar essa opção do BB, porque a partir do momento que isto estiver OK qualquer Colega conseguirá desenvolver o PixCd do Banco do Brasil sem ter que abrir uma conta bancária lá.
Imagina se Vc tiver que abrir uma conta bancária em cada banco que Vc for desenvolver?
Perceberam quanto esses bancos cobram de tarifas mensais para Vc simplesmente ter uma conta corrente?
Verdadeira extorsão oficializada.

 

ACBrPIXPSPBancoDoBrasil.pas

  • Membros Pro
Postado

Pessoal boa tarde,

Depois de muito tapa consegui resolver o problema de criação do Body (corpo) do Json da simulação do Pagamento p/o Pix do Bco do Brasil.

Segue o arquivo novamente ajustado p/correção desse outro problema.

Novamente, solicito aos Caros Colegas Moderadores a especial gentileza de revisar todas as alterações.
Ou seja, checar se não fiz nenhuma besteira.rsrsrs

 

ACBrPIXPSPBancoDoBrasil.pas

  • Administradores
Postado

Obrigado pela contribuição, em breve será validada para possível inclusão ao svn

TK-2783

  • Curtir 1
Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

  • Membros Pro
Postado

@EliasCesar Boa noite,

Desculpe o incomodo.

Mas, hoje fiz a atualização do componente (ACBr completo) e não está constando todo ajuste que fiz na Unit do banco do brasil (ACBrPIXPSPBancoDoBrasil.pas).

Ocorre que enviei uma unit ajustada no domingo passado (12/06/2022) as 10:40 horas.
Mas, no mesmo dia (12/06/2022) as 16:34 enviei uma nova unit com mais ajustes.

Esse segundo envio contempla a correção na procedure TACBrPSPBancoDoBrasil.SimularPagamentoPIX
Solicito que refaça a leitura e se possível faça o envio p/o Repositório.

Hoje atualizei o Componente completo e fiz o teste da simulação e não funcionou.
Usando a unit que enviei as 16:34 horas funcionou perfeitamente.

Agradeço antecipadamente a atenção.

 

  • Consultores
Postado
11 horas atrás, icozeira disse:

@EliasCesar Boa noite,

Desculpe o incomodo.

Mas, hoje fiz a atualização do componente (ACBr completo) e não está constando todo ajuste que fiz na Unit do banco do brasil (ACBrPIXPSPBancoDoBrasil.pas).

Ocorre que enviei uma unit ajustada no domingo passado (12/06/2022) as 10:40 horas.
Mas, no mesmo dia (12/06/2022) as 16:34 enviei uma nova unit com mais ajustes.

Esse segundo envio contempla a correção na procedure TACBrPSPBancoDoBrasil.SimularPagamentoPIX
Solicito que refaça a leitura e se possível faça o envio p/o Repositório.

Hoje atualizei o Componente completo e fiz o teste da simulação e não funcionou.
Usando a unit que enviei as 16:34 horas funcionou perfeitamente.

Agradeço antecipadamente a atenção.

 

Olá, 

Realmente havia faltado uma das alterações. 
Acabei de subir para o SVN.
Disponível na rev 25871.

  • Curtir 1
  • Obrigado 1
Consultor SAC ACBr

Elias César Vieira
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil
Assine o
SAC

 
×
×
  • 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.