Como utilizar o OpenBoleto com Composer e CodeIgniter

Existe uma biblioteca no GitHub chamada OpenBoleto que foi criada para ser instalada via composer no seu sistema ou no seu Framework.

Hoje vou ensinar a como instalar esta biblioteca no CodeIgniter via composer para que você possa imprimir boletos bancários de um jeito super simples.

O único inconveniente da biblioteca é que ela não suporta muitos bancos.

Na versão que ela está suporta apenas:

  • Banco de Brasília (BRB)
  • Banco do Brasil
  • Bradesco
  • Caixa (SIGCB)
  • Itaú
  • Santander
  • Unicred

Eu não acredito que eles vão adicionar novos bancos, pois a última atualização foi em agosto de 2014. Mas talvez sirva de inspiração para você criar a possibilidade de novos bancos e adicioná-los ao GitHub.

O primeiro passo é instalarmos o CodeIgniter utilizando o composer, depois, incluiremos o OpenBoleto no composer.json para ele ser instalado no CodeIgniter.

Primeiro passo: instalando o CodeIgniter via Composer

Se você não conhece o composer, veja este meu post sobre o assunto.

A partir de um terminal ou prompt de comando do dos no Windows, acesse a pasta do seu servidor web local e digite o seguinte comando:

composer create-project bcit-ci/codeigniter open_boleto_ci --prefer-dist

Onde “open_boleto_ci” é o nome da pasta que o composer irá criar na raiz do seu servidor web local.

Feito isso, após alguns segundos o CodeIgniter já deverá estar instalado no seu computador.

Abra seu navegador e acesse o endereço que talvez seja: http://localhost/open_boleto_ci e veja se o CodeIgniter está rodando normalmente.

Após esta etapa, vamos agora instalar o OpenBoleto.

Usando seu editor de textos preferido ou sua IDE, abra o arquivo composer.json que está na raiz da pasta open_boleto_ci e vamos acrescentar “kriansa/openboleto”: “dev-master” que irá instruir o composer a instalar o OpenBoleto.

Seu composer.json ficará assim:

{
	"description" : "The CodeIgniter framework",
	"name" : "codeigniter/framework",
	"license": "MIT",
	"require": {
		"php": ">=5.2.4"
	},
	"require-dev": {
		"mikey179/vfsStream": "1.1.*",
		"kriansa/openboleto": "dev-master"
	}
}

Feito isto, salve o arquivo e volte ao terminal ou ao prompt do DOS, entre na pasta open_boleto_ci, caso já não esteja lá, e digite a seguinte linha:

composer update

Este comando irá chamar o composer que irá verificar se existe alguma alteração. Como acrescentamos uma nova linha no composer.json o composer irá agora procurar por esta nova biblioteca e instalá-la para você automaticamente após alguns segundos.

Terminada esta etapa, vamos agora informar ao CodeIgniter que ele deverá carregar também o autoload.php do composer.

Para isto, acesse: application/config/config.php e na linha 134 deixe assim:

$config['composer_autoload'] = FCPATH.'vendor/autoload.php';

Como é dito nos comentários acima desta linha, deveríamos apenas informar TRUE para que o CodeIgniter carregue o autoload.php do composer, porém, se fizermos somente isto, o CodeIgniter irá procurar pelo autoload neste caminho: application/vendor/autoload.php e assim não irá funcionar, porque além desta pasta não existir, por mais que você a crie, não vai ser o autoload padrão do composer.

Então, o que devemos fazer é em vez de informarmos TRUE vamos indicar o caminho completo até o autoload original do composer, que é como mostrei acima.

Feito isto, é para tudo estar funcionando.

Segundo passo: configurando e usando o OpenBoleto

Vamos agora usar o OpenBoleto.

Note que eu usei aqui a instalação original do CodeIgniter e que vamos precisar de muito poucas mudanças.

Vamos colocar o código que instancia o OpenBoleto e faz a geração do mesmo no método index do controller Welcome_message.php. Deixe-o assim:

<?php defined('BASEPATH') OR exit('No direct script access allowed');

use OpenBoleto\Banco\BancoDoBrasil;
use OpenBoleto\Agente;

class Welcome extends CI_Controller {

