Giter VIP home page Giter VIP logo

boletoman's Introduction

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.

boletoman's People

Contributors

glaucocustodio avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.