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
 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