	public function index()
	{
		
	$sacado = new Agente('Fernando Maia', '023.434.234-34', 'ABC 302 Bloco N', '72000-000', 'Brasília', 'DF');
	$cedente = new Agente('Empresa de cosméticos LTDA', '02.123.123/0001-11', 'CLS 403 Lj 23', '71000-000', 'Brasília', 'DF');
	 
	$boleto = new BancoDoBrasil(array(
	    // Parâmetros obrigatórios
	    'dataVencimento' => new DateTime('2013-01-24'),
	    'valor' => 23.00,
	    'sequencial' => 1234567, // Para gerar o nosso número
	    'sacado' => $sacado,
	    'cedente' => $cedente,
	    'agencia' => 1724, // Até 4 dígitos
	    'carteira' => 18,
	    'conta' => 10403005, // Até 8 dígitos
	    'convenio' => 1234, // 4, 6 ou 7 dígitos
	));
	 
		$dados['boleto'] = $boleto->getOutput();		
		$this->load->view('welcome_message', $dados);
	}
}

Antes da classe ser criada, repare que existem duas linhas:

use OpenBoleto\Banco\BancoDoBrasil;
use OpenBoleto\Agente;

Aqui estamos dizendo ao CodeIgniter para buscar os métodos e propriedades do OpenBoleto que estão naquele local. Estamos usando o namespace do OpenBoleto.

É aqui que você deverá dizer com qual banco irá trabalhar.

Para ver o nome exato dos bancos, abra esta pasta: vendor/kriansa/openboleto/src/OpenBoleto/Banco

Estes são os nomes que você irá alterar. Por exemplo, se quiser trabalhar com a Caixa Econômica, use a seguinte linha:

use OpenBoleto\Banco\Caixa;

O próximo passo é instanciarmos a classe e preenchê-la com as informações necessárias.

Aqui estou usando o próprio exemplo dado pelo desenvolvedor da biblioteca:

$sacado = new Agente('Fernando Maia', '023.434.234-34', 'ABC 302 Bloco N', '72000-000', 'Brasília', 'DF');
	$cedente = new Agente('Empresa de cosméticos LTDA', '02.123.123/0001-11', 'CLS 403 Lj 23', '71000-000', 'Brasília', 'DF');
	 
	$boleto = new BancoDoBrasil(array(
	    // Parâmetros obrigatórios
	    'dataVencimento' => new DateTime('2013-01-24'),
	    'valor' => 23.00,
	    'sequencial' => 1234567, // Para gerar o nosso número
	    'sacado' => $sacado,
	    'cedente' => $cedente,
	    'agencia' => 1724, // Até 4 dígitos
	    'carteira' => 18,
	    'conta' => 10403005, // Até 8 dígitos
	    'convenio' => 1234, // 4, 6 ou 7 dígitos
	));

Certo, agora, para imprimirmos o boleto, basta chamarmos o método getOutput() que está dentro da variável $boleto.

Como não devemos imprimir nada a partir de um controller, vamos então enviar esta informação para a nossa view, que neste caso é a mesma que o CodeIgniter nos disponibilizou.

Então após o código acima, digite assim:

$dados['boleto'] = $boleto->getOutput();		
$this->load->view('welcome_message', $dados);

Aqui eu vinculo a uma variável chamada “boleto” o boleto gerado pelo método getOutput() da classe e em seguida, passo isto para a view.

A única alteração que fiz na view, foi só excluir o código não utilizado e apenas imprimi o conteúdo da variável. Veja:

<?php defined('BASEPATH') OR exit('No direct script access allowed');?>
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="utf-8">
	<title>OpenBoleto e CodeIgniter</title>

</head>
<body>
	
	<? echo $boleto; ?>

</body>
</html>

E é isto. Se você abrir sua aplicação no navegador, deverá ver um boleto do banco do Brasil aparecendo.

>>>Veja funcionando

>>> Baixar o Código Fonte

Dúvidas e sugestões usem os comentários abaixo.

Abraços

Fábio

Fábio S. Reszko

Sou Programador PHP desde 2006 e eu acredito sinceramente que programar usando um Framework PHP é a solução para os problemas de códigos desorganizados, difíceis de entender e de dar manutenção no futuro. Se você também acredita nisto, então fique à vontade em explorar meu blog.

Você pode gostar...