Ir para conteúdo
  • Cadastre-se

Recommended Posts

Postado

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
Postado

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.

  • Curtir 1
Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

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.