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:

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:

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:

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:

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:

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

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:

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:

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:

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:

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

  • Olá Fábio, bom dia.
    Muito bom seu artigo, já comecei a utilizar o OpenBoleto em um projeto.
    Porém instalei o CI em um Subdomínio e não estou conseguindo retirar o index.php da URL.
    Sabe o que fazer no .htaccess para retirar o index?
    Abraço.

  • Olá Vitor

    Dê uma olhada num post onde eu falo como remover o index.php. Tem que fazer umas mudanças no .htaccess pra funcionar.
    Veja o post aqui.

    Fabio

  • Excelente Prof. Fábio.

    Tem algo semelhante para implementar a emissão de NF em um sistema?

  • Olá Júlio

    No momento não conheço nada, mas vou dar uma pesquisada por aí, caso ache com certeza farei um post a respeito.

    Fabio

  • Marco Polo Viana

    Seria a mesma forma para usar com o boletophp (http://boletophp.com.br/) ? ou qual seria a mudança?

  • Olá Marco

    Essa biblioteca foi baseada no boletophp, porém, com as modificações necessárias para ser instalada no CodeIgniter via composer.

    Ou seja, até é possível adicionar outros bancos, por exemplo, se tiver conhecimento na programação do boletophp.

    Abraços
    Fabio

  • Rônald A. S

    Grande Fábio S. Reszko —
    ..
    O sistema e muito bom mais eu estou com um grande problema que e o feedback do banco estou usando o banco da caixa economia federal e o sistema gera os boletos de boa porem dentro de 24 horas após o pagamento o banco disponibiliza um arquivo retorno o qual tem as informações de pagamento dos boletos gerados como exemplo o dia que o pagamento foi efetuado se foi cobrado a multa e juros por te sido efetuado o pagamento atrasado e tudo mais…….

    Você tem alguma sugestão ou dica de como fazer a leitura desse arquivo disponibilizado pelo banco de forma a informa em nosso sistema se o cliente pagou ou se esta em atraso e se pagou informar a data do pagamento a multa e os juros pagos ?

    Diante mão meus parabéns pelo grade trabalho que você desenvolver compartilhando conhecimento……

    ..
    ..

  • Tiago Farias

    Boa Fábio, excelente post!

    Sabe me dizer se esta biblioteca gera um arquivo de remessa para registrar os boletos?

    Obrigado.

  • Tiago, não sei dizer. Dê uma olhada na documentação do OpenBoleto que talvez eles possam ter atualizado e quem sabe adicionado tal função.

    Fabio

  • Walney Moreira Klein

    Bom dia, fiz download do fonte coloquei na pasta htdocs e tento abrir no navegador fica em branco nada aparece , necessito emitir boleto bancario banco bradesco para um cliente e pegar dados de uma base de dados poderia me ajudar ?

  • Olá Walney.

    Faça passo a passo. Primeiro coloque só o CodeIgniter, veja se funciona. Depois instale o Open Boleto e veja se funciona. Pode se que seja algum problema no seu servidor local. Vai testando com o básico pra ir eliminando os problemas. Em último caso, dê uma olhada no log do Apache, erros. Se tiver usando o CPANEL, lá tem uma opção chamada Erros do Apache. Ali diz qual o problema que pode estar ocorrendo.

  • Walney Moreira Klein

    consegui implementar para o bradesco esta em branco pois neste comando coloquei o php ficando assim ae mostrou agora nos ensina como poderei obter estes dados atraves de um banco de dados e como configurar isso no ci, sou iniciante e adorei sua dica, obrigado.

  • Walney, dá uma olhada neste post, ele ensina como você trabalha com banco de dados no CodeIgniter. http://www.dicascodeigniter.com.br/edicao-de-clientes-com-modal-bootstrap-e-codeigniter/

  • Walney Moreira Klein

    Muito bom maravilha, teria ideia de como faço para colocar um botão para incluir, excluir e depois gerar boleto ? pois de editar esta funcionando queria tipo um crud mais com botão também para gerar o boleto esta funcionando mais independente, muito obrigado amei seus artigos espero aprender muito o CI, pois necessito gerar este controle financeiro e emissão boleto bradesco.

  • gimidia

    olá pessoal porque com o wampserver fica em branco não aparece o boleto ?

  • gimidia

    olá estou usando o wampserver e fica em branco no navegador o openboleto no hostinger fica aparecendo, vc poderia ajudar

  • Olá. Bom, podem ser vários os motivos. Comece testando o básico. Veja se só o CI funciona, depois, carregue o open boleto e vá eliminando as causas dos erros. Veja também se no seu wamp está habilitada a opção “short open tag”. Dá pra ver pelo ícone do wamp na bandeja do windows. Vá em PHP, depois em PHP Settings.

    Abraços

  • gimidia

    A opção “short open tag” estava desabilitada no wampserver
    muito obrigado Fábio por ter ajudado a resolver o problema.

  • Gabriel Borges

    É possível instalar sem precisar do composer?

  • Gabriel Borges

    Compartilho do mesmo problema, já resolveu?

  • Clique no ícone do wamp, vá em PHP -> Settings e marque a opção Short Open Tag. Reinicie todos os serviços e tente novamente.

    Valeu.

  • gimidia

    se você usa o wampserver habilita a opção “short open tag” que vai resolver

  • Sim, porém, é mais trabalhoso, pois você vai ter que importar manualmente as bibliotecas necessárias para o funcionamento do open boleto.

    Fabio

  • Gabriel Borges

    Eu não entendo muito sobre o composer, na verdade sou muito leigo, instalei porem não aprendi ainda. Como nesse caso faria para importar as biblitecas?

  • Olá Gabriel

    Basicamente você pode usar um require_once(“endereco_biblioteca”); no controller, mas isto pode gerar vários erros e que a tentativa para resolvê-los seria pior do que aprender o composer. Sugiro fortemente aprender pelo menos o básico. Dê uma pesquisada no youtube por tutorial composer básico. Têm vários em português.

    Abraços

  • Arthur Teodoro

    estou usando o xampp, fiz tudo certinho porém a tela fica em branco oq devo fazer ?