Ir para conteúdo
  • Cadastre-se

dev botao

Consultar Pix Recebidos


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

Recommended Posts

  • Membros Pro
Postado

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;

  • 2 semanas depois ...
  • Membros Pro
Postado (editado)

Ok, 

Mas não entendi se nós temos que fazer alguma coisa ou a equipe do ACBr vai fazer os ajustes para que possa ser mantida a compatibilidade?

Editado por ademar-datalan
  • Consultores
Postado
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

 
  • Membros Pro
Postado

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
  • Consultores
  • Solution
Postado

Olá @ademar-datalan

Enviei uma possível correção ao SVN, rev 34652.

Atualize seus fontes e faça um teste novamente por favor.

Consultor SAC ACBr

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

 
  • Consultores
Postado

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

  • Este tópico foi criado há 173 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
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.

The popup will be closed in 10 segundos...
The popup will be closed in 10 segundos...