Ir para conteúdo
  • Cadastre-se

Real Club

Membros
  • Total de ítens

    4
  • Registro em

  • Última visita

Real Club's Achievements

Newbie

Newbie (1/14)

  • First Post
  • Conversation Starter
  • Week One Done
  • One Month Later

Recent Badges

3

Reputação

  1. Resumo Na criação de recorrência do Pix Automático (POST /rec), o campo loc é serializado a partir de TACBrPIXRecSolicitadaBase.loc, que está declarado como Integer. Quando o PSP retorna um id de location maior que 2.147.483.647 (Int32), o valor é truncado para 32 bits e enviado negativo, fazendo o PSP recusar a requisição. O id de location do Itaú tem 19 dígitos (ex.: 7587166705779689739), então o problema é 100% reproduzível nesse PSP. Evidência Resposta do POST /locrec (id da location gerada pelo PSP): {"id":7587166705779689739,"location":"api.itau/rec/694b07eb-...","criacao":"2026-07-15T19:09:32.992Z","idRec":null} Corpo do POST /rec montado pelo ACBr logo em seguida: {"politicaRetentativa":"PERMITE_3R_7D","vinculo":{...},"calendario":{...},"loc":-1649719029} O loc foi de 7587166705779689739 para -1649719029, que é exatamente o truncamento para inteiro de 32 bits com sinal (os 32 bits baixos de 7587166705779689739 = -1649719029). O PSP então responde: HTTP/1.1 401 Unauthorized {"title":"Acesso Negado","status":401,"detail":"Não autorizado. Verifique se os parâmetros de acesso estão válidos..."} Como replicar Usar um PSP cujo /locrec retorne um id de location maior que Int32 (o Itaú sempre retorna, 19 dígitos). Chamar CriarLocation (epLocRec) e em seguida CriarRecorrencia (epRec) com RecorrenciaSolicitada.loc := LocationGerada.id. Observar no log (NivelLog alto) o Req.Body do /rec: o loc sai negativo. Causa Em ACBrPIXSchemasRec.pas, classe TACBrPIXRecSolicitadaBase: private fLoc: Integer; // <-- trunca ... property loc: Integer read fLoc write fLoc; // <-- trunca Há uma inconsistência interna: no ACBrPIXSchemasLocation.pas o campo id da location já é Int64 (leitura correta), mas o loc da recorrência (escrita) é Integer. Ou seja, o valor chega inteiro na leitura e é cortado ao ser atribuído/serializado na escrita. Correção sugerida Em ACBrPIXSchemasRec.pas, TACBrPIXRecSolicitadaBase: private fLoc: Int64; // era Integer ... property loc: Int64 read fLoc write fLoc; // era Integer Resultado após a correção Mesmo cenário, com o campo já como Int64 — loc vai íntegro (batendo com o id retornado no /locrec {"id":1570237648687511524,"location":"api.itau/rec/ea35652d-...","idRec":null} ... Req.Body: {"politicaRetentativa":"PERMITE_3R_7D","valor":{...},"vinculo":{...},"calendario":{...},"loc":1570237648687511524} A mudança é retrocompatível (Int64 comporta todo Integer) e alinha o tipo da escrita com o da leitura (TACBrPIXLocation.id).
  2. Segue documentação. Manual_API de Recebimento Pix Safra_V2.18 jan26 com fase HML e PRD.pdf
  3. Olá, Segue fontes da implementação do PÌX para o Banco Safra. Compactamos como os fontes em seus diretórios. ACBr PIX SAFRA.rar
  4. Realizamos mudanças no método MontarCodigoBarras da classe TACBrBancoInter. A rotina estava preparada para trabalhar com o nosso número de 11 posições gerado pelo banco na carteira 112. Alteramos para que também funcione na carteira 110, na qual o nosso número é mantido pelo cliente. Segue o fonte para análise. ACBrBancoInter.pas
×
×
  • 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...