Ir para conteúdo
  • Cadastre-se

dev botao

Consultar Pix Recebidos


Ver Solução Respondido por EliasCesar,

Recommended Posts

  • Membros Pro

Ao utilizar a rotina de consulta de PIX recebidos, tivemos problemas com o Banco do Brasil, que gerar uma rejeição por não informar corretamente o Time Zone, fizemos um ajuste na função function TACBrPixEndPointPix.ConsultarPixRecebidos, e com esse ajuste deu certo, gostaria que fosse feito ajuste na versão oficial do AcBr.

 

function TACBrPixEndPointPix.ConsultarPixRecebidos(Inicio: TDateTime;
  Fim: TDateTime; const TxId: String; const CpfCnpj: String; PagAtual: Integer;
  ItensPorPagina: Integer): Boolean;
var
  s, e: String;
  RespostaHttp: AnsiString;
  ResultCode: Integer;
begin
  if (NivelLog > 1) then
  begin
    RegistrarLog('ConsultarPixRecebidos( '+FormatDateTimeBr(Inicio)+', '+
                                           FormatDateTimeBr(Fim)+', '+
                                           TxId+', '+CpfCnpj+', '+
                                           IntToStr(PagAtual)+', '+
                                           IntToStr(ItensPorPagina)+' )');
  end;
  Clear;
  fPSP.PrepararHTTP;

  with fPSP.URLQueryParams do
  begin
    Values['inicio'] := DateTimeToIso8601(Inicio);
    Values['fim']    := DateTimeToIso8601(Fim);


    //------- Alterei aqui para resolver por enquanto ----------
    Values['inicio'] := Values['inicio'].Replace('Z','-03:00');
    Values['fim']    := Values['fim'].Replace('Z','-03:00');
    // -------------------------------------------------------- 


    s := Trim(TxId);
    if (s <> '') then
    begin
      Values['txid'] := s;
      Values['txIdPresente'] := 'true';
    end;

    s := OnlyNumber(CpfCnpj);
    if (s <> '') then
    begin
      e := ValidarCNPJouCPF(s);
      if (e <> '') then
        raise EACBrPixException.Create(ACBrStr(e));

      if Length(s) < 12 then
        Values['cpf'] := s
      else
        Values['cnpj'] := s;
    end;

    if (PagAtual > 0) then
      Values['paginacao.paginaAtual'] := IntToStr(PagAtual);

    if (ItensPorPagina > 0) then
      Values['paginacao.itensPorPagina'] := IntToStr(ItensPorPagina);
  end;

  fPSP.AcessarEndPoint(ChttpMethodGET, EndPoint, ResultCode, RespostaHttp);
  Result := (ResultCode = HTTP_OK);

  if Result then
    fPixConsultados.AsJSON := String(RespostaHttp)
  else
    fPSP.TratarRetornoComErro(ResultCode, RespostaHttp, Problema);
end;

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Anexe a unit

mas lembrando deve ser compatível com delphi 7 e to vendo no trecho postado que tu se ateve a sua versão do delphi perdendo compatibilidade

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Transparent-02.png
 

 

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois ...
  • Consultores
Em 18/07/2024 at 17:18, ademar-datalan disse:

uma rejeição por não informar corretamente o Time Zone

Olá @ademar-datalan,

Qual é a rejeição que vc está tendo? 

Se puder mandar o log completo por favor. 

Em 18/07/2024 at 17:18, ademar-datalan disse:

    //------- Alterei aqui para resolver por enquanto ----------
    Values['inicio'] := Values['inicio'].Replace('Z','-03:00');
    Values['fim']    := Values['fim'].Replace('Z','-03:00');
    // -------------------------------------------------------- 


Analisando sua alteração, vi que vc apenas mudou o TimeZone. Para fazer isso bastaria informar o parâmetro de timezone na função 'DateTimeToIso8601', nesse trecho do código:

    Values['inicio'] := DateTimeToIso8601(Inicio, '-03:00');
    Values['fim'] := DateTimeToIso8601(Fim, '-03:00');

 

Consultor SAC ACBr

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

 
Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Recebemos esse comunicado do suporte do BB

-------------------------------------------------------

A data/horário informado não está sendo informado o horário com -3 conforme RFC 3339 UTC - 3 necessário para trazer os dados conforme horário de Brasília, o que pode estar gerando inconsistências.

Ao informar a data de início sem o UTC correto, e colocar por exemplo

"inicio":"2024-07-14T21:00:00","fim":"2024-07-15T20:59:59 serão apresentadas as transações entre 0h00 de 15/07 às 23h59 de 15/07, e a transação realizada às 21h27 de 15/07 não é exibida.

Como não informam o UTC -3, a consulta está trazendo as cobranças realizadas COM UMA DIFERENÇA DE 3 HORAS.
 
 

 
image.thumb.png.41889e4166c6c89b6cb5c165e8505b04.png
 

O correto para trazer o pagamento informado seria:


"inicio":"2024-07-14T21:00:00-03:00","fim":"2024-07-15T20:59:59-03:00

Gentileza ajustar as consultas com UTC -3 conforme exemplo abaixo e refazer a consulta:

 
image.thumb.png.3bc7d9c6d1e050d5d35f6d405ec4cdd2.png
Link para o comentário
Compartilhar em outros sites

  • Consultores

Obrigado por reportar.

Fechando. Para novas dúvidas, criar um novo tópico.

Consultor SAC ACBr

Diego Folieni
Ajude o Projeto ACBr crescer - Assine o SAC

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 !!

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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.