composer require insign/integracao-bb
use insign\BB\Cobranca;
$cobranca = new Cobranca('clientId', 'clientSecret', 'developerKey', production: false);
De forma geral, não é necessário gerar o token, pois o token é gerado automaticamente pela API.
$token = $cobranca->getTokenAccess();
// https://apoio.developers.bb.com.br/referency/post/5f4fb7f5b71fb5001268ca44
$convenio = '3128557';
$idBoleto = '000' . $convenio . random_int(1000000000, 9999999999);
$registro = [
'numeroConvenio' => $convenio,
'numeroCarteira' => '17',
'numeroVariacaoCarteira' => '35',
'codigoModalidade' => '1',
'dataEmissao' => date('d.m.Y'),
'dataVencimento' => '31.12.' . date('Y'),
'valorOriginal' => '128.40',
'indicadorAceiteTituloVencido' => 'N',
'codigoAceite' => 'A',
'codigoTipoTitulo' => '2',
'descricaoTipoTitulo' => 'DUPLICATA MERCANTIL',
'indicadorPermissaoRecebimentoParcial' => 'N',
'numeroTituloBeneficiario' => '1',
'campoUtilizacaoBeneficiario' => 'UM TEXTO',
'numeroTituloCliente' => $idBoleto,
'mensagemBloquetoOcorrencia' => '',
'pagador' => [
'tipoInscricao' => '1',
'numeroInscricao' => '97965940132',
'nome' => 'Teste Teste',
'endereco' => 'R. Teste',
'cep' => '10110000',
'cidade' => 'São Paulo',
'bairro' => 'Centro',
'uf' => 'SP',
'telefone' => '1112345678',
],
// 'beneficiarioFinal' => [
// 'tipoInscricao' => '1',
// 'numeroInscricao' => '',
// 'nome' => '',
// ],
'indicadorPix' => 'S',
];
try {
$boletoRegistrado = $cobranca->registrarBoleto($registro);
}
catch (\Exception $e) {
echo "\nErro ao registrar o boleto: {$e->getMessage()}\n";
echo json_encode($registro);
return;
}
if ($idBoleto == $boletoRegistrado->numero) {
echo "\nBoleto registrado com sucesso\n";
echo json_encode($boletoRegistrado);
} else {
echo "\nErro ao registrar o boleto";
echo json_encode($boletoRegistrado);
return;
}
$id_boleto = 'nossonumero';
$numeroConvenio = '';
$listar = $cobranca->verBoleto($id_boleto, $numeroConvenio);
$id_boleto = 'nossonumero';
$data = [
'numeroConvenio' => '3128557',
'indicadorNovaDataVencimento' => 'S',
'alteracaoData' => [
'novaDataVencimento' => '01.04.2021',
],
'indicadorAtribuirDesconto' => 'N',
'desconto' => [
'tipoPrimeiroDesconto' => '',
'valorPrimeiroDesconto' => '',
'percentualPrimeiroDesconto' => '',
'dataPrimeiroDesconto' => '',
'tipoSegundoDesconto' => '',
'valorSegundoDesconto' => '',
'percentualSegundoDesconto' => '',
'dataSegundoDesconto' => '',
'tipoTerceiroDesconto' => '',
'valorTerceiroDesconto' => '',
'percentualTerceiroDesconto' => '',
'dataTerceiroDesconto' => '',
],
'indicadorAlterarDesconto' => 'N',
'alteracaoDesconto' => [
'tipoPrimeiroDesconto' => '',
'novoValorPrimeiroDesconto' => '',
'novoPercentualPrimeiroDesconto' => '',
'novaDataLimitePrimeiroDesconto' => '',
'tipoSegundoDesconto' => '',
'novoValorSegundoDesconto' => '',
'novoPercentualSegundoDesconto' => '',
'novaDataLimiteSegundoDesconto' => '',
'tipoTerceiroDesconto' => '',
'novoValorTerceiroDesconto' => '',
'novoPercentualTerceiroDesconto' => '',
'novaDataLimiteTerceiroDesconto' => '',
],
'indicadorAlterarDataDesconto' => 'N',
'alteracaoDataDesconto' => [
'novaDataLimitePrimeiroDesconto' => '',
'novaDataLimiteSegundoDesconto' => '',
'novaDataLimiteTerceiroDesconto' => '',
],
'indicadorProtestar' => 'N',
'protesto' => [
'quantidadeDiasProtesto' => '',
],
'indicadorSustacaoProtesto' => 'N',
'indicadorCancelarProtesto' => 'N',
'indicadorIncluirAbatimento' => 'N',
'abatimento' => [
'valorAbatimento' => '',
],
'indicadorCancelarAbatimento' => 'N',
'alteracaoAbatimento' => [
'novoValorAbatimento' => '',
],
'indicadorCobrarJuros' => 'N',
'juros' => [
'tipoJuros' => '',
'valorJuros' => '',
'taxaJuros' => '',
],
'indicadorDispensarJuros' => 'N',
'indicadorCobrarMulta' => 'N',
'multa' => [
'tipoMulta' => '',
'valorMulta' => '',
'dataInicioMulta' => '',
'taxaMulta' => '',
],
'indicadorDispensarMulta' => 'N',
'indicadorNegativar' => 'N',
'negativacao' => [
'quantidadeDiasNegativacao' => '',
'tipoNegativacao' => '',
],
'indicadorAlterarSeuNumero' => 'N',
'alteracaoSeuNumero' => [
'codigoSeuNumero' => '',
],
'indicadorAlterarEnderecoPagador' => 'N',
'alteracaoEndereco' => [
'enderecoPagador' => '',
'bairroPagador' => '',
'cidadePagador' => '',
'UFPagador' => '',
'CEPPagador' => '',
],
'indicadorAlterarPrazoBoletoVencido' => 'N',
'alteracaoPrazo' => [
'quantidadeDiasAceite' => '',
]
];
$alterar = $cobranca->alterarBoleto($id_boleto, $data);
$id_boleto = 'nossonumero';
$convenio 'convenio'
$baixar = $cobranca->baixarBoleto($id_boleto, $convenio);
Informações sobre a API utilizada nesta integração: https://apoio.developers.bb.com.br/referency/post/5f9c2149f39b8500120ab13c
Contribua com esta integração no GitHub
Para enviar uma nova versão execute make push
(nova tag patch com seus commits)
Execute os testes com Pest executando: make test