Calculando dígito verificador de código de barras de boleto bancário com PHP

Olá a todos.

O código de barras de um boleto bancário é formado por diversas variáveis, como código do banco, tipo de moeda, digito verificador, etc. veja a baixo:

001 9 1 6269 0000040000 0000001243245001124462217

Em azul escuro está o número do banco, no exemplo é o banco do Brasil;

Em vermelho está o tipo da moeda, que no caso é Reais;

Em verde é o Digito Verificador, único valor que termos que calcular;

Em azul claro está o fator de vencimento que é a diferença de dias contata desde 07/10/1997 à data do vencimento do boleto;

Em laranja está o valor do boleto multiplicado por 100;

Em preto é um campo livre, que fica a critério de cada banco. A maioria dos bancos formata o campo assim:

0000001243245001124462217

Em azul continua livre;

Em laranja o Nosso Número;

Em verde o número da carteira da empresa;

Calculando Verificador com PHP

Bom, praticamente todos os valores do código nós podemos encontrar facilmente, exceto o digito verificador, o qual iremos calcular. Seguindo o modelo da FEBRABAN temos que multiplicar cada número da barras por um fator determinado por ela, veja a baixo:

4 3 2 9 0 8 7 6 5 4 3 2 9 8 7 6 5 4 3 2 9 8 7 6 5 4 3 2 9 8 7 6 5 4 3 2 9 8 7 6 5 4 3 2
0 0 1 9 1 6 2 6 9 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 1 2 4 3 2 4 5 0 0 1 1 2 4 4 6 2 2 1 7

Cada digito do código de barras é multiplicado pelo número logo a baixo dele na representação acima, depois os resultados das multiplicações são somados. O resultado da soma é dividido por 11, depois o número 11 é subtraído pelo resto da divisão e então temos o digito verificador. Veja a baixo em PHP:

 

 codVerificador = $resultado;
   $barras = substr_replace($barras, $resultado, 4, 1);
   return $barras;
   }
?>

Pronto galera é isso ai, qualquer dúvida deixe um comentário!

Em breve estarei publicando uma biblioteca PHP para tratamento de código de barras, linha digitável, e outros valores referentes a boletos bancários.

Até mais!

Jayr Alencar

Doutorando em Ciências da Computação no Centro de Informática da Universidade Federal do Pernambuco (CIn - UFPE); Mestre pela mesma instituição; Formado em Análise e Desenvolvimento de Sistemas; Católico; Fã de O Senhor do Anéis.

Você pode gostar...

10 Resultados

  1. Thiago disse:

    Bom dia amigo, possui para c++? Pederia me enviar por e-mail?

  2. jefferson disse:

    Bom dia, estou tendo problemas com o Digito verificador, essa função serve para o itau tambem?

    Desde já obragado

  3. jefferson disse:

    da erro no nessa linha:
    retirei os 2 “-“pois dava erro…
    $this -> codVerificador = $resultado;

    Fatal error: Using $this when not in object context

  4. Pedro disse:

    Bom dia.
    Acho que a sequência de multiplicadores que você está usando está errada. De acordo com um documento da Febraban, os 5 primeiros dígitos da sua sequência de multiplicadores deveria ser 5 4 3 2 9 no lugar de 4 3 2 9 0. Segue documento da Febraban consultado (este cálculo está na página 16): https://cmsportal.febraban.org.br/Arquivos/documentos/PDF/Layout%20-%20C%C3%B3digo%20de%20Barras%20-%20Vers%C3%A3o%205%20-%2001_08_2016.pdf

  1. 31 de março de 2015

    […] a linha digitável, aqui no Clube dos Geeks já falamos sobre ele e ensinamos a calculá-lo. Veja: Calculando dígito verificador de código de barras de boleto bancário com PHP O método setCodVerificador() deve ser usado quando você já tem o código […]

  2. 14 de abril de 2015

    […] a linha digitável, aqui no Clube dos Geeks já falamos sobre ele e ensinamos a calculá-lo. Veja: Calculando dígito verificador de código de barras de boleto bancário com PHP O método setCodVerificador() deve ser usado quando você já tem o código […]

Deixe um comentário para Jayr Alencar » boletosPHP – Biblioteca PHP para tratar informações de boletos bancários Cancelar resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *