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:

 

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!

Sobre o autor:

Graduado em Análise e Desenvolvimento de Sistemas - FLS; Desenvolvedor Full-stack na UniLeão; Revisor de conteúdo do site Clube dos Geeks, católico, gosto de ler e escrever.

Postagens relacionadas:

9 respostas

  1. jefferson

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

    Desde já obragado

    Responder
      • jefferson

        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?

  2. jefferson

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

    Fatal error: Using $this when not in object context

    Responder

Deixe uma resposta

Seu e-mail não será publicado.