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.

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

      1. Obrigado amigo.

        Eu peguei essa bucha e nunca nem tinha visto, e pelo que vi o problema é o codigo verificador que está assim:

        $resto2 = modulo_11($numero, 9, 1);
        $digito = 11 – $resto2;
        if ($digito == 0 || $digito == 1 || $digito == 10 || $digito == 11) {
        $dv = 1;
        } else {
        //$dv = 2;
        $dv = $digito;
        }
        return $dv;

        pelo que li, não deve ser dessa forma a algum tempo, é isso mesmo?

        vamos dizer que foi “trocado” por essa function sua?

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

    Fatal error: Using $this when not in object context

  2. 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

Deixe um comentário para Jayr Alencar Cancelar resposta

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


Deprecated: Creation of dynamic property Daisy_Blog_Google_Local::$files is deprecated in /home2/clube692/public_html/wp-content/themes/daisy-blog/inc/blocks/font-family/inc/class-fonts-google-local.php on line 77

Deprecated: Creation of dynamic property Daisy_Blog_Google_Local::$files is deprecated in /home2/clube692/public_html/wp-content/themes/daisy-blog/inc/blocks/font-family/inc/class-fonts-google-local.php on line 77