Ir para conteúdo
  • Cadastre-se

dev botao

Consulta Boletos Banco do Brasil API


Ver Solução Respondido por José M. S. Junior,
  • Este tópico foi criado há 876 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro
Postado

Prezados,

Ao realizar a consulta de boletos via API do Banco do Brasil recebo o erro abaixo:

image.thumb.png.f216af0539dbade1de495f3bd7679115.png

Isso em ambiente de homologação, estou usando as informações conforme exemplo do componente.

  • Administradores
Postado

Tópico movido para a área do SAC, para que o SLA de respostas seja considerado

Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

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


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

  • Moderadores
Postado

Esse é o código correto para homologação.

Configure para gerar o log na propriedade Configurações/Arquivo e verifique como está sendo gerado no JSON. Se estiver ok pode ser algum outro campo com erro, teria que consultar pelo código do erro na documentação do BB.

Consultor SAC ACBr

José Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

  • Membros Pro
Postado
40 minutos atrás, José M. S. Junior disse:

Esse é o código correto para homologação.

Configure para gerar o log na propriedade Configurações/Arquivo e verifique como está sendo gerado no JSON. Se estiver ok pode ser algum outro campo com erro, teria que consultar pelo código do erro na documentação do BB.

Configurei assim:

image.png.d72292600a556972f25b5078e0faa141.png

image.thumb.png.5e2a362ed5a7c161e7ff84b931f95119.png

O arquivo esta vazio, o que pode ser?

  • Moderadores
Postado
14 horas atrás, rpaulogio disse:

image.thumb.png.ff01a1cd554e1514f7fff027df5cfee2.png

Esses códigos é de identificação do erro junto a documentação do BB.

Na pasta de log ou junto ou na pasta do seu programa deve estar gerando um arquivo .json com os dados que está sendo enviado, onde pode verificar como está sendo preenchido os campos.

Consultor SAC ACBr

José Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

  • Moderadores
Postado

Esse é o motivo do erro então. Provavelmente está faltando alguma informação para não estar gerando o json. 

Está informando o Banco correto?

ACBrBoleto.Banco.TipoCobranca:= cobBancoDoBrasilAPI;

 

Ao imprimir esse boleto antes do envio está gerando a impressão com todos os dados normalmente?

Consultor SAC ACBr

José Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

  • Membros Pro
Postado (editado)

José,

Esta assim:

image.thumb.png.7f67397a96973cf0a06fb4c4789fcbcf.png

Boleto:

image.thumb.png.89e523b4de84c58314335ef907d1e9e4.png

O envio esta correto, o problema e quando eu executo a consulta:

image.png.b852abbf995c69e0a741f529a7b09357.png

Alguma outra dica?

Editado por rpaulogio
  • Moderadores
Postado

A consulta, não necessita ter o título na lista, basta passar os dados para o filtro ex:

  Boleto1.Configuracoes.WebService.Filtros.Clear;
  Boleto1.Configuracoes.WebService.Filtros.indicadorSituacao := isbAberto;
  Boleto1.Configuracoes.WebService.Filtros.dataMovimento.DataInicio := IncDay(Date,-1);
  Boleto1.Configuracoes.WebService.Filtros.dataMovimento.DataFinal  := Date;
  Boleto1.EnviarBoleto;

Consultor SAC ACBr

José Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

  • Moderadores
  • Solution
Postado

O CodigoMensagem do erro retornado não bate com a descrição da documentação deles...

https://apoio.developers.bb.com.br/referency/post/5f4f8850b71fb5001268c9ca

 

Para garantir que está sendo utilizando o endpoint correto, utilize o seguinte código antes do método EnviarBoleto:

Boleto.Configuracoes.WebService.Operacao := tpConsulta; 

De qualquer forma, se está conseguindo incluir, indica que a comunicação está ok... Pode ser algum problema na api mesmo, nesse caso sugiro que questione sobre o erro no fórum do BB.

 

Consultor SAC ACBr

José Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

  • Membros Pro
Postado

José,

