Ir para conteúdo
  • Cadastre-se

dev botao

ACBrPIXCD - componente não aplica fuso horario em data de criação gerada no formato UTC pelos PSP


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

Recommended Posts

  • Membros Pro

Em primeiro lugar não posso deixar de voltar a gradecer a todos que me ajudaram na implantação da rotina de envio de PIX no meu sistema.

Nos teste que estou realizando notei que a data de confirmação retornada pelo Banco INTER, vem com um acréscimo de 3 horas. Questionei o suporte e eles informaram que trabalham com formato UTC e que eu devo atualizar o fuso horário em 3 horas.

Resolvi a situação "no braço" testando se o PSP é o INTER e aplicando o fuso antes de registrar a data na base.

Mas acho que seria interessante acrescentar uma propriedade UTC nas classes dos PSPs para que a conversão pudesse ser efetuada pelo componente. 

Esta questão do UTC também ocorre no componente ACBROfx.  Um colega subiu um post reportando esta situação. 

ACBrOFX - Erro ao ler arquivo OFX exportado do Santander: "Invalid argument to date enconde" 

Sugeri uma solução especifica para o formato do Santander, mas acredito que existam vários formatos de UTC e não tenho conhecimento suficiente para arriscar uma alteração na classe.

Fica a sugestão para os universitários da comunidade. 

Link para o comentário
Compartilhar em outros sites

  • Consultores

Tópico movido para a área do SAC, para que o SLA de respostas seja considerado

Bom dia!

Por favor, você chegou a alterar alguma unit do ACBr?

Caso afirmativo, peço que disponibilize a mesma para que possamos analisar.

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

  • Membros Pro

Olá Diego!

Eu tratei especificamente a data do SANTANDER.

Creio que precisamos de uma classe que identifique todos os formatos UTC possíveis.

Eu não conheço o assunto e não me senti seguro para subir nenhuma alteração.

Esta situação também ocorre no tratamento de mensagens do PIX, como citei em outro post.

ACBrOFX.pas Santander.ofx

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

O Diego, confundi os assuntos. No post anterior tratei do OFX.

Sobre o PIX segue retorno do INTER

2023-10-15T01:40:11.308Z esta 3 horas à frente do real

 {"chave":"02658379000319","infoAdicionais":[],"pixCopiaECola":"00020101021226930014BR.GOV.BCB.PIX2571spi-qrcode.bancointer.com.br/spi/pj/v2/24fc02913d944a05a02524846932159052040000530398654041.005802BR5901*6013BELO HORIZONT61083041147062070503***63043C02","loc":{"id":11837332,"location":"https://spi-qrcode.bancointer.com.br/spi/pj/v2/24fc02913d944a05a025248469321590","tipoCob":"cob","criacao":"2023-10-15T01:40:11.308Z"},"location":"https://spi-qrcode.bancointer.com.br/spi/pj/v2/24fc02913d944a05a025248469321590","status":"REMOVIDA_PELO_USUARIO_RECEBEDOR","valor":{"original":"1.00","modalidadeAlteracao":0},"calendario":{"expiracao":3600,"criacao":"2023-10-15T01:40:11.331Z"},"txid":"P020027834X000000100141023","revisao":1,"pix":[]}

Como eu tratei no meu programa quando o PSP é o INTER

 function AplicaFuso: TDateTime;
  var Ano,Mes,Dia,Hora,Minuto,Segundo,Milisegundo: word; Data:TDateTime; umDia:extended;
  const Fuso = 3;
  begin
    Data := ACBrPixCD1.PSP.epCob.CobGerada.calendario.criacao;
    DecodeDateTime(Data,Ano,Mes,Dia,Hora,Minuto,Segundo,Milisegundo);
    if Hora <= Fuso then
    begin
      if Hora < 0 then
      begin
        if Dia = StartOfTheMonth(Data) then
        begin
          if Mes = 1 then
          begin
            Mes := 12;
            Ano := Ano -1;
          end
          else
          begin
            Mes := Mes - 1;
          end;
          umDia := EndOfTheMonth(Data);
          Dia := Trunc(umDia);
        end;
      end;
    end;
    Hora := 24 - Fuso + Hora;
    result := EncodeDateTime(Ano,Mes,Dia,Hora,Minuto,Segundo,Milisegundo);
  end;

Link para o comentário
Compartilhar em outros sites

  • Consultores

Obrigado por disponibilizar os arquivos.

Por se tratarem de componentes diferentes, vou criar uma TK para análise da contribuição no OFX e outra para análise da questão do fuso no PIXCD.

#TK-4638 para contribuição no OFX.

#TK-4639 para PIXCD.

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

  • Consultores
  • Solution

Olá @softwareamigo

O componente ACBrPIXCD já possui um campo para armazenar a informação de Timezone, é o campo '...calendario.criacao_Bias'

Nesse comentário eu explico melhor como funciona essa propriedade:

https://www.projetoacbr.com.br/forum/topic/68009-fuso-horário-timezone-do-acbrpixcd/?do=findComment&comment=460723

 

  • Curtir 1
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

  • 2 semanas depois ...
  • Consultores

Por favor atualize seus fontes, pelo SVN do ACBr... 

Já subimos para o nosso repositório de fontes, modificações que podem corrigir algum dos itens referentes a esse tópico...

Por favor atualize seus fontes, faça testes, e se possível comente em uma nova resposta, se o problema foi resolvido...

Dúvidas, sobre o uso do SVN ?  Clique aqui e veja um vídeo

Consultor SAC ACBr

Victor H Gonzales - Pandaaa
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 !!

"Aprender é a única coisa que a mente nunca se cansa, nunca tem medo e nunca se arrepende” - Leonardo da Vinci

"Ter sucesso é falhar repetidamente, mas sem perder o entusiasmo"

Link para o comentário
Compartilhar em outros sites

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