[off-topic] decodificar chave de código de barras de boletos.

3,281 views
Skip to first unread message

Kaius Cesar

unread,
Apr 2, 2014, 1:18:39 PM4/2/14
to python...@googlegroups.com
Fala ae pessoal,
alguém tem um script ou sabe onde posso encontrar um script, que decodifique uma chave de código de barras, ou seja, através da minha aplicação se adiciona a chave (00000000 000000000 00000000 00000000) na mão, e preciso encontrar "data de vencimento, valor etc", através desta chave. Pode ser em qualquer linguagem, desde que eu possa abstrair a lógica, já que existem diferenças entre boletos de conta de luz, agua, telefone e bancários.

Alysson Bruno

unread,
Apr 2, 2014, 1:36:53 PM4/2/14
to python-brasil
Existem dois tipos o boleto bancário ([1]) e as contas[2]. Na internet não deve ser complicado achar implementação de calculo desses troços.


paz e amor (love and peace),

Alysson Bruno
===============================================
Palmas(TO)
Brasil

Blog: http://abruno.com


=================================================================
Meu alterego Escritor:

Leia alguns contos que escrevo, não esqueça de me dar sua opinião: http://goo.gl/Wjn4p

=================================================================


2014-04-02 14:18 GMT-03:00 Kaius Cesar <tecnic...@gmail.com>:
Fala ae pessoal,
alguém tem um script ou sabe onde posso encontrar um script, que decodifique uma chave de código de barras, ou seja, através da minha aplicação se adiciona a chave (00000000 000000000 00000000 00000000) na mão, e preciso encontrar "data de vencimento, valor etc", através desta chave. Pode ser em qualquer linguagem, desde que eu possa abstrair a lógica, já que existem diferenças entre boletos de conta de luz, agua, telefone e bancários.

--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com

---
Você recebeu essa mensagem porque está inscrito no grupo quot;Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

Kaio Cesar

unread,
Apr 2, 2014, 1:38:35 PM4/2/14
to python...@googlegroups.com
Com certeza Alysson, valeu pela dica, vou verificar os links.

Kaio Cesar

unread,
Apr 2, 2014, 2:29:01 PM4/2/14
to python...@googlegroups.com
Então, esse primeiro link ajudou a resolver o problema com boletos bancarios (alguns), só que meu problema maior tem sido com boletos de conta de luz e telefone (com 48 caracteres).  Alguém mais tem a solução lógica, para conseguir decodificar os dados apartir da chave ?

Alexandre Souza

unread,
Apr 2, 2014, 2:35:57 PM4/2/14
to python...@googlegroups.com
​Kaio,

Se eu não estou enganado, as regras disponibilizadas pelo FEBRABAN pode te ajudar...


[ ]'s

Alexandre Souza

unread,
Apr 2, 2014, 2:36:32 PM4/2/14
to python...@googlegroups.com

Kaio Cesar

unread,
Apr 2, 2014, 2:38:14 PM4/2/14
to python...@googlegroups.com
Valeu Alexandre, o primeiro link eu já tinha lido, para boletos de luz e telefone ele no bate, mas vou ler esse segundo link.

Linux - Junior Polegato

unread,
Apr 2, 2014, 2:46:20 PM4/2/14
to python...@googlegroups.com
Em 02-04-2014 15:38, Kaio Cesar escreveu:
> Valeu Alexandre, o primeiro link eu já tinha lido, para boletos de luz
> e telefone ele no bate, mas vou ler esse segundo link.

Olá!

O código do boleto de convênio tem 4 blocos, sendo que o último
dígito de cada bloco é verificador do mesmo, ignore-os.

Assim terá um código de 44 dígitos que bate com o descrito no
link já enviado por um colega anteriormente:

http://www.bb.com.br/docs/pub/emp/mpe/dwn/PadraoCodigoBarras.pdf

Veja aqui que o valor é bem localizado, mas as 29 últimas
posições é de uso livre, geralmente as 8 primeiras dessas 25 é o CNPJ,
mas para ter certeza disto e do restante tem que perguntar para o TI de
cada empresa, pois nesse restante deve ter um código do cliente que para
a empresa emissora da cobrança já serve, então não há nada que garanta
que a data de vencimento esteja no boleto, visto que se pagar em atraso
os juros de mora e multa virão na próxima fatura e o banco não tem
controle sobre isso, você teoricamente pode pagar a qualquer momento.


--

[]'s

Junior Polegato

Kaio Cesar

