João vitor Batista Postado 23 Junho Postado 23 Junho Boa tarde ,pessoal estou fazendo ajustes no banco safra api para ler o qrcode a funcao onde gera o boleto já esta ok ,porém a funcao lerlistaretorno ate chega ler o json normaol ,porem ela nao alimenta o acbr eu fiz algo de errado ? function TRetornoEnvio_Safra.LerListaRetorno: Boolean; var ListaRetorno: TACBrBoletoRetornoWS; LJson, LJsonData, LJsonConsulta, LJsonBoleto, LJsonPagador, LJsonCopiaCola: TACBrJSONObject; LRejeicao : TACBrBoletoRejeicao; I : Integer; LSituacao : String; begin Result := True; ListaRetorno := ACBrBoleto.CriarRetornoWebNaLista; ListaRetorno.HTTPResultCode := HTTPResultCode; ListaRetorno.JSONEnvio := EnvWs; if RetWS <> '' then begin try LJson := TACBrJSONObject.Parse(RetWS); try // --- 1. TRATAMENTO DE ERROS / REJEIÇÕES --- case HTTPResultCode of 400, 404: begin if (LJson.IsJSONObject('codigo')) then if NaoEstaVazio(LJson.AsString[ 'codigo' ]) then begin LRejeicao := ListaRetorno.CriarRejeicaoLista; LRejeicao.Codigo := LJson.AsString[ 'codigo' ]; LRejeicao.Versao := LJson.AsString[ 'parametro' ]; LRejeicao.Mensagem := LJson.AsString[ 'mensagem' ]; end; end; end; // --- 2. RETORNO EM CASO DE SUCESSO --- if (ListaRetorno.ListaRejeicao.Count = 0) then begin // Acessando o nó 'data' diretamente via .AsJSONObject igual ao exemplo do Bradesco LJsonData := LJson.AsJSONObject['data']; if Assigned(LJsonData) then begin LJsonConsulta := LJsonData.AsJSONObject['dadosConsulta']; if Assigned(LJsonConsulta) then begin // VITAL: Criamos o item na lista EXATAMENTE aqui, igual ao "if LTrataBoleto" do Itaú ListaRetorno := ACBrBoleto.CriarRetornoWebNaLista; ListaRetorno.HTTPResultCode := HTTPResultCode; ListaRetorno.JSON := LJson.ToJSON; ListaRetorno.JSONEnvio := EnvWs; LJsonBoleto := LJsonConsulta.AsJSONObject['dadosBoleto']; LJsonPagador := LJsonConsulta.AsJSONObject['dadosPagador']; // Mapeamento dos campos estruturados do Boleto ListaRetorno.DadosRet.IDBoleto.CodBarras := LJsonBoleto.AsString['codigoDeBarras']; ListaRetorno.DadosRet.IDBoleto.NossoNum := LJsonBoleto.AsString['nossoNumero']; ListaRetorno.indicadorContinuidade := False; ListaRetorno.DadosRet.TituloRet.CodBarras := ListaRetorno.DadosRet.IDBoleto.CodBarras; ListaRetorno.DadosRet.TituloRet.LinhaDig := ListaRetorno.DadosRet.IDBoleto.LinhaDig; ListaRetorno.DadosRet.TituloRet.NossoNumero := ListaRetorno.DadosRet.IDBoleto.NossoNum; ListaRetorno.DadosRet.TituloRet.Vencimento := StrToDateDef(LJsonBoleto.AsString['dataVencimento'], 0); ListaRetorno.DadosRet.TituloRet.DataRegistro := StrToDateDef(LJsonBoleto.AsString['dataEmissao'], 0); ListaRetorno.DadosRet.TituloRet.ValorDocumento := StrToCurrDef(LJsonBoleto.AsString['valorBoleto'], 0); ListaRetorno.DadosRet.TituloRet.ValorAtual := StrToCurrDef(LJsonBoleto.AsString['valorBoleto'], 0); ListaRetorno.DadosRet.TituloRet.EstadoTituloCobranca := LJsonBoleto.AsString['situacao']; // Dados do Pagador ListaRetorno.DadosRet.TituloRet.Sacado.NomeSacado := LJsonPagador.AsString['nomeCompleto']; ListaRetorno.DadosRet.TituloRet.Sacado.Cidade := LJsonPagador.AsString['cidade']; ListaRetorno.DadosRet.TituloRet.Sacado.UF := LJsonPagador.AsString['estado']; ListaRetorno.DadosRet.TituloRet.Sacado.Cep := LJsonPagador.AsString['cep']; ListaRetorno.DadosRet.TituloRet.Sacado.Logradouro := LJsonPagador.AsString['endereco']; ListaRetorno.DadosRet.TituloRet.Sacado.CNPJCPF := LJsonPagador.AsString['cpfCnpj']; // Captura do PIX (Cópia e Cola) LJsonCopiaCola := LJsonConsulta.AsJSONObject['codigoCopiaECola']; if Assigned(LJsonCopiaCola) then ListaRetorno.DadosRet.TituloRet.EMV := LJsonCopiaCola.AsString['copiaECola']; // Verificação de Baixa / Liquidação LSituacao := UpperCase(LJsonBoleto.AsString['situacao']); if (Pos('BAIXADO', LSituacao) > 0) or (Pos('LIQUIDADO', LSituacao) > 0) then begin if Assigned(LJsonConsulta.AsJSONObject['dadosLiquidacaoBaixado']) then begin ListaRetorno.DadosRet.TituloRet.ValorPago := StrToCurrDef(LJsonConsulta.AsJSONObject['dadosLiquidacaoBaixado'].AsString['valorPago'], 0); ListaRetorno.DadosRet.TituloRet.DataBaixa := StrToDateDef(LJsonConsulta.AsJSONObject['dadosLiquidacaoBaixado'].AsString['dataLiquidacaoBaixa'], 0); end else ListaRetorno.DadosRet.TituloRet.DataBaixa := Date; end; end; end; end; finally LJson.Free; end; except Result := False; end; end; end; ACBrBoletoRet_Safra.pas
Recommended Posts
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 contaEntrar
Já tem uma conta? Faça o login.
Entrar Agora