Estou criando o componente em tempo de execução, segue o código, veja por favor se estou preenchendo alguma informação errada:

procedure TService1.ConsultaBoletos;
begin
  Boleto   := TACBrBoleto.Create(Self);
  BoletoFC := TACBrBoletoFCFR.Create(Self);

  try
   ConsultaBoletosAPI;
  finally
    Boleto.Free;
    BoletoFC.Free;
  end;
end;

procedure TService1.ConsultaBoletosAPI;
var
  FiltrosAPI : TACBrBoletoWSFiltroConsulta;
  ConsBoleto : TACBrBoleto;
  SLRetorno  : TStringList;
  Retorno    : TListaRetEnvio;
  I: Integer;
begin
  ConfiguraComponente('Consulta');

  ConsBoleto := Boleto;
  FiltrosAPI := ConsBoleto.Configuracoes.WebService.Filtro;

  FiltrosAPI.Clear;
  FiltrosAPI.indicadorSituacao        := isbBaixado;
  FiltrosAPI.dataMovimento.DataInicio := IncDay(Date,-1);
  FiltrosAPI.dataMovimento.DataFinal  := Date;
  //FiltrosAPI.indiceContinuidade       := 300;

  ConsBoleto.EnviarBoleto;
  Retorno := ConsBoleto.ListaRetornoWeb;
  if Retorno.Count > 0 then
  begin
    SLRetorno := TStringList.Create;
    try
      SLRetorno.Add('Cod_Retorno='+ Retorno[i].CodRetorno + sLineBreak +
                         'Msg_Retorno='+ Retorno[i].MsgRetorno + sLineBreak +
                         'Ori_Retorno='+ Retorno[i].OriRetorno + sLineBreak +
                         'HTTP_Result='+ IntToStr(Retorno[i].HTTPResultCode) + sLineBreak +
                         'JSON='+ Retorno[i].JSON);
      SLRetorno.Add('indicadorContinuidade=' + BoolToStr(Retorno[0].indicadorContinuidade));
      SLRetorno.Add('proximoIndice=' + IntToStr(Retorno[0].proximoIndice));
      SLRetorno.Add(' ');
      SLRetorno.Add(' ');
      for I := 0 to Pred(Retorno.Count) do
      begin
        SLRetorno.Add('[Boletos Index = '             + FormatFloat('000',I)+']');
        SLRetorno.Add('numeroBoletoBB = '             + Retorno[I].DadosRet.TituloRet.NossoNumero);
        SLRetorno.Add('dataRegistro = '               + DateToStr(Retorno[I].DadosRet.TituloRet.DataRegistro));
        SLRetorno.Add('dataVencimento = '             + DateToStr(Retorno[I].DadosRet.TituloRet.Vencimento));
        SLRetorno.Add('valorOriginal = '              + DateToStr(Retorno[I].DadosRet.TituloRet.ValorDocumento));
        SLRetorno.Add('carteiraConvenio = '           + Retorno[I].DadosRet.TituloRet.Carteira);
        SLRetorno.Add('variacaoCarteiraConvenio = '   + intToStr(Retorno[I].DadosRet.TituloRet.Modalidade));
        SLRetorno.Add('codigoEstadoTituloCobranca = ' + Retorno[I].DadosRet.TituloRet.codigoEstadoTituloCobranca);
        SLRetorno.Add('estadoTituloCobranca = '       + Retorno[I].DadosRet.TituloRet.estadoTituloCobranca);
        SLRetorno.Add('contrato = '                   + Retorno[I].DadosRet.TituloRet.Contrato);
        SLRetorno.Add('dataMovimento = '              + DateToStr(Retorno[I].DadosRet.TituloRet.dataMovimento));
        SLRetorno.Add('dataCredito = '                + DateToStr(Retorno[I].DadosRet.TituloRet.dataCredito));
        SLRetorno.Add('valorAtual = '                 + CurrToStr(Retorno[I].DadosRet.TituloRet.valorAtual));
        SLRetorno.Add('valorPago = '                  + CurrToStr(Retorno[I].DadosRet.TituloRet.ValorPago));
        SLRetorno.Add('  ---  ');
      end;
      SLRetorno.SaveToFile( PathWithDelim(ExtractFilePath(Application.ExeName))+formatDateTime('yyyy.mm.dd.hh.nn.ss.zzz',now)+'-RetornoConsulta.txt' );
    finally
      SLRetorno.Free;
    end;
  end;
