0.0
No commit activity in last 3 years
No release in over 3 years
A Ruby client for the Charging REST API
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
 Dependencies

Development

> 1.3.2
~> 0.6
~> 0.9
~> 0.2
~> 10.0
~> 4.0
~> 2.13
~> 0.7
~> 2.4
~> 1.9.3

Runtime

~> 1.11
~> 1.6.7
 Project Readme

charging-client-ruby¶ ↑

A Ruby client for the Charging REST API

<img src=“https://badge.fury.io/rb/charging-client.png” alt=“Gem Version” /> <img src=“https://travis-ci.org/myfreecomm/charging-client-ruby.png?branch=master” alt=“Build Status” /> <img src=“https://coveralls.io/repos/myfreecomm/charging-client-ruby/badge.png?branch=master” alt=“Coverage Status” /> <img src=“https://codeclimate.com/github/myfreecomm/charging-client-ruby.png” alt=“Code Climate Status” />

Charging API docs: ???

charging-client-ruby RDoc documentation: rubydoc.info/github/myfreecomm/charging-client-ruby/frames/

The RDoc is the best place to learn how to use this client. A few example uses are listed below. See the mapping of API endpoints to this client code below as well to find what you need.

Installation¶ ↑

Add this line to your application’s Gemfile:

gem 'charging-client', :require => 'charging'

And then execute:

$ bundle

Or install it yourself as:

$ gem install charging-client

Usage¶ ↑

Mapping of API endpoints to this client¶ ↑

TODO

Configuration¶ ↑

require "charging"

Charging.configure do |c|
  # You application token at Charging Service
  # Required
  c.application_token = 'YourApptoken=='

  # URL for request data.
  # Default: 'https://charging.finnanceconnect.com.br'
  c.url = 'http://sandbox.charging.financeconnect.com.br'

  # User agent to identify the http request on Charing.
  # Default: 'Charging Ruby Client v0.0.1'
  c.user_agent = 'My App v1.0'
end

Examples¶ ↑

Getting info about your service account¶ ↑

account = Charging::ServiceAccount.current

account.name # => 'Your App Name on Charging'

account.last_response  # a success RestClient::Response instance
account.last_response.code # => 200

begin
  account = Charging::ServiceAccount.current
rescue Charging::Http::LastResponseError => exception
  exception.last_response # an unauthorized RestClient::Response instance
  exception.last_response.code # 401
end

List domains for an account¶ ↑

domains = Charging::Domain.find_all(account)

Create a new domain¶ ↑

attributes = {
  :supplier_name      => 'Myfreecomm',
  :address            => 'Rua do Carmo, 43',
  :city_state         => 'Rio de Janeiro/RJ',
  :zipcode            => '20011-020',
  national_identifier => '37.818.380/0001-86',
  description         => 'A Myfreecomm é uma empresa moderna...'
}

new_domain = Charging::Domain.new(attributes, account)

new_domain.persisted? # => false
new_domain.create!
new_domain.persisted? # => true

Find a domain by uuid¶ ↑

domain = Charging::Domain.find_by_uuid(account, 'supposed-uuid-for-domain')
domain.persisted? # => true

Update an attribute of a domain (Not working yet)¶ ↑

Pending

Update all attributes for a domain (Not working yet)¶ ↑

Pending

Delete a domain¶ ↑

domain.destroy!
domain.deleted? # => true
domain.persisted? # => false

Find a domain by token¶ ↑

domain = Charging::Domain.find_by_token('domain-token')

Create a charge account for a domain¶ ↑

attributes = {
  :bank => '237',
  :name => 'Conta de Cobrança no Bradesco',
  :agreement_code => '1234',
  :portifolio_code => '25'
  :agency => {:number => '1234'},
  :account => {:number => '12345', :digit => '6'}
}
new_charge_account = Charging::ChargeAccount.new(attributes, domain)
new_charge_account.persisted? # => false
new_charge_account.create!
new_charge_account.persisted? # => true

List charge accounts for current domain¶ ↑

charge_accountes = ChargeAccount::ChargeAccount.find_all(domain)

Find a charge account by uuid¶ ↑

charge_account = ChargeAccount::ChargeAccount.find_by_uuid(domain, 'supposed-uuid-for-charge-account')
charge_account.persisted? # => true

List available banks for a charge account (Not working yet)¶ ↑

Pending

List currencies for a charge account (Not working yet)¶ ↑

Pending

Update an attribute of a charge account¶ ↑

charge_account.update_attribute! :address, 'Novo Endereço'

Update attributes of a charge account¶ ↑

charge_account.update_attributes! address: 'Novo Endereço', city_state: 'Cidade/UF'

Note: This will execute charge_account#update_attribute! for each attribute. If something wrong, updated attributes will not get back old values.

Delete a charge account¶ ↑

charge_account.destroy!

Get invoice kinds¶ ↑

Invoice.kinds(domain) # => [{"acronym"=>"DM", "itau_code"=>1, "code"=>2, "name"=>"Duplicata Mercantil"}, ...]
Invoice.kinds(domain)

Create an invoice¶ ↑

attributes = {
  :kind => 1,
  :amount => 123.45,
  :document_number => '123456789012345',
  :due_date => '2015-12-31'
  :drawee => {
    :name => 'Fulano de Tal',
    :address => 'Rua do Carmo, 43',
    :city_state => 'Rio de Janeiro/RJ',
    :zipcode => '20011-020',
    :national_identifier => '43.055.679/0001-29'
  }
}

new_invoice = Charging::Invoice.new(attributes, domain, charge_account)
new_invoice.persisted? # => false
new_invoice.create!
new_invoice.persisted? # => true

Find an invoice by uuid¶ ↑

invoice = Charging::Invoice.find_by_uuid(domain, 'supposed-uuid-for-invoice')
invoice.persisted? # => true

Get URL to print invoice¶ ↑

invoice.billet_url # => 'https://charging.financeconnect.com.br/billets/6a60.../ff01.../'

Delete an invoice¶ ↑

invoice.destroy!
invoice.deleted? # => true
invoice.persisted? # => false

Register a payment for an invoice¶ ↑

invoice.pay!
invoice.paid # => invoice.amount
invoice.pay!({
  :amount => invoice.amount, # default
  :date => Time.now.strftime('%Y-%m-%d'), #default
  :note => 'some important note about this payment'
})

List payments for an invoice¶ ↑

invoice.payments

Batches (Not working yet)¶ ↑

Pending

Contributing¶ ↑

  1. Fork it

  2. Create your feature branch (‘git checkout -b my-new-feature`)

  3. Commit your changes (‘git commit -am ’Add some feature’‘)

  4. Push to the branch (‘git push origin my-new-feature`)

  5. Create new Pull Request