Jump to content

dev botao

Consulta Boletos Banco do Brasil API


rpaulogio
Go to solution Solved by José M. S. Junior,
  • Este tópico foi criado há 609 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Administradores

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 !!

Link to comment
Share on other sites

  • Moderadores

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.

Link to comment
Share on other sites

  • Membros Pro
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?

Link to comment
Share on other sites

  • Moderadores
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.

Link to comment
Share on other sites

  • Moderadores

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.

Link to comment
Share on other sites

  • Moderadores

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.

Link to comment
Share on other sites

  • Moderadores
  • Solution

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.

Link to comment
Share on other sites

  • Membros Pro

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;

Link to comment
Share on other sites

  • Moderadores
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.

Link to comment
Share on other sites

  • Este tópico foi criado há 609 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Guest
This topic is now closed to further replies.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.