Olá, quando realizamos a operação de alteração de vencimento do boleto SICREDI, o banco retorna o seguinte JSON:
{
"transactionId": "38f63fad-ded3-4437-964d-f9b477537438",
"dataMovimento": "11/06/2024",
"codigoBeneficiario": "12345",
"nossoNumero": "242023467",
"cooperativa": "6789",
"posto": "03",
"statusComando": "MOVIMENTO_ENVIADO",
"dataHoraRegistro": "2024-06-11T10:19:27.025158",
"tipoMensagem": "ALTERA_VENCIMENTO"
}
Contudo a classe TRetornoEnvio_Sicredi_APIV2 ao executar o método LerRetorno, gera um access violation, pois não consegue realizar o parse corretamente do json, pois não há outros objetos neste, pois tudo é tratado como consulta, baixa e alteração do boleto
tpBaixa,
tpAltera,
tpConsultaDetalhe :
begin
ARetornoWS.DadosRet.TituloRet.CodBarras := LJsonObject.AsString['codigoBarras'];
ARetornoWS.DadosRet.TituloRet.LinhaDig := LJsonObject.AsString['linhaDigitavel'];
ARetornoWS.DadosRet.TituloRet.Carteira := LJsonObject.AsString['carteira'];
ARetornoWS.DadosRet.TituloRet.SeuNumero := LJsonObject.AsString['seuNumero'];
ARetornoWS.DadosRet.TituloRet.NossoNumero := LJsonObject.AsString['nossoNumero'];
//Pagador
//ARetornoWS.DadosRet.TituloRet.Sacado.codigo := LJsonObject.AsJSONObject['pagador'].AsString['codigo'];
ARetornoWS.DadosRet.TituloRet.Sacado.NomeSacado := LJsonObject.AsJSONObject['pagador'].AsString['nome']; -----< erro ocorre aqui
ARetornoWS.DadosRet.TituloRet.Sacado.CNPJCPF := LJsonObject.AsJSONObject['pagador'].AsString['documento'];
//Datas
Assim realizei a correção para que quando for operação de alteração, faça um tratamento a parte, estou anexando os códigos fontes corrigidos para análise e submetendo a vocês para atualização do repositório
ACBrBoletoRet_Sicredi_APIV2.pas
ACBrBoletoRetorno.pas
Irei validar a operação de baixa, se houver algum problema irei corrigir e submeter aqui no fórum