Boleto bancário ( Fácil e Simples ) - Parte 3
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:
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.
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
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
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.
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
(~19 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
$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
(~19 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.
?????
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
(~19 anos atrás)
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!
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
(~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.
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)
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
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.
É 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)
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
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)
Interessados em desenvolver este e outros projetos para nossa empresa, favor entrar em contato.