+4

Boleto bancário ( Fácil e Simples ) - Parte 3

criado por Maykson A C Silva em 26/03/2005 2:51am
Bem, ai você pensou nossa entendi, agora está fácil, vou pegar os Números do Código de Barras e achar seu correspondente binário e pronto.
Acontece que nosso padrão é 2 por 5 e não 1 por 5, então nos temos que dividir nosso preciso Número em casas de 2 dígitos, entendeu o 2 no nosso padrão, um exemplo:

O Número 125689 -> 12 – 56 - 89 fica assim.

Mas ainda devemos saber que um é a cor preta o outro a branca, então teríamos para o número 12:

1 = 10001 - preto
2 = 01001 - branco

Vai pensar que está fácil de novo né? Pois agora vem o I ( Intercalado do nosso Padrão ), mas o que é isto significa afinal? Significa que devemos pegar um dígito preto e um branco intercaladamente até finalizar veja:

12 = 1001000011
pbpbpbpbpb p = preto - b = branco

Já sabemos que 1 é largo e 0 é fino, então temos nosso código de barras.

Mas como fazer isto com o PHP?
Vamos lá então, mas antes, além do nosso número, vamos precisar de duas imagens .gif uma preta e uma branca com 10 px de largura e 80 px de altura.

Mãos a obra:

<?php
// Definimos as dimensões das imagens
$fino = 1;
$largo = 3;
$altura = 40;

// Criamos um array associativo com os binários
$Bar[0] = "00110";
$Bar[1] = "10001";
$Bar[2] = "01001";
$Bar[3] = "11000";
$Bar[4] = "00101";
$Bar[5] = "10100";
$Bar[6] = "01100";
$Bar[7] = "00011" ;
$Bar[8] = "10010";
$Bar[9] = "01010";
?>

Se você chegou aqui fácil já fez 70% do nosso código, agora falta "ecoar" o resultado graficamente.

O Código de Barra deve conter por padrão um inicio(abertura) e um fim(encerramento)

O inicio deve conter:
Preto Fino
Branco Fino
Preto Fino
Branco Fino

Nosso código:

// Inicio padrão do Código de Barras
echo "<img src=preto.gif  width=$fino height=$altura border=0>";
echo "<img src=branco.gif width=$fino height=$altura border=0>";
echo "<img src=preto.gif  width=$fino height=$altura border=0>";
echo "<img src=branco.gif width=$fino height=$altura border=0>";

Comentários:

Mostrando 1 - 10 de 32 comentários
Patricia disse:
Olá. Somos uma pequena empresa de Webdesign e Hospedagem de sites, e estamos à procura de um programador que consiga adaptar e implementar este script para gerar boleto da Caixa em alguns módulos de nosso site e na loja virtual osCommerce de alguns clientes.

Interessados em desenvolver este e outros projetos para nossa empresa, favor entrar em contato.
11/02/2006 9:31am (~18 anos atrás)

Realmente o BB tem esta opção, eu mesmo usava alguns anos atras.

Mas o intuito deste tutorial não é obrigar ninguem a fazer e sim demostrar a facilidade de se criar algo que deseje e ter o conhecimento sobre aquilo.

Pode funcionar 100% para uns e para outros nem tanto, mas é uma questão de ajuste, de vontade de resolver a teoria está ai, para todo mundo usar e melhorar.

Pode ser adaptada para todos os bancos, pois todos fazem uso do Modulo10 e Modulo11, na maioria das vezes o que muda é a composição da Linha Digital, ex: derepente o valor pode estar no campo 2 ou campo 3. Ou o nosso numero.

Mas que for esperto vai pegar um boleto do banco que deseja usar e usando o tutorial gerar um boleto igual, perfeito e se você tiver a documentação do Banco, mamão com açucar.

Abraços,
Maykson

* Outra coisa, muito raramente eu uso um sistema pronto, devo ter usado 2 vezes na minha vida, eu não uso OsCommerce, ele é ótimo. Mas eu gosto de criar a minha loja virtual, com a cara e a necessidade do cliente e não deixar milhares de opção que ele nem vai saber usar e nem muita gente que usa sabe, muitos fazendo uns remendos feios. Mais cada um na sua, sendo assim não adianta perguntar sobre OsCommerce para mim, se for para trabalho de faculdade principalmente. Tendo ajudar a todos que me procuram, mas nem sempre consigo, mas prometo tentar.
19/01/2006 2:50am (~18 anos atrás)

