+4

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

criado por Maykson A C Silva em 26/03/2005 2:51am
Bom, iniciamos a ultima parte do nosso tutorial revendo o que temos até aqui.

1ª Descobrimos como é composto a Linha Digitável
2ª Achamos o Dígito Verificador dos Campos
3ª Encontramos o Fator de Vencimento
4ª Geramos o Número do Código de Barras e seu Dígito Controlador

E o que temos é:

Número do Código de Barras:
00191280200000053268888882222266660007777718

Linha Digitável:
00198.88882 82222.266668 00077.777183 1 28020000005326

Todas as informações contidas nas variáveis que usamos e que serão necessárias para gerar o Código de Barras descritas abaixo.

$CodBarras = $CodBanco.$CodMoeda.$DC.$FatorVenc.$ValorDoc.$NossoNum.$Agencia.$NumConta.$Carteira;

Ou

$CodBarras = 00191280200000053268888882222266660007777718


Como de costume, devemos saber algumas coisinhas para continuar.

Antes tenha certeza que na funçao Soma11, que criamos na Parte 2 o array $Mod11 tenha 43 digitos e seja igual a este:

$Mod11 = '4329876543298765432987654329876543298765432';

O Padrão de Código de Barras utilizado pelos Bancos Brasileiros é o I25 ( Intercalado 2 de 5 ) e deve ter um comprimento de 103 mm e altura de 13 mm, além de só permitir números. A explicação do I25, acho um pouco confusão e mas, veja: “Note que o termo "2 of 5" vem do fato de que em cada padrão, duas das barras são largas e, em uma única unidade I25, existem cinco barras escuras, assim como cinco barras claras (ou espaços). Ou seja: duas barras largas de um total de cinco barras por cada padrão.”

Eu no meu modo simplório de viver e entender, prefiro ter uma visão diferente do esquema deste código, mas a função aqui é explicar, então eu mostro o oficial e ensino meu pessoal. Você escolhe qual prefere.

Vamos descobrir o que significa o 5 do Padrão I25.

Cada número de 0 a 9 tem um valor binário de ‘5’ dígitos correspondente e são eles:

0 = 00110
1 = 10001
2 = 01001
3 = 11000
4 = 00101
5 = 10100
6 = 01100
7 = 00011
8 = 10010
9 = 01010

Muito bom né? Pois então devemos saber também que o 0 (Zero) significa fino e 1 (Um) significa largo.

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 (~18 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 (~18 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 (~18 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 (~18 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 (~18 anos atrás)

Novo Comentário:

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