Ir para conteúdo
  • Cadastre-se

dev botao

Recommended Posts

Postado

Boa tarde. 

Estou com uma dúvida no método LerRetorno da unit ACBrBoletoRet_Santander_API.  Estou testando boletos pagos com MULTA, onde o valor pago é maior que o valor original do boleto.  Nos testes com boletos pagos pelo código de barras, o retorno é processado corretamente e o valor pago vem correto. Nos boletos pagos com o qrcode, via pix, o valor pago, quando existe a multa, volta com o valor original do boleto, e não vem o valor pago com multa. Vou colocar um pedaço do json de retorno como exemplo.

    {
        "_pageable": {
            "_moreElements": false
        },
        "_content": [
            {
                "returnCode": "000 - Consulta realizada com sucesso",
                "documentNumber": "05441657000108",
                "beneficiaryCode": 45485,
                "bankNumber": 15290,
                "clientNumber": "00478162A",
                "dueDate": "2025-05-20",
                "nominalValue": 483.01,
                "issueDate": "2025-04-22",
                "participantCode": "",
                "status": "Baixado",
                "statusComplement": "Via Pagamento Pix",
                "interestValue": 0.0,
                "discountValue": 0.0,
                "deductionValue": 0.0,
                "paidValue": 492.83
            }
        ]
    },