No função do Modulo11, onde era:

$Resultado = floor($Soma/11);
$Resto = $Soma - ($Resultado * 11);
$Dv = 11-$Resto;
if($Dv == '10' || $Dv == '1' || $Dv == '0'){
$Dv = '1';}

return $Dv;

O correto é:

$Resultado = floor($Soma/11);
$Resto = $Soma - ($Resultado * 11);

if($Resto == '10' || $Resto == '1' || $Resto == '0'){
$Dv = '1';
}else{
$Dv = 11-$Resto; }

return $Dv;

Assim trocando o if(), corrigimos o problema do dv retornar 11.
Desculpe por não ter percebido antes.

Abraços.
Maykson
19/01/2006 2:30am (~18 anos atrás)

Bom pessoal eu acabei de criar uma loja virtual que o cliente fechou convenio com o BB então tive que partir pra briga, nunca tinha feito nada relacionado ao BB, Tenhos sites que usam o boleto itau, bradesco sem qualquer problema.

Seguindo o tutorial do amigo eu percebi várias discordância na linha digitavel:

1) A loja não imprime o boleto mas envia os dados via form para que o BB imprima e portanto estou com um boleto gerado pelo BB e impresso na minha frente.
Bom vamos as comparações:
1) agencia: 3138
2) conta> 11398
3) valor R$ 32,80
4) Num. Docto. IdCobr + nr. pedido (o banco usa 17 digitos então:
Nosso numero: 12291960000000140
que é o mesmo que aparece em Nº do documento.
5) data de vencimento: 19/01/2006
Carteira: 18
Data emissão/processamento: 16/01/2006

Linha digital:
00190.00009 01229 196009 00000.140186 6 30260000003280

Se vcs observarem, na linha digital não aparece o numero da conta nem a agencia.

Isso seria pelo fato do proprio banco ter gerado o boleto.

?????
16/01/2006 7:38pm (~18 anos atrás)

Sérgio Lima disse:
Olá Galera,
Alguém poderia dar um help em como adaptar o Boleto em um site de oscommerce?
Como o boleto já é uma das opções, acredito que não deve ter grandes dificuldades.

Valeu!
17/11/2005 10:26am (~18 anos atrás)

Luciano Paker disse:
Você não tem uma versão pra download, passa pra mim..

Obrigado!
04/08/2005 2:31pm (~19 anos atrás)

kara eu já tinha procurado prá tudo quando é lado um manual prático que ensinasse a gerar boletas.
Pois ao ler esse seu artigo, foi mão-na-roda.

Vlw kara por compartilhar esse conhecimento com a comunidade do phpbrasil.
02/08/2005 2:24pm (~19 anos atrás)

Marcio Coan disse:
Oi Tadeu,

o arquivo remessa só é utilizado caso o boleto seja impresso pelo banco ou vc tenha uma carteira registrada, caso contrário vc não envia nada ao banco.

O nosso número realmente é bem restrito em alguns bancos no entanto ele pode ser montado como vc quiser, procure montá-lo de maneira q vc possa identificar facilmente ao q o boleto se refere, por exemplo tipo, parcela e matrícula de um aluno.

Abraço
27/07/2005 10:31am (~19 anos atrás)

Quando se gera um boleto vc num tem que enviar um arquivo de remessa para o Banco não?
É que andei lendo e nesse arquivo podemos colocar o numero do titulo na empresa com até 25 dígitos o que diminuiria a limitação de carcteres no nossoNúmero.
27/07/2005 9:12am (~19 anos atrás)

Marcio Coan disse:
Fala povo,

então, da minha experiência com boletos tirei o seguinte:

1. Os Manuais dos bancos tem todas as informações de calculos e dimensões que vc precisa. A diferença de um banco para outro é mínima, pois seguem um padrão da febraban.

2. Meus primeiros boletos fiz o código de barras com imagens como o exemplo do nosso colega, porém a solução ideal q encontrei foi criar os boletos em PDF utilizando a Classe fpdf e a fonte da febraban mesmo(Vale a pena o investimento).

Abraço
26/07/2005 12:57pm (~19 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)