OpenBoleto – Biblioteca de boletos bancários em PHP
O OpenBoleto é uma biblioteca de código aberto para geração de boletos bancários, um meio de pagamento muito comum no Brasil. O foco é ser simples e ter uma arquitetura compatível com os recursos mais modernos do PHP, mais amigável com frameworks MVC. Criada em Janeiro de 2013, hoje finalmente lançamos a primeira versão estável.
Como usar?
O OpenBoleto é simples e flexível, serve tanto para quem não tem tanta experiência em programação quanto para quem manja dos paranauê gosta de customizar tudo. Veja um exemplo abaixo de como gerar um boleto para o Banco do Brasil:
Sim, é só isso! :) Claro que existem outras opções configuráveis, para saber as específicas de cada banco, consulte a pasta samples.
Note que o sufixo “Dv” se refere à dígito verificador. Todos os parâmetros para geração podem ser acessados via getters e setters, por exemplo:
Instalação
Composer
Se você já conhece o Composer (o que é extremamente recomendado), simplesmente adicione a dependência abaixo à diretiva “require” seu composer.json:
Como library de algum framework
Primeiro baixe ou clone o repositório no GitHub. Se você usa algum framework com autoloader, basta apontar o namespace ‘OpenBoleto’ para a pasta ‘src’. Ou simplesmente mova o conteúdo da pasta ‘src’ para a library de seu framework.
Com PHP puro (biblioteca standalone)
Caso não use framework ou nenhum autoloader, ou você simplesmente quer dar “um include e pronto”, você pode usar o autoloader incluso na biblioteca, para isso simplesmente dê um include no arquivo “autoloader.php” e tudo deverá funcionar normalmente!
Bancos suportados
Atualmente estão suportados os seguintes bancos:
- Banco de Brasília (BRB)
- Banco do Brasil
- Bradesco
- Itaú
- Santander
- Unicred
Você também pode ajudar adaptando a outros bancos, o processo consiste basicamente em identificar o modo pelo qual o banco gera o seu campo livre, ou seja, o campo de 20 a 44 do código de barras. Desta forma, basta implementar em uma classe observando outros atributos como código do banco. Como exemplo, veja a classe Bradesco.
Algumas considerações
O método getNossoNumero é read-only, ou seja, não existe um setNossoNumero. Por que isso? Alguns bancos geram o nosso número, aquele que fica impresso no boleto, de forma diferente do código único que você define por boleto.
Para evitar confusões, definimos que o código único por boleto se chama sequencial. Nosso número é aquele que aparece no boleto, e geralmente é o que vem nos arquivos de retorno do banco.
#TODO
Apesar do bootstrap do PHPUnit estar pronto, os testes unitários não estão. É necessário fazê-los.DONE.- Falta adaptar a biblioteca a todos os outros bancos existentes
- Outro objetivo é que a classe também trabalhe com arquivos de remessa e retorno dos bancos
Toda contribuição é muito bem vinda! Note que os padrões de codificação utilizados são os PSR-0, PSR-1 e PSR-2.
Agradecimentos
Agradeço aos mantenedores das bibliotecas BoletoPHP e Boleto Library PHP, principalmente à este último que explica muito bem como funciona a geração de boletos e foi de grande inspiração para a abstração do OpenBoleto. Agradeço também por toda comunidade que apoia e contribui para o projeto. E por último, mas não menos importante ao Cristiano Teles, coordenador da comunidade PHP-DF e grande e inspirador mentor com o qual tive o privilégio de aprender muitas das coisas aqui postas em prática.
Licença
Este projeto é de código aberto licenciado pela MIT License.