guilhermearaujo / boleto.js

https://guilhermearaujo.dev/boleto.js/
MIT License
161 stars 39 forks source link

Formato do código de barras Santander #12

Closed mauriciogofas closed 6 years ago

mauriciogofas commented 6 years ago

Olá @guilhermearaujo, seu script, está impressionante.

Tenho uma dúvida mas não é exatamente um issue:

O Santander retorna duas sequências numéricas ao consumir o webservice de registro de títulos, uma num parâmetro chamado cdBarra e outra num parâmetro chamado linDig (código de barras e linha digitável).

Exemplo de linDig : 03399897259400000000300086601010674080000028998 Exemplo de cdBarra : 03396740800000289989897294000000000008660101

O parâmetro linDig é renderizado e exibe o código de barras perfeitamente, inclusive os leitores ópticos de aplicativos dos bancos reconhecem todas as informações normalmente. Mas segundo o banco, o parâmetro correto para renderizar a imagem do código de barras é o cdBarra, porém, ao usar essa sequência numérica o boleto.js retorna o erro Invalid bank slip number.

Minha dúvida é: qual das duas sequências numéricas eu realmente devo usar para imprimir o código de barras dos boletos?

Gratidão por compartilhar o código e tudo mais, []!

guilhermearaujo commented 6 years ago

@mauriciogofas a numeração da linha digitável é uma permutação de trechos do código de barras, acrescido de alguns dígitos verificadores (para evitar erros humanos na hora de inserir os dados).

O valor que o construtor Boleto espera é a linha digitável. A biblioteca converte esse número no valor que é usado para gerar o código de barras, e depois gera o SVG.

Ex:

var boleto = new Boleto('03399897259400000000300086601010674080000028998')
boleto.number()  // 03399897259400000000300086601010674080000028998 == linDig
boleto.barcode() // 03396740800000289989897294000000000008660101 == cdBara
mauriciogofas commented 6 years ago

Perfeito, obrigado!