+4

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

criado por Maykson A C Silva em 26/03/2005 2:51am
O número de digitos do Código de Barras sempre deve ser par ou seja divisível por 2.
Se não for devemos acrescentar um zero no inicio do número
Ai você vai pensar mas temos 44 dígitos ou seja é divisível por 2, você está certo como poderá utilizar este código com outros números não par, vou mostrar como saber e acrescentar o 0, para facilitar sua vida depois.

Vamos ao conteúdo:

// Checando para saber se o conteúdo é impar
if (bcmod(strlen($CodBarras),2) <> 0) {
    $CodBarras = '0'.$CodBarras;
}

A condição if utiliza da função bcmod para dividir por 2, se a divisão não for um número inteiro adiciona o 0 ao $CodBarras.

Vamos fazer agora um looping pelo nosso $CodBarras, separando os número pretos e brancos.

for ($a = 0; $a < strlen($CodBarras); $a++){

    $Preto  = $CodBarras[$a];
    $CodPreto  = $Bar[$Preto];

    $a = $a+1; // Sabemos que o Branco é um depois do Preto...
    $Branco = $CodBarras[$a];
    $CodBranco = $Bar[$Branco];


    // Encontrado o CodPreto e o CodBranco vamos fazer outro looping dentro do nosso
    for ($y = 0; $y < 5; $y++) { // O for vai pegar os binários

        if ($CodPreto[$y] == '0') { // Se o binario for preto e fino ecoa
            echo "<img src=preto.gif  width=$fino height=$altura border=0>";
        }

        if ($CodPreto[$y] == '1') { // Se o binario for preto e grosso ecoa
            echo "<img src=preto.gif  width=$largo height=$altura border=0>";
        }

        if ($CodBranco[$y] == '0') { // Se o binario for branco e fino ecoa
            echo "<img src=branco.gif  width=$fino height=$altura border=0>";
        }

        if($CodBranco[$y] == '1') { // Se o binario for branco e grosso ecoa
            echo "<img src=branco.gif  width=$largo height=$altura border=0>";
        }
    }

} // Fechamos nosso looping maior

// Encerramos o código ecoando o final(encerramento)

// Final padrão do Codigo de Barras
echo "<img src=preto.gif  width=$largo 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>";

Bem assim encerramos o tutorial, para ser sincero o Código de Barras eu não consegui testar, coisa que eu fiz com a linha digitável, de toda forma acredito que o importante é explicar como fazer ou no mínimo passar uma idéia do que é gerar um boleto bancário, para outros bancos bastará você saber como é o esquema da linha digitável

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 (~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.)