Criando seus próprios Boletos Bancários
Este artigo irá introduzir o desenvolvedor a criar um pequeno código que o ajudará a criar boletos de cobrança. Quase todos os programadores passam pelo menos uma vez em sua carreira com a terrível tarefa de fazer o seu sistema gerar boletos bancários.
A inclusão de um sistema de emissão, envio e impressão de boleto de cobrança em um sistema interno de uma empresa é fundamental e requer um trabalhoso levantamento de dados para para gerar alguns campos (código de barras e a linha digitável por ex.), ainda mais se o sistema tiver que ter a opção de gerar boletos de cobrança para mais de um banco, pois cada banco tem uma forma de trabalhar diferente com esses números.
Introdução
O sistema de boleto bancário é indispensável para qualquer atividade comercial. O pagamento via boleto é muito prático e seguro para o consumidor e pouco oneroso para o empresário, se comparado ao cartão de crédito que tem uma taxa de juros muito maior, pois no boleto bancário é cobrado uma taxa fixa para cada boleto, esta taxa é negociada com o gerente do seu banco, a média desta taxa é mais ou menos de R$ 2,50, enquanto o cartão de crédito é uma porcentagem em cima do valor cobrado.
“Infelizmente os sistemas bancários não possuem padrão único para elaboração de seus boletos de cobrança gerando assim um desperdício enorme na hora do desenvolvimento. Outra coisa é os sistemas de impressão de boleto que cada banco oferece aos seus clientes que em sua maioria são muito pobres em suas funcionalidades para médias e grandes empresas que necessitam de uma larga escala de impressão.” Diz Márcio Morais Presidente da Kobi System.
Passando por este problema, a Kobi System, onde trabalha Fabio Souza decidiu criar um componente próprio para gerar boletos de cobrança para seus clientes. Evitando assim ficar dependendo de empresas terceirizadas que fazem este tipo de trabalho. Encubido de realizar esta tarefa, Fabio Souza defensor do desenvolvimento e da filosofia do Software Livre, decidiu criar este componente em código aberto (OpenSource) e licenciá-lo sob a GNU LGPL. Com isso nenhuma outra empresa passaria por tal problema e poderia a ter os seus boletos personalizados não ficando preso a nenhum tecnologia fechada.
O JBoleto é um excelente componente de fácil instalação e utilização, bastando incluir no CLASSPATH do projeto que em poucos minutos você estará gerando os seus boletos de cobrança.
Além disso o programador poderá contar com o suporte oferecido pelo próprio site do JBoleto (www.jboleto.org) que deixa aberto um Fórum para a colaboração de todos os usuários que utilizam o componente.
Como colaborar com o Jboleto:
- Desenvolvendo um boleto de um determinado banco que ainda não tenha sido incluído no componente;
- Fazendo doações para manter o projeto ativo ou para ajudar no crescimento do projeto. As doações podem ser de diversas maneiras: em dinheiro, com equipamentos e etc;
- Criando documentações e exemplos : Irá funcionar como no tópico acima, o colaborador nos envia um e-mail (documentacao@jboleto.org) e após uma avaliação colocaremos no site.
Baixando os componentes necessários
O artigo doi desenvolvido utilizando as seguintes recursos:
Java SE 6
Componente JBoleto
iText
Obtendo a biblioteca JBoleto
A biblioteca Jboleto é a responsável por realizar todas lógicas para se gerar um boleto de cobrança.
Para obter o pacote da biblioteca JBoleto, você deverá se cadastrar e se logar no site http://www.jboleto.org . Feito isso clicar no link Downloads encontrada na parte superior do site. Dentro desta tela você deve clicar em cima do arquivo jboleto-0.9.6.jar e salva-lo em uma pasta qualquer do seu computador.
Obtendo a biblioteca iText
A biblioteca iText é a responsável por gerar os boletos de cobrança no formato PDF da Adobe.
Para obter o pacote da biblioteca iText basta acessar o site http://www.lowagie.com/iText/download.html e baixar o arquivo itext-2.0.4.jar e salva-lo na mesma pasta onde foi salvo o Jboleto.
Dados Bancários
Caso o programador tenha interesse em gerar um boleto específico para algum banco que não tenha no componente, ele tem seguir apenas os seguintes passos.
Entrar em contato com o gerente de sua conta para pedir a liberação de sua conta para poder receber cobranças a partir de boletos. Esta conta pode ser de pessoa física ou jurídica, qualquer um destes tipos pode ter este recurso.
Logo depois peça a documentação com os procedimentos necessários com as especificações de cada campo do boleto, normalmente o que muda de um banco para outro é código de barras e a linha digitável. Lembrando, cada banco tem a sua própria maneira de gerar determinados campos, principalmente os citados anteriormente.
Todo banco é obrigado a fornecer esta documentação, pois os bancos não possuem recursos suficientes que o ajudem a controlar seu boletos com facilidade.
Listagem 1:
-
package jboleto;
-
-
import java.util.Vector;
-
import org.jboleto.JBoleto;
-
import org.jboleto.JBoletoBean;
-
-
public class GeraBoletoItau {
-
-
-
JBoletoBean jBoletoBean = new JBoletoBean();
-
-
jBoletoBean.setDataDocumento(“09/08/2007″);
-
jBoletoBean.setDataProcessamento(“09/08/2007″);
-
-
jBoletoBean.setCedente(“Kobi Consultoria”);
-
jBoletoBean.setCarteira(“175”);
-
-
jBoletoBean.setNomeSacado(“Fabio Souza”);
-
jBoletoBean.setEnderecoSacado(“Av. das Américas 10101”);
-
jBoletoBean.setBairroSacado(“Barra da Titjuca”);
-
jBoletoBean.setCidadeSacado(“Rio de Janeiro”);
-
jBoletoBean.setUfSacado(“RJ”);
-
jBoletoBean.setCepSacado(“22753-212”);
-
jBoletoBean.setCpfSacado(“09876634567”);
-
-
jBoletoBean.setDataVencimento(“05/10/1980”);
-
jBoletoBean.setInstrucao1(“Após o vencimento cobrar 2% de juros.”);
-
jBoletoBean.setInstrucao2(“Após o vencimento cobrar R$ 0,50 centavos de mora por dia.”);
-
-
jBoletoBean.setAgencia(“2971”);
-
jBoletoBean.setContaCorrente(“08690”);
-
jBoletoBean.setDvContaCorrente(“1”);
-
-
jBoletoBean.setNossoNumero(“123456”,8);
-
jBoletoBean.setValorBoleto(“580.45”);
-
-
descricoes.add(“”);
-
jBoletoBean.setDescricoes(descricoes);
-
-
JBoleto jBoleto = new JBoleto();
-
-
jBoleto.addBoleto(jBoletoBean,JBoleto.ITAU);
-
jBoleto.writeToFile(“itau.pdf”);
-
-
try {
-
Desktop desk = Desktop.getDesktop();
-
desk.open(arq);
-
}
-
e.printStackTrace();
-
}
-
}
-
}
Listagem 2 – Pequeno Servlet para gerar um boleto on-line
-
import java.io.BufferedInputStream;
-
import java.io.IOException;
-
import java.io.OutputStream;
-
import java.net.URL;
-
import java.util.Vector;
-
import javax.servlet.ServletException;
-
import javax.servlet.http.HttpServlet;
-
import javax.servlet.http.HttpServletRequest;
-
import javax.servlet.http.HttpServletResponse;
-
import org.jboleto.JBoletoBean;</code>
-
-
public class JBoleto extends HttpServlet {
-
-
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
-
-
JBoletoBean jBoletoBean = new JBoletoBean();
-
-
jBoletoBean.setDataDocumento(“09/08/2007″);
-
jBoletoBean.setDataProcessamento(“09/08/2007″);
-
-
jBoletoBean.setCedente(“Kobi Consultoria”);
-
jBoletoBean.setCarteira(“175″);
-
-
jBoletoBean.setNomeSacado(“Fabio Souza”);
-
jBoletoBean.setEnderecoSacado(“Av. das Américas 10101″);
-
jBoletoBean.setBairroSacado(“Barra da Titjuca”);
-
jBoletoBean.setCidadeSacado(“Rio de Janeiro”);
-
jBoletoBean.setUfSacado(“RJ”);
-
jBoletoBean.setCepSacado(“22753-212″);
-
jBoletoBean.setCpfSacado(“09876634567″);
-
-
jBoletoBean.setDataVencimento(“05/10/1980″);
-
jBoletoBean.setInstrucao1(“Após o vencimento cobrar 2% de juros.”);
-
jBoletoBean.setInstrucao2(“Após o vencimento cobrar R$ 0,50 centavos de mora por dia.”);
-
-
jBoletoBean.setAgencia(“2971″);
-
jBoletoBean.setContaCorrente(“08690″);
-
jBoletoBean.setDvContaCorrente(“1″);
-
-
jBoletoBean.setNossoNumero(“123456″,8);
-
jBoletoBean.setValorBoleto(“580.45″);
-
-
descricoes.add(“”);
-
jBoletoBean.setDescricoes(descricoes);
-
-
org.jboleto.JBoleto jBoleto = new org.jboleto.JBoleto();
-
-
jBoleto.addBoleto(jBoletoBean,org.jboleto.JBoleto.ITAU);
-
jBoleto.writeToFile(“itau.pdf”);
-
-
-
-
byte[] buffer = new byte[ 4 * 1024 ];
-
int size = 0;
-
-
while( ( size = leitor.read( buffer, 0, buffer.length ) ) != -1 ) {
-
escritor.write( buffer, 0, size );
-
}
-
-
escritor.close();
-
leitor.close();
-
}
-
}
Casos de Uso
Após a introdução do JBoleto no mercado, empresas de médio e grande porte já utilizam o boleto em suas transações via comércio eletrônico. É o caso da Ramada, que é uma distribuidora de materiais de construção, que gera uma média 350 boletos por dia para serem enviados junto as suas notas fiscais. Temos também uma empresa de grande nome que é a Caelum, empresa especializada em treinamento Java que utiliza o Jboleto diariamente, imprimindo uma média de 20 à 60 boletos dia. Existem diversas outras empresas que tem usado o JBoleto como mecanismo de geração de boletos de cobrança, algumas delas podem ser conferidas no site.
Considerações Finais
Após o término deste artigo o programa deve ser capaz de gerar um boleto de cobrança do banco Itaú.
Claro que o nosso pequeno programa, não é para fazer um controle total de boletos, e sim para dar uma idéia do que se pode fazer com o componente.
A minha filosofia e da Kobi System é compartilhar nossas soluções, acreditamos que estamos na era do Software Livre, ou seja, do progresso da tecnologia de desenvolvimento. Já recebemos algumas colaborações no código fonte de programadores de vários locais do Brasil e sem dúvida o componente será de grande utilidade para para todas as empresas.
Referências
http://www.jboleto.org
http://www.kobi.com.br
Audiência de vídeos online cresce 34% em novembro de 2008, diz comScore
São Paulo – Google mantém larga superioridade no setor, atingindo 40% de todos os vídeos vistos nos Estados Unidos durante novembro.
Skype 2.8 beta para Mac
Finalmente o Skype atualiza seu cliente para Mac, mesmo que em beta. A versão 2.8, que deverá ser liberada hoje, vem com algumas novidades muito bem vindas:- Screen sharing: permite compartilhar seu desktop com outros usuários, substituindo a janela de vídeo.- Mood message: permite seguir o que os contatos estão fazendo/pensando, estilo twitter.- Prioridade de chats: para organizar todos os chats abertos por prioridade Dentre as novidades o screen sharing é muito bem vindo. Acabei de conferir, e no site oficial o download ainda não está disponível. O Skype continua sendo um dos meus 5 aplicativos mais usados, e estou bastante satisfeito com o serviço.





