Boleto bancário ( Fácil e Simples ) - Parte 1
Agora devemos calcular o Digito Verificador do Campo1.
O Método utilizado para calcular os Dígitos Verificadores do Campo1, Campo2 e Campo3 é a do Modulo 10.
Não é nada ultra mirabolante, nem super hiper difícil.
O que teremos que fazer primeiro é pegar o valor de $Partes e dividi-lo um a um, depois multiplicá-lo de forma intercalada pelo número 2 e pelo número 1 iniciando do fim para o começo. Veja:
Bem nos teremos então os resultados, os números que forem maior que 9, subtraímos 9 de seus valores e teremos um novo valor.
Somando 0+0+2+9+7+8+7+8+7 = 48
Vamos ver como ficaria nosso script:
$Partes é o nosso número – 001988888
Usando [ ] podemos pegar ele em pedaços(dígitos)
O Método utilizado para calcular os Dígitos Verificadores do Campo1, Campo2 e Campo3 é a do Modulo 10.
Não é nada ultra mirabolante, nem super hiper difícil.
O que teremos que fazer primeiro é pegar o valor de $Partes e dividi-lo um a um, depois multiplicá-lo de forma intercalada pelo número 2 e pelo número 1 iniciando do fim para o começo. Veja:
001988888 0 x 2 = 0 0 x 1 = 0 1 x 2 = 2 9 x 1 = 9 8 x 2 = 16 8 x 1 = 8 8 x 2 = 16 8 x 1 = 8 8 x 2 = 16 | Sentido dos números 2 e 1, do final para o começo.
Bem nos teremos então os resultados, os números que forem maior que 9, subtraímos 9 de seus valores e teremos um novo valor.
0 x 2 = 0 0 x 1 = 0 1 x 2 = 2 9 x 1 = 9 8 x 2 = 16-9 = 7 8 x 1 = 8 8 x 2 = 16-9 = 7 8 x 1 = 8 8 x 2 = 16-9 = 7
Somando 0+0+2+9+7+8+7+8+7 = 48
Vamos ver como ficaria nosso script:
$Partes é o nosso número – 001988888
Usando [ ] podemos pegar ele em pedaços(dígitos)
$P1 = $Partes[0]* 2; if($P1 > 9){$P1 = $P1-9;} // 0 * 2 $P2 = $Partes[1]* 1; if($P2 > 9){$P2 = $P2-9;} // 0 * 1 $P3 = $Partes[2]* 2; if($P3 > 9){$P3 = $P3-9;} // 1 * 2 $P4 = $Partes[3]* 1; if($P4 > 9){$P4 = $P4-9;} // 9 * 1 $P5 = $Partes[4]* 2; if($P5 > 9){$P5 = $P5-9;} // 8 * 2 $P6 = $Partes[5]* 1; if($P6 > 9){$P6 = $P6-9;} // 8 * 1 $P7 = $Partes[6]* 2; if($P7 > 9){$P7 = $P7-9;} // 8 * 2 $P8 = $Partes[7]* 1; if($P8 > 9){$P8 = $P8-9;} // 8 * 1 $P9 = $Partes[8]* 2; if($P9 > 9){$P9 = $P9-9;} // 8 * 2 $Soma = $P1+$P2+$P3+$P4+$P5+$P6+$P7+$P8+$P9;
Para os que estão com problema no DV de cada campo.
Esta parte está incorreta.
if($X > 9){ $X = $X-9; } <-- esta parte aqui está incorreta
Não se deve diminuir 9 caso o numero for maior que 9, e sim, somar os digitos.
por exemplo, se for 14, soma-se 1+4 =5
Espero ter ajudado.
Um abraço.
Esta parte está incorreta.
if($X > 9){ $X = $X-9; } <-- esta parte aqui está incorreta
Não se deve diminuir 9 caso o numero for maior que 9, e sim, somar os digitos.
por exemplo, se for 14, soma-se 1+4 =5
Espero ter ajudado.
Um abraço.
16/10/2006 10:36am
(~18 anos atrás)
Consegui adaptar para a CEF mudando apenas a geração do campo <nosso número> no resto ficou ótimo.
27/05/2006 6:45pm
(~18 anos atrás)
Olá pessoal preciso urgente, alguém já conseguiu fazer funcionar ...
Grato ...
Grato ...
18/05/2006 6:00am
(~18 anos atrás)
Olá Maykson e o resto do pessoal,
Estou a procura do script para convênios de 7 dígitos. Procurei em diversos lugares, em vão. Se alguém tiver, gostaria que por favor me fornecesse.
Agradeço
Estou a procura do script para convênios de 7 dígitos. Procurei em diversos lugares, em vão. Se alguém tiver, gostaria que por favor me fornecesse.
Agradeço
02/05/2006 5:03am
(~18 anos atrás)
Gostaria de usar o phpBoleto, mas não consigo fazer funcionar com a Caixa Economica, a linha digitável e o código de barras são recusados, alguém poderia me enviar já o script pronto para a CEF.
pacheco@apeknet.com.br
(e-mail com espaço ilimitado para receber arquivos e é também o MSN)
pacheco@apeknet.com.br
(e-mail com espaço ilimitado para receber arquivos e é também o MSN)
18/04/2006 7:41pm
(~18 anos atrás)
Alguem tem esse script:
Convenio de 7 Digitos com Nosso Numero 10 DIGITOS
que nem o:
http://www.geraboleto.com/geraboleto/demo/bb-teste.php
Sera que alguem pode me ajudar com pelo menos o manual de como o boleto com 7 digitos deve ser?
São so algumas mudanças no script!!!
Abraços
Cesar
msn: cdw@brturbo.com
Convenio de 7 Digitos com Nosso Numero 10 DIGITOS
que nem o:
http://www.geraboleto.com/geraboleto/demo/bb-teste.php
Sera que alguem pode me ajudar com pelo menos o manual de como o boleto com 7 digitos deve ser?
São so algumas mudanças no script!!!
Abraços
Cesar
msn: cdw@brturbo.com
20/03/2006 11:07am
(~18 anos atrás)
ainda nao consegui o principal!... fazer funcionar! ele gera tudo ok! mas quando vou fazer o pagamento do boleto, ele diz no sistema que o codigo do numero não é valido!
comparei o boleto deste sistema com o do proprio sistema do banco do brasil e verifiquei q ele ta gerando no campo 2 (4 e 7 digitos) quanto no boleto so tem q ter 4 e 6 no campo 2! alguem pode me ajudar?
contato@paulochinelate.com.br
comparei o boleto deste sistema com o do proprio sistema do banco do brasil e verifiquei q ele ta gerando no campo 2 (4 e 7 digitos) quanto no boleto so tem q ter 4 e 6 no campo 2! alguem pode me ajudar?
contato@paulochinelate.com.br
10/02/2006 10:04am
(~19 anos atrás)
Olá pessoal.
Achei excelente este artigo e com certeza me será muito útil.
Gostaria de dar uma pequena colaboração mostrando a função que fiz para obter o fator de vencimento usando os cálculos já presentes no script:
function FatorVenc($DataVenc)
{
$DataVenc = explode('/',$DataVenc);
$DiaVenc = $DataVenc[0];
$MesVenc = $DataVenc[1];
$AnoVenc = $DataVenc[2];
$DataInic = explode('/','07/10/1997');
$DiaInic = $DataInic[0];
$MesInic = $DataInic[1];
$AnoInic = $DataInic[2];
$DataInic = mktime(0,0,0,$MesInic,$DiaInic,$AnoInic);
$DataVenc = mktime(0,0,0,$MesVenc,$DiaVenc,$AnoVenc);
$FatorVenc = $DataVenc - $DataInic; //Fator de vencto. em seg.
$FatorVenc = ceil($FatorVenc/86400); //Fator de vencto. em dias
return $FatorVenc;
}
Para chamar a função:
$FatorVenc = FatorVenc($DataVenc);
Abraços.
Achei excelente este artigo e com certeza me será muito útil.
Gostaria de dar uma pequena colaboração mostrando a função que fiz para obter o fator de vencimento usando os cálculos já presentes no script:
function FatorVenc($DataVenc)
{
$DataVenc = explode('/',$DataVenc);
$DiaVenc = $DataVenc[0];
$MesVenc = $DataVenc[1];
$AnoVenc = $DataVenc[2];
$DataInic = explode('/','07/10/1997');
$DiaInic = $DataInic[0];
$MesInic = $DataInic[1];
$AnoInic = $DataInic[2];
$DataInic = mktime(0,0,0,$MesInic,$DiaInic,$AnoInic);
$DataVenc = mktime(0,0,0,$MesVenc,$DiaVenc,$AnoVenc);
$FatorVenc = $DataVenc - $DataInic; //Fator de vencto. em seg.
$FatorVenc = ceil($FatorVenc/86400); //Fator de vencto. em dias
return $FatorVenc;
}
Para chamar a função:
$FatorVenc = FatorVenc($DataVenc);
Abraços.
31/10/2005 7:38am
(~19 anos atrás)
Ela pega o $Partes do começo pro fim...
tva com o emsmo problema da raquel borto...
tva com o emsmo problema da raquel borto...
21/07/2005 4:21pm
(~19 anos atrás)
'=================================
Function CalculaDigitoVerifCodBarras(ByVal linhaCalculavel As String)
Dim multiplicador As New Multiplicador ' decartavel
Dim I As Integer = 1
Dim total As Integer = 0
Dim atual As Integer
While I <= 43
atual = CInt(linhaCalculavel.Substring(I - 1, 1))
atual = atual * multiplicador()
total = total + atual
I = I + 1
End While
Dim sobra, digito As Integer
sobra = Math.Ceiling(total Mod 11)
digito = 11 - sobra
Select Case digito
Case Is = 0
digito = 1
Case Is = 10
digito = 1
Case Is = 11
digito = 1
End Select
Return digito
End Function
'====================================
Function multiplicador() As Integer
If multi = 2 Then
multi = 9
Return 9
Else
multi = multi - 1
Return multi
End If
End Function
'====================================
Depois eu tento traduzir para PHP. Abraço