Skip to content

Commit

Permalink
Versão 1.1: cache de token
Browse files Browse the repository at this point in the history
  • Loading branch information
recovieira committed Jul 15, 2018
1 parent 3c93c0b commit e206922
Show file tree
Hide file tree
Showing 3 changed files with 253 additions and 73 deletions.
7 changes: 5 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# **Cliente WebService para registro de boletos no Banco do Brasil**
A partir de 2017, a rede bancária brasileira traz uma nova plataforma de geração Boletos de Cobrança Registrada, buscando uma maior agilidade e segurança para toda sociedade.

Conforme divulgado pela [Febraban](https://portal.febraban.org.br/pagina/3150/1094/pt-br/servicos-novo-plataforma-boletos), o início da implantação deverá ocorrer em julho/2017, devendo ser totalmente concluída até dezembro/2017.
Conforme divulgado pela [Febraban](https://portal.febraban.org.br/pagina/3150/1094/pt-br/servicos-novo-plataforma-boletos), a implantação deve ser totalmente concluída a partir de dezembro/2017.

A solução desenvolvida pelo Banco do Brasil é baseada em Web Services e utiliza o protocolo OAuth 2.0 para autenticação e autorização das requisições.

Expand Down Expand Up @@ -52,9 +52,12 @@ Estrutura breve do conteúdo:
```

### Changelog
#### V 1.0.0
#### V 1.0
Lançamento inicial.

#### V 1.1
Evita requisitar uma token toda vez que for registrar um boleto. Armazena a token em cache e requisita uma nova automaticamente quando ela estiver preste a expirar ou já tiver expirado.

### Autor
Reginaldo Coimbra Vieira (recovieira@gmail.com)

Expand Down
95 changes: 57 additions & 38 deletions index.php
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
<?php
// Importar classe "BBBoletoWebService" do arquivo no caminho "./lib/bb.php"
require_once(__DIR__ . DIRECTORY_SEPARATOR . 'lib' . DIRECTORY_SEPARATOR . 'bb.php');

// Se for uma requisição na Web, retorna no formato texto plano com suporte à codificação de caracteres UTF-8
Expand All @@ -24,49 +25,67 @@
$telefonedocliente = '';

// Cria objeto de BBBoletoWebService para consumo de serviço
$bb = new BBBoletoWebService('coloqueOClientIDAqui', 'coloqueOSecretAqui');
$bb = new BBBoletoWebService('coloque_O_ClientID_Aqui', 'coloque_O_Secret_Aqui');

// Realiza a obtenção de token
$token = $bb->obterToken();
if ($token && isset($token->access_token)) {
echo "Token recebida:\n\n" . $token->access_token . "\n\n\n";
flush();
// O diretório de cache pode ser alterado pelo método "trocarCaminhoDaPastaDeCache"
// $bb->trocarCaminhoDaPastaDeCache('./cache'); // exemplo

// Exemplo de chamada passando os parâmetros com a token
$resultado = $bb->registrarBoleto(array(
'numeroConvenio' => $convenio,
'numeroCarteira' => $numerodacarteira,
'numeroVariacaoCarteira' => $variacaodacarteira,
'codigoModalidadeTitulo' => 1,
'dataEmissaoTitulo' => $datadaemissao,
'dataVencimentoTitulo' => $datadovencimento,
'valorOriginalTitulo' => $valor,
'codigoTipoDesconto' => 0,
'codigoTipoJuroMora' => 0,
'codigoTipoMulta' => 0,
'codigoAceiteTitulo' => 'N',
'codigoTipoTitulo' => 17,
'textoDescricaoTipoTitulo' => 'Recibo',
'indicadorPermissaoRecebimentoParcial' => 'N',
'textoNumeroTituloBeneficiario' => '1',
'textoNumeroTituloCliente' => '000' . $convenio . sprintf('%010d', $numerodoboleto),
'textoMensagemBloquetoOcorrencia' => 'Pagamento disponível até a data de vencimento',
'codigoTipoInscricaoPagador' => $tipodedocumentodocliente,
'numeroInscricaoPagador' => $numerodedocumentodocliente,
'nomePagador' => $nomedocliente,
'textoEnderecoPagador' => $enderecodocliente,
'numeroCepPagador' => $cepdocliente,
'nomeMunicipioPagador' => $municipiodocliente,
'nomeBairroPagador' => $bairrodocliente,
'siglaUfPagador' => $sigladoestadodocliente,
'textoNumeroTelefonePagador' => $telefonedocliente,
'codigoChaveUsuario' => 1,
'codigoTipoCanalSolicitacao' => 5
), $token->access_token);
// Parâmetros que serão passados para o Banco do Brasil
$parametros = array(
'numeroConvenio' => $convenio,
'numeroCarteira' => $numerodacarteira,
'numeroVariacaoCarteira' => $variacaodacarteira,
'codigoModalidadeTitulo' => 1,
'dataEmissaoTitulo' => $datadaemissao,
'dataVencimentoTitulo' => $datadovencimento,
'valorOriginalTitulo' => $valor,
'codigoTipoDesconto' => 0,
'codigoTipoJuroMora' => 0,
'codigoTipoMulta' => 0,
'codigoAceiteTitulo' => 'N',
'codigoTipoTitulo' => 17,
'textoDescricaoTipoTitulo' => 'Recibo',
'indicadorPermissaoRecebimentoParcial' => 'N',
'textoNumeroTituloBeneficiario' => '1',
'textoNumeroTituloCliente' => '000' . $convenio . sprintf('%010d', $numerodoboleto),
'textoMensagemBloquetoOcorrencia' => 'Pagamento disponível até a data de vencimento',
'codigoTipoInscricaoPagador' => $tipodedocumentodocliente,
'numeroInscricaoPagador' => $numerodedocumentodocliente,
'nomePagador' => $nomedocliente,
'textoEnderecoPagador' => $enderecodocliente,
'numeroCepPagador' => $cepdocliente,
'nomeMunicipioPagador' => $municipiodocliente,
'nomeBairroPagador' => $bairrodocliente,
'siglaUfPagador' => $sigladoestadodocliente,
'textoNumeroTelefonePagador' => $telefonedocliente,
'codigoChaveUsuario' => 1,
'codigoTipoCanalSolicitacao' => 5
);

// Exemplo de chamada passando os parâmetros com a token.
// Retorna um array com a resposta do Banco do Brasil, se ocorreu tudo bem. Caso contrário, retorna "false".
// A descrição do erro pode ser obtida pelo método "obterErro()".
$resultado = $bb->registrarBoleto($parametros);

// As linhas abaixo apenas testam o resultado

echo "\n";

$token = $bb->obterToken(false);
if ($token) {
echo "Token recebida/usada:\n\n" . $token->token . "\n\n\n";
echo "Token obtida em cache:\n\n" . ($token->cache ? 'Sim' : 'Não') . "\n\n\n";
} else
echo "Falha ao receber/usar a token.\n\n\n";

echo "Resultado:\n\n" . ($resultado ? 'Boleto registrado no Banco do Brasil com sucesso' : 'Erro. O boleto não foi registrado no Banco do Brasil.') . "\n\n\n";

if ($resultado) {
echo "Parse do resultado:\n\n";
print_r($resultado);
} else
echo 'Falha ao receber a token.';
echo "Descrição do erro:\n\n" . $bb->obterErro() . "\n";

echo "\n\n";

flush();
Loading

0 comments on commit e206922

Please sign in to comment.