npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

boleto-banco-brasil

v0.0.7

Published

SDK para boletos do Banco do Brasil

Downloads

81

Readme

Funcionalidades disponíveis

  1. Buscar o último boleto gerado.
  2. Criar novo boleto a partir do último gerado.
  3. Gerar PDF do modelo do boleto de acordo com o padrão do Banco do Brasil.

Funcionalidades pendentes

  1. Adicionar pagamento por PIX.

Configuração

  1. Baixe o pacote com npm i boleto-banco-brasil.
  2. No seu projeto faça o import do pacote usando import { BBClient } from 'boleto-banco-brasil';.

Como usar

Instancie a classe Client:

import { BBClient } from 'boleto-banco-brasil';

const bbClient = new BBClient({
  BB_API_KEY: '0000000000111111111133333333335555555555',
  BB_BASIC_CREDENTIALS: 'Basic key',
  BB_CONVENIO: '1234567',
  BB_WALLET: '00',
  BB_WALLET_VARIATION: '11',
  BB_AGENCIA: '222',
  BB_CONTA: '987654',
  ENVIRONMENT: 'dev'
});

Tenha atenção em colocar corretamente suas credênciais da sua conta do Banco do Brasil.

Observe o parâmetro ENVIRONMENT. Ele serve para você informar se quer usar o sandbox da API do Banco do Brasil ou o ambiente de produção. Use dev para sandbox e prod para produção.

Para fazer uma busca do último boleto gerado use:

bbClient.SearchLastPurchase().then(response => console.log(response)); 

Para criar um boleto a partir do último gerado, use:

bbClient.CreatePurchase({
  customerAddress: 'Mocambinho',
  customerCity: 'Teresina',
  customerCPF: '96050176876',
  customerName: 'Filipe A. Sampaio',
  customerNeighborhood: 'Avenida Santa joana Darq',
  customerStateCode: 'PI',
  customerZipCode: '77458000',
  purchaseValue: '1200'
}).then(response => console.log(response));

E para criar o PDF do boleto use:

bbClient.CreatePurchase({
  customerAddress: 'Mocambinho',
  customerCity: 'Teresina',
  customerCPF: '96050176876',
  customerName: 'Filipe A. Sampaio',
  customerNeighborhood: 'Avenida Santa joana Darq',
  customerStateCode: 'PI',
  customerZipCode: '77458000',
  purchaseValue: '1200'
}).then(response => console.log(bbClient.CreatePurchaseTicket({
  numericBarcode: response.purchaseBarCode,
  ticketValue: 1200,
  purchaseId: response.purschaseId,
  dueDate: '19/11/2022',
  customerName: 'Filipe A. Sampaio',
  customerZipcode: '77458000',
  customerAddress: 'Mocambinho',
  customerCity: 'Teresina',
  customerStateCode: 'PI',
})));

Observe que foi usado o método de criar o boleto mesclado com o método de gerar o PDF do boleto. Separamos as duas funções pois em alguns momentos poderemos gerar uma segunda via de um boleto já gerado. Veja abaixo a chamada ao método que só gera o PDF do modelo:

bbClient.CreatePurchaseTicket({
  numericBarcode: response.purchaseBarCode,
  ticketValue: 1200,
  purchaseId: response.purschaseId,
  dueDate: '19/11/2022',
  customerName: 'Filipe A. Sampaio',
  customerZipcode: '77458000',
  customerAddress: 'Mocambinho',
  customerCity: 'Teresina',
  customerStateCode: 'PI',
});

Esse método por sua vez retorna o caminho onde o arquivo PDF foi salvo. Ele por padrão é salvo sempre em tmp/uploads/boletos/, dentro do seu projeto.

Observações gerais

  1. Os boletos em PDF são salvos na pasta tmp/uploads/boletos/ na raíz do seu projeto.
  2. Tenha em mente em usar configurações de teste da sua conta do Banco do Brasil, para evitar usar os números reais da API.
  3. Durante seus testes em algum momento talvez a criação do boleto falhe devido ao número do boleto gerado já está em uso. Mas não se preocupe, isso é normal pois a API do Banco do Brasil é compartilhada com todos os Devs da API. logo, por exemplo, se você gerou um número de boleto 1 não necessáriamente o seu próximo número será 2. Assim, adicionamos uma flag de controle de ambiente de desenvolvimento chamada environment, onde se você estiver executando em ambiente de desenvolvimento, você deve colocar a flag dev e em ambiente de produção você deve colocar a flag prod. A flag dev criará números de boleto aleatório, já a prod procurará o último boleto da sua conta.
  4. Criamos um controle de último boleto gerado quando você tentar criar um boleto novo. Funciona da seguinte forma: quando você tentar criar um boleto novo, antes o SDK irá procurar o último boleto gerado, pesquisando os últimos 3 dias da API do Banco do Brasil. Se ele não achar boletos nesse intervalo, o SDK fará uma nova pesquisa para os 3 dias anteriores ao intervalo anterior, e fará isso até achar uma lista de boletos.

Fluxograma do SDK

stateDiagram-v2
    [*] --> Start

    Start --> banco_do_brasil

    banco_do_brasil --> SDK
    SDK --> banco_do_brasil

    SDK --> gera_boleto

    gera_boleto --> End

Diagramas do funcionamento

diagram drawio (3)

diagram drawio (2)

Modelo do PDF do boleto gerado

Abaixo mostramos o modelo que o SDK gera do boleto:

image

O que esse SDK propõe?

  • Gerar boletos válidos do Banco do Brasil. Mas como?
    • O SDK irá requisitar sempre a API do Banco do Brasil usando suas credênciais para achar o último boleto gerado válido. Ele irá procurar por um range que você pode configurar, porém o padrão será de até 3 dias. Após essa listagem, será pego o último boleto e seu número será incrementado para o novo boleto válido.
  • Gerar PDF do modelo do boleto usado pelo Banco do Brasil.

Testes Unitários

Ainda não há testes unitários na versão refatorada. Pretendemos adicionar.

Melhorias pendentes

  • [ ] [BUG] caso a conta seja nova e nunca foi gerado um boleto, a criação do boleto falhará, pois ele tentará achar o último boleto gerado infinitamente
  • [ ] Adicionar método de pagamento por PIX.