Essa é a parte que volta o valor com multa e esse bloco não está sendo lido na function LerRetorno. Abaixo a parte do código de deveria ser corretamente o paidValue mas não está lendo: ( debugando o LExisteBankSlip é true, e o nindiceobj fica com o valor 1, que é exatamente esse bloco acima q coloquei do json, mas o paidvalue está dentro de um _content e isso não está no bloco de código .

                     if LExisteBankSlip then
                         nIndiceOBJ := strtoint(IfThen(LTotalObjetos>1,'1','0'))
                      else
                         nIndiceOBJ := 0;
                      LJSONObject := LJsonArray.ItemAsJSONObject[nIndiceOBJ];
                      if nIndiceOBJ = 0 then
                      begin
                        ARetornoWS.DadosRet.TituloRet.NossoNumero                 := LJSONObject.AsString['bankNumber'];
                        ARetornoWS.DadosRet.TituloRet.SeuNumero                   := LJSONObject.AsString['clientNumber'];
                        if ARetornoWS.DadosRet.TituloRet.Vencimento = 0 then
                         ARetornoWS.DadosRet.TituloRet.Vencimento                  := StringToDateTimeDef(LJSONObject.AsString['dueDate'], 0, 'yyyy-mm-dd');
                        if ARetornoWS.DadosRet.TituloRet.DataDocumento = 0 then
                         ARetornoWS.DadosRet.TituloRet.DataDocumento               := StringToDateTimeDef(LJSONObject.AsString['issueDate'], 0, 'yyyy-mm-dd');
                        if ARetornoWS.DadosRet.TituloRet.ValorDocumento = 0 then
                         ARetornoWS.DadosRet.TituloRet.ValorDocumento              := LJSONObject.AsFloat['nominalValue'];
                        if NaoEstaVazio(ARetornoWS.DadosRet.TituloRet.EstadoTituloCobranca) then
                         ARetornoWS.DadosRet.TituloRet.CodigoEstadoTituloCobranca := RetornaCodigoOcorrencia(LJSONObject.AsString['status']);
                      end;

                      if EstaVazio(ARetornoWS.DadosRet.TituloRet.CodigoEstadoTituloCobranca) then
                       ARetornoWS.DadosRet.TituloRet.CodigoEstadoTituloCobranca := RetornaCodigoOcorrencia(LJSONObject.AsString['status']);

                      ARetornoWS.DadosRet.TituloRet.ValorDesconto               := LJSONObject.AsFloat['discountValue'];
                      ARetornoWS.DadosRet.TituloRet.ValorPago                   := LJSONObject.AsFloat['paidValue'];
                      ARetornoWS.DadosRet.TituloRet.ValorMoraJuros              := LJSONObject.AsFloat['interestValue'];
                      ARetornoWS.DadosRet.TituloRet.ValorAbatimento             := LJSONObject.AsFloat['deductionValue'];

No caso do boleto pago com codigo de barras, o valor está em outra parte do json e a função busca corretamente. A leitura do valor pago está nesse bloco abaixo para o boleto pago com código de barras:

 //settlementData consulta para pegar data do pagamento
                      if (LJsonArray.ItemAsJSONObject[nIndiceOBJ].AsJSONArray['settlementData'].Count > 0) then
                      begin
                        if LJsonArray.ItemAsJSONObject[nIndiceOBJ].ValueExists('settlementData') then
                        begin
                          LJSONObject := LJsonArray.ItemAsJSONObject[nIndiceOBJ].AsJSONArray['settlementData'].ItemAsJSONObject[0];
                          if ARetornoWS.DadosRet.TituloRet.DataCredito = 0 then
                           ARetornoWS.DadosRet.TituloRet.DataCredito := StringToDateTimeDef(LJSONObject.AsString['settlementCreditDate'], 0, 'yyyy-mm-dd');
                          if ARetornoWS.DadosRet.TituloRet.DataMovimento = 0 then
                           ARetornoWS.DadosRet.TituloRet.DataMovimento := StringToDateTimeDef(LJSONObject.AsString['settlementDate'], 0, 'yyyy-mm-dd');
                          if ARetornoWS.DadosRet.TituloRet.DataBaixa = 0 then
                           ARetornoWS.DadosRet.TituloRet.DataBaixa := StringToDateTimeDef(LJSONObject.AsString['settlementDate'], 0, 'yyyy-mm-dd');
                           ARetornoWS.DadosRet.TituloRet.ValorPago := LJSONObject.AsCurrency['settlementCreditedValue'];
                          if EstaVazio(ARetornoWS.DadosRet.TituloRet.CodigoEstadoTituloCobranca) then
                            ARetornoWS.DadosRet.TituloRet.CodigoEstadoTituloCobranca := RetornaCodigoOcorrencia(LJSONObject.AsString['status']);
                          if EstaVazio(ARetornoWS.DadosRet.TituloRet.EstadoTituloCobranca) then
                           ARetornoWS.DadosRet.TituloRet.EstadoTituloCobranca := LJSONObject.AsString['status'];
                          ARetornoWS.DadosRet.TituloRet.ValorTarifa :=  LJSONObject.AsFloat['settlementDutyValue'];
                        end;
                      end;

Preciso de uma ajuda, alguém já passou por isso? 

Postado

Ele volta sim, peguei a parte do log que retorna o valor correto pago com multa:

30/05/25 10:59:06:800 - Retorno Envio: TBoletoW_Santander_API
30/05/25 10:59:06:800 - C digo do Envio: 200 1.1 OK
30/05/25 10:59:06:801 - Retorno Envio: {"_pageable":{"_moreElements":false},"_content":[{"returnCode":"000 - Consulta realizada com sucesso","documentNumber":"05441657000108","beneficiaryCode":45485,"bankNumber":15290,"clientNumber":"00478162A","dueDate":"2025-05-20","nominalValue":483.01,"issueDate":"2025-04-22","participantCode":"","status":"Baixado","statusComplement":"Via Pagamento Pix","interestValue":0.00,"discountValue":0.00,"deductionValue":0.00,"paidValue":492.83}]}

  • Moderadores
Postado
6 minutos atrás, marciamagall disse:

Ele volta sim, peguei a parte do log que retorna o valor correto pago com multa:

30/05/25 10:59:06:800 - Retorno Envio: TBoletoW_Santander_API
30/05/25 10:59:06:800 - C digo do Envio: 200 1.1 OK
30/05/25 10:59:06:801 - Retorno Envio: {"_pageable":{"_moreElements":false},"_content":[{"returnCode":"000 - Consulta realizada com sucesso","documentNumber":"05441657000108","beneficiaryCode":45485,"bankNumber":15290,"clientNumber":"00478162A","dueDate":"2025-05-20","nominalValue":483.01,"issueDate":"2025-04-22","participantCode":"","status":"Baixado","statusComplement":"Via Pagamento Pix","interestValue":0.00,"discountValue":0.00,"deductionValue":0.00,"paidValue":492.83}]}

Legal agora é abrir a unit modificar, testar e trazer que subimos ao svn

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
 

 

  • Consultores
Postado

Bom dia,

Criada a TK-7156 para avaliação.

Obrigado pela contribuição.

Consultor SAC ACBr

Alexandre de Paula
Ajude o Projeto ACBr crescer - Assine o SAC                    

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  ícone Discórdia Discord   

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil

 

 

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

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