Ir para conteúdo
  • Cadastre-se

dev botao

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

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.