Artur Alencar Postado 1 Maio Postado 1 Maio Olá pessoal. Eu postei uma dúida sobre como recuperar o xml de rettorno da API de boleto da Credisis lá no Discord, porque o pessoal do banco disse que eles enviam o boleto completo com qrcode no xml de retorno em base64. Mas olhando o xml de retorno, eu percebi que nele também vem uma tag chamada "pixCopiaCola" que vem com o mesmo link do qrcode do boleto que vem no xml. Ou seja, no xml de retorno está vindo o boleto em base64 com o qrcode e o link deste mesmo qrcode em uma tag separada. Então ao invés de usar o boleto que vem do Credisis, eu resolvi mudar a estratégia e apenas recuperar o link do pix para salvar no meu banco de dados. Vasculhei os códigos do componente para achar onde ele grava as tags de retorno e cheguei no arquivo ACBrBoletoRet_Credisis.pas. Então eu incluí neste arquivo está linha aqui: ARetornoWS.DadosRet.IDBoleto.URL := Leitor.rCampo(tcStr, 'pixCopiaCola'); O trecho de código ficou dessa forma aqui: function TRetornoEnvio_Credisis.LerRetorno(const ARetornoWS: TACBrBoletoRetornoWS): Boolean; var lXML: String; TipoOperacao : TOperacao; begin TipoOperacao := ACBrBoleto.Configuracoes.WebService.Operacao; ARetornoWS.HTTPResultCode := HTTPResultCode; ARetornoWS.JSONEnvio := EnvWs; ARetornoWS.Header.Operacao := TipoOperacao; Result := True; lXML := StringReplace(Leitor.Arquivo, 'ns1:', '', [ rfReplaceAll ]); lXML := StringReplace(lXML, C_URL_Retorno, '', [ rfReplaceAll ]); Leitor.Arquivo := lXML; Leitor.Grupo := Leitor.Arquivo; try if Leitor.rExtrai(1, 'gerarBoletosResponse') <> '' then begin ARetornoWS.DadosRet.ControleNegocial.OriRetorno := Leitor.rCampo(tcStr, 'idWeb'); ARetornoWS.DadosRet.ControleNegocial.NSU := Leitor.rCampo(tcStr, 'numeroSequencial'); ARetornoWS.DadosRet.IDBoleto.NossoNum := Leitor.rCampo(tcStr, 'nossonumero'); ARetornoWS.DadosRet.IDBoleto.LinhaDig := Leitor.rCampo(tcStr, 'linhaDigitavel'); ARetornoWS.DadosRet.IDBoleto.CodBarras := Leitor.rCampo(tcStr, 'codigoBarras'); ARetornoWS.DadosRet.IDBoleto.URL := Leitor.rCampo(tcStr, 'pixCopiaCola'); ARetornoWS.DadosRet.TituloRet.DataLimitePagto := Leitor.rCampo(tcDat, 'dataLimitePagamento'); ARetornoWS.CodRetorno := Leitor.rCampo(tcStr, 'code'); ARetornoWS.DadosRet.Excecao := Leitor.rCampo(tcStr, 'message'); end else begin if Leitor.rExtrai(1, 'buscarBoletosResponse') <> '' then begin If Leitor.rExtrai(2, 'item') <> '' then begin ARetornoWS.DadosRet.ControleNegocial.OriRetorno := Leitor.rCampo(tcStr, 'idWeb'); ARetornoWS.DadosRet.TituloRet.Sacado.CNPJCPF := Leitor.rCampo(tcStr, 'cpfCnpj'); ARetornoWS.DadosRet.IDBoleto.NossoNum := Leitor.rCampo(tcStr, 'nossonumero'); ARetornoWS.DadosRet.TituloRet.NumeroDocumento := Leitor.rCampo(tcStr, 'documento'); ARetornoWS.DadosRet.TituloRet.Parcela := Leitor.rCampo(tcInt, 'parcela'); end; end; end; except Result := False; end; end; Gostaria de saber se alguém pode validar isso pra mim, se está correto. Eu não tenho como testar aqui porque estou sem dados de alguma conta pra fazer um boleto.
Moderadores BigWings Postado 2 Maio Moderadores Postado 2 Maio Anexe o arquivo .pas alterado por favor. BigWingsAjude o Projeto ACBr crescer - Assine o SAC
Artur Alencar Postado 4 Maio Autor Postado 4 Maio Em 02/05/2026 at 08:08, BigWings disse: Anexe o arquivo .pas alterado por favor. Tá na mão. ACBrBoletoRet_Credisis.pas
Moderadores BigWings Postado 4 Maio Moderadores Postado 4 Maio Testando aqui, não funcionou. Apesar do XML retornado pelo banco ter a tag pixCopiaCola, quando o ACBr tenta fazer a leitura, na linha... if Leitor.rExtrai(2, 'item') <> '' then ... acaba truncando o trecho do XML e perdendo as tags finais, entre elas o pixCopiaCola. Estou analisando a melhor forma de ajustar. 1 BigWingsAjude o Projeto ACBr crescer - Assine o SAC
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