/boletoman

Gerador de boletos registrados.

Primary LanguageRubyMIT LicenseMIT

Boletoman

Build Status Coverage Status Maintainability

Gema responsável por gerar boletos para bancos brasileiros que requerem chamada a serviços web para obter o código de barras previamente. Bancos suportados no momento:

  • Itaú (via API de Registro de Cobrança)
  • Santander (via SOAP Cobrança Online)

Usa a gema Bbrcobranca para gerar os arquivos pdf.

Instalação

Adicione a linha no seu Gemfile

gem 'boletoman'

Execute:

$ bundle

Ou instale você mesmo:

$ gem install boletoman

Uso

Itaú

Chamadas implementadas:

  • geração de token autorizador
  • geração de boleto

Configure o acesso, se estiver no Rails, pode ser colocado em config/initializers/boletoman.rb:

Boletoman.configure do |config|
  config.env = :production # qualquer outro symbol será considerado ambiente de desenvolvimento
  config.redis = $redis # opcional: instancia do redis para cachear o token
  config.verbose = true # default é false

  config.itau = Boletoman::Itau.configure do |itau_config|
    itau_config.client_id = 'kl3j2423'
    itau_config.client_secret = 'w2H-DWAd2lkjdwa2323ADwad3232dwa1209709lj1l098jUUy2fb9XlsrQ2'
    itau_config.key = '4t5g129w-61wt-78e0-io70-lo10178h6711'
    itau_config.identificator = '87987098709871'
  end
end

Passe os dados e faça a chamada:

builder = Boletoman::Builders::Itau.new({
  # dados do cedente
  transferor: {
    name: 'EMPRESA CEDENTE LTDA',
    document: '86.521.120/0001-50', # cnpj
    branch: '0036', # agencia
    checking_account: '119097', # conta
    wallet: '109', # carteira
  },
  # dados do pagador
  payer: {
    document: '714.295.500-74', # cpf
    name: 'JOSE SILVA',
    street: 'Rua Edson Pereira Dias, 123',
    city: 'Sumaré',
    state: 'SP',
    zip_code: '17535-004',
  },
  # dados do boleto
  boleto: {
    due_date: Date.new(2018, 12, 20),
    nosso_numero: '10030033',
    value: 520.80,
    acceptance: 'S' # aceite
  }
})

boleto = builder.build

IO.binwrite('boleto-itau.pdf', boleto.pdf) # salva binário no arquivo

# outros métodos disponíveis: boleto.line, boleto.barcode, boleto.nosso_numero

O builder irá registrar o boleto no banco e gerar um pdf.

Santander

Chamadas implementadas:

  • consulta título
  • registra título
  • solicitação de ticket de segurança

Configure o acesso, se estiver no Rails, pode ser colocado em config/initializers/boletoman.rb:

Boletoman.configure do |config|
  config.env = :production # qualquer outro symbol será considerado ambiente de desenvolvimento

  config.santander = Boletoman::Santander.configure do |santander|
    santander.station = '1A2B'
    santander.covenant = '1234567'
    # path do certificado
    santander.certificate = 'lib/certificado.cer'
    santander.certificate_key = 'lib/certificado.pem'
    # em caso de querer passar certificado via proxy do nginx por ex, defina:
    santander.use_certificate = false
    santander.ticket_wsdl_url = 'https://meuproxy.com/dl-ticket-services/TicketEndpointService/TicketEndpointService.wsdl'
  end
end

Passe os dados e faça a chamada:

builder = Boletoman::Builders::Santander.new({
  # dados do cedente
  transferor: {
    name: 'EMPRESA CEDENTE LTDA',
    document: '86.521.120/0001-50', # cnpj
    branch: '0036', # agencia
    checking_account: '119097', # conta
    wallet: '109', # carteira
  },
  # dados do pagador
  payer: {
    document: '714.295.500-74', # cpf
    name: 'JOSE SILVA',
    street: 'Rua Edson Pereira Dias, 123',
    city: 'Sumaré',
    state: 'SP',
    zip_code: '17535-004',
  },
  # dados do boleto
  boleto: {
    due_date: Date.new(2018, 12, 20),
    nosso_numero: '10030033',
    value: 520.80,
    acceptance: 'S' # aceite
  }
})

boleto = builder.build

IO.binwrite('boleto-santander.pdf', boleto.pdf) # salva binário no arquivo

O builder irá registrar o boleto no banco e gerar um pdf.

Consultar boleto

Boletoman::Services::Santander::Query::Facade.new(nsu).call # NSU do banco

# => { barcode: '03923500000671005391763800000098669934890101', line: '0317176380000009866399934952350000067610058901' }

Registrar boleto

Se quiser apenas registrar um boleto sem gerar pdf:

# mesmo conjunto de dados passado para o builder acima
Boletoman::Services::Santander::Boleto::Facade.new(data).call

# => { barcode: '03923500000671005391763800000098669934890101', line: '0317176380000009866399934952350000067610058901', nosso_numero: '12345678', nsu: '456789', ticket: '/XPwu7tJ6CgbTWIGNtW7gO7GH/orhi0IjLOzzs70r+RVJlOUYQJyzXpR3k30RPxv5SlJU9/mN/P+Aw0vzA/JGmLqAF...' }

Desenvolvimento

Testes

rake spec

Console

bundle console

Release

Atualize o número da versão em version.rb e rode:

bundle exec rake release

TODO

  • remover alguns valores hard coded no gerador Itaú como juros, multa, grupo_desconto, indicador_pagamento_parcial e recebimento_divergente (eu ainda não precisei de outros)

License

The gem is available as open source under the terms of the MIT License.