unread,
Apr 2, 2014, 3:09:09 PM4/2/14
to python...@googlegroups.com
Verdade Junior, eu meio que percebi que os dados que mais me importam nesse processo todo, podem não estar presente. Tipo, eu tô com duas chaves aqui de 48 e 47, seguindo oque vc falou, eu corto para 44 e faço a validação, correto  ? obs.: são boletos da VIVO(concessionária de telefone) e CPFL(concessionária de luz)

Linux - Junior Polegato

unread,
Apr 2, 2014, 3:22:21 PM4/2/14
to python...@googlegroups.com
Não exatamente cortar, mas se considerar 4 grupos de 12 dígitos, pega os
11 primeiros dígitos de cada grupo, chegando nos 44.

Sobre a data de vencimento, tem esse trecho no documento:

G) Data de Vencimento
No caso de ser utilizada a data de vencimento (AAAAMMDD), incluir nas 8
primeiras posições do campo livre

http://www.bb.com.br/docs/pub/emp/mpe/dwn/PadraoCodigoBarras.pdf

--

[]'s

Junior Polegato

Marcos Thomaz

unread,
Apr 2, 2014, 9:51:49 PM4/2/14
to python...@googlegroups.com
Esse padrão que você apresentou é usado em convênios (4 campos). O de 5 campos são títulos. No caso dos convênios, a linha digitável é idêntica ao código de barras, o que já não ocorre com os títulos. No site da Febraban tem todas as referências de ambos.


--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar

<*> Para visitar o site do grupo na web, acesse:
   http://groups.google.com/group/python-brasil

<*> Para sair deste grupo, envie um e-mail para:
--- Você está recebendo esta mensagem porque se inscreveu no grupo "Python Brasil" dos Grupos do Google.

Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasil+unsubscribe@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/d/optout.



--


Marcos Thomaz da Silva
Analista de Tecnologia da Informação

Paul Eipper

unread,
Apr 5, 2014, 6:54:11 PM4/5/14
to python...@googlegroups.com
Esses tempos tentei decifrar o da minha operadora de energia (celesc) para ver se tinha meu numero de unidade consumidora no codigo. Não tinha, mas segue dump que fiz na época:

Codigo: 83600000000 7 99040162000 2 00101002013 7 80166472274 2

Sem digitos verificadores:

83600000000 (01..11)
99040162000 (12..22)
00101002013 (23..33)
80166472274 (34..44)

Campos:
Pos . Tam . Valor . Desc
1 . 1 . 8 . produto
2 . 1 . 3 . segmento
3 . 1 . 6 . id valor real ou ref
4 . 1 . 0 . mod 10/11
5..15 . 11 . 00000009904 . valor
16..19 . 4 . 0162 . id empresa
20..44 . 25 . 0000010100201380166472274 . livre (abaixo)

Campo livre:
20..27 . 8 . 0000 0101 . ?
28..44 . 17 . 00201380166472274 . numero fatura

Marcos Thomaz

unread,
Apr 5, 2014, 8:00:11 PM4/5/14
to python...@googlegroups.com
De que mês é essa sua conta? Pergunto isso porque tenho um sistema de gestão comercial para empresas de saneamento, e na composição odo código de barras não tenho o núm. da fatura, mas sim uma combinação do ID da Ligação + Ano + Mes de referencia da conta.


--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
Você recebeu essa mensagem porque está inscrito no grupo quot;Python Brasil" dos Grupos do Google.

Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

Kaio Cesar

unread,
Apr 7, 2014, 5:00:38 PM4/7/14
to python...@googlegroups.com
Pessoal, consegui resolver a problematica dos boletos convencionais (47 a 48 caracteres), com uma solução baseada nesse site aqui http://boletobancario-codigodebarras.blogspot.com.br/ .

Só que agora minha treta tá com boletos gerados por conssecionarias como CPFL(companhia de luz), VIVO (telefone) etc. Algum de vcs tem ideia ou scripts para exemplo ?

Douglas Camata

unread,
Apr 7, 2014, 5:09:54 PM4/7/14
to python...@googlegroups.com
Cuidado que isso ai já deu um bocado de problema para a galera do ReBoleto e para a galera que estava pagando valores não reconhecidos pelas empresas.


2014-04-07 18:00 GMT-03:00 Kaio Cesar <tecnic...@gmail.com>:
Pessoal, consegui resolver a problematica dos boletos convencionais (47 a 48 caracteres), com uma solução baseada nesse site aqui http://boletobancario-codigodebarras.blogspot.com.br/ .

Só que agora minha treta tá com boletos gerados por conssecionarias como CPFL(companhia de luz), VIVO (telefone) etc. Algum de vcs tem ideia ou scripts para exemplo ?

--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com

---
Você recebeu essa mensagem porque está inscrito no grupo quot;Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.