end;

procedure TService1.ConfiguraComponente(Tipo: String);
var
  WebService     : TACBrWebService;
  CobAnterior    : TACBrTipoCobranca;
  Beneficiario   : TACBrCedente;
  BeneficiarioWS : TACBrCedenteWS;
  Banco          : TACBrBanco;
  Conf           : TConfiguracoes;
begin

    if not DirectoryExists(CaminhoDir) then
      ForceDirectories(CaminhoDir);

    Beneficiario       := Boleto.Cedente;
    BeneficiarioWS     := Beneficiario.CedenteWS;
    Banco              := Boleto.Banco;
    WebService         := Boleto.Configuracoes.WebService;
    Banco.TipoCobranca := cobBancoDoBrasilAPI;
    Conf               := Boleto.Configuracoes;

    Conf.Arquivos.LogRegistro:= true;
    Conf.Arquivos.PathGravarRegistro:= CaminhoDir;

     WebService.Ambiente:= taHomologacao

      Beneficiario.Agencia       := '0284';
      Beneficiario.AgenciaDigito := '2';
      Beneficiario.CEP           := '18280087';
      Beneficiario.Cidade        := 'Tatui';
      Beneficiario.CNPJCPF       := '97.257.206/0001-33';
      Beneficiario.CodigoCedente := '373931';
      Beneficiario.Complemento   := 'casa';
      Beneficiario.Conta         := '000000079489';
      Beneficiario.ContaDigito   := '9';
      Beneficiario.Convenio      := '3128557';
      Beneficiario.Logradouro    := 'Rua das Flores';
      Beneficiario.UF            := 'SP';
      Beneficiario.Modalidade    := '35';
      Beneficiario.Nome          := 'Toda Obra Materiais';
      Beneficiario.CodigoTransmissao := '1';
      Beneficiario.TipoInscricao := pJuridica;
      BeneficiarioWS.ClientID    := qryConfAPI.FieldByName('CLIENT_ID').AsString;
      BeneficiarioWS.ClientSecret:= qryConfAPI.FieldByName('CLIENT_SECRET').AsString;
      BeneficiarioWS.KeyUser     := edtKeyUser.Text;

      if Tipo = 'Envia' then
        BeneficiarioWS.Scope     := 'cobrancas.boletos-requisicao' //cobranca.boletos-info
      else
        BeneficiarioWS.Scope     := 'cobrancas.boletos-info cobrancas.boletos-requisicao';

      if Tipo = 'Envia' then
      begin
        WebService.Operacao      := tpInclui;
        BeneficiarioWS.IndicadorPix := True;
      end
      else
        WebService.Operacao      := tpConsulta;

      WebService.SSLHttpLib      := httpWinHttp;
      WebService.SSLCryptLib     := cryWinCrypt;
      WebService.SSLType         := LT_TLSv1_2;
      WebService.TimeOut         := 30000;
      WebService.UseCertificateHTTP:= False;

  end;

  • Membros Pro
Postado

José,

Consegui realizar a consulta, estava preenchendo alguns campos desnecessário: AgenciaDigito/CNPJCPF/ContaDigito, retirei os mesmos e a consulta retornou os boletos.

Obrigado por sua atenção.

  • Curtir 1
  • Moderadores
Postado
23 minutos atrás, rpaulogio disse:

Consegui realizar a consulta, estava preenchendo alguns campos desnecessário: AgenciaDigito/CNPJCPF/ContaDigito, retirei os mesmos e a consulta retornou os boletos.

A consulta só precisa do KeyUser e Agencia e Conta realmente, além do filtro.

Consultor SAC ACBr

José Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

  • Este tópico foi criado há 876 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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.