--
Douglas Camata
Graduando em Ciência da Computação (UENF)

Skype: douglas_camata
-----------------------------------
Linux User #509211

Kaio Cesar

unread,
Apr 8, 2014, 8:43:30 AM4/8/14
to python...@googlegroups.com
Douglas, não entendi sua advertência ?

Douglas Camata

unread,
Apr 8, 2014, 8:50:46 AM4/8/14
to python...@googlegroups.com
Material pra você dar uma lida sobre: http://tecnoblog.net/95802/reboleto-fora-do-ar/


2014-04-08 9:43 GMT-03:00 Kaio Cesar <tecnic...@gmail.com>:
Douglas, não entendi sua advertência ?

--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com

---
Você recebeu essa mensagem porque está inscrito no grupo quot;Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

Kaio Cesar

unread,
Apr 8, 2014, 8:58:33 AM4/8/14
to python...@googlegroups.com
Li o post, a ideia com certeza é muito boa e util, só que no caso eu geraria automatico a data de vencimento, sem deixar a possibilidade do usuário edita-la.

No caso, valeu pela preocupação, só que meu app só vai receber a linha digitavel, decodificar dela "valor" e "data de venciamento", e em seguida exibir em labels para o usuário dar baixa desse boleto no app contabil dele. Por enquanto tô correndo desses esquemas de transações financeiras online, ou seja, só to trabalhando com simples consultas de linhas digitavei.

vlw

Paul Eipper

unread,
Apr 10, 2014, 6:09:36 PM4/10/14
to python-brasil
Opa, a conta era do mês 10 de 2013 se não me engano.

Eu sei que é o número da fatura, pois o mesmo número aparece na conta,
descrito como "número da fatura" :p

Acho estranho não ter a data de vencimento ali. Não sei como o banco
busca essa informação por exemplo.

--
Paul Eipper

Luciano Barcaro

unread,
Apr 10, 2014, 6:13:37 PM4/10/14
to python-brasil

Pegando o bonde andando.  O vencimento é formado pelos 4 primeiros dígitos do último bloco. tem-se uma data base (que nao lembro agora) e soma-se os dias representados neste nro.

Você está recebendo esta mensagem porque se inscreveu no grupo "Python Brasil" dos Grupos do Google.

Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/d/optout.

Luciano Barcaro

unread,
Apr 10, 2014, 6:15:19 PM4/10/14
to python-brasil

Ops, esquece. Descrevi do boleto normal, e nao o de serviço. Nao tinha lido a thread inteira.
Foi mal.

Marcos Thomaz

unread,
Apr 10, 2014, 8:22:48 PM4/10/14
to python...@googlegroups.com
O do boleto de convênios (contas de água, luz, telefone) tem no código de barras, mas no formato YYYYMMDD

Kaio Cesar

unread,
Apr 10, 2014, 11:28:33 PM4/10/14
to python...@googlegroups.com
Opcionalmente a de telefone não tem, se tem pode estar códificada. Vc tem ideia sobre isso  ?

Marcos Thomaz

unread,
Apr 11, 2014, 12:43:11 AM4/11/14
to python...@googlegroups.com
Quando não tem, é para contra-apresentação ou seja, realmente não tem data de vencimento podendo ser paga a qualquer tempo. Nesse caso, o cálculo de juros e/ou multa (caso existam) é dado pela data de pagamento.


Em 11 de abril de 2014 00:28, Kaio Cesar <tecnic...@gmail.com> escreveu:
Opcionalmente a de telefone não tem, se tem pode estar códificada. Vc tem ideia sobre isso  ?

--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com

---
Você recebeu essa mensagem porque está inscrito no grupo quot;Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

Linux - Junior Polegato

unread,
Apr 11, 2014, 8:14:35 AM4/11/14
to python...@googlegroups.com
Em 10-04-2014 19:09, Paul Eipper escreveu:
> Opa, a conta era do mês 10 de 2013 se não me engano.
> Eu sei que é o número da fatura, pois o mesmo número aparece na conta,
> descrito como "número da fatura" :p
> Acho estranho não ter a data de vencimento ali. Não sei como o banco
> busca essa informação por exemplo.

Olá!

Esse tipo de cobrança não é administrada pelos bancos, isto é,
você pode pagar a qualquer momento que o banco faz depósito na conta do
conveniado e passa para ele o "código livre" referente à esse pagamento,
igualmente como fatura de cartão de crédito e outras que não tem data de
vencimento.

Dessa forma a cobrança por juros e mora fica a cargo do
conveniado e não do banco.

--

[]'s

Junior Polegato
Reply all
Reply to author
Forward
0 new messages