# Chargebee Ruby Client Library - API V2
[![gem](https://img.shields.io/gem/v/chargebee.svg?maxAge=2592000)](https://rubygems.org/gems/chargebee)
[![gem](https://img.shields.io/gem/dtv/chargebee.svg?maxAge=2592000)](https://rubygems.org/gems/chargebee)
This is the Ruby Library for integrating with Chargebee. Sign up for a Chargebee account {here}[https://www.chargebee.com].
Chargebee now supports two API versions - [V1](https://apidocs.chargebee.com/docs/api/v1) and [V2](https://apidocs.chargebee.com/docs/api), of which V2 is the latest release and all future developments will happen in V2. This library is for API version V2. If you’re looking for V1, head to [chargebee-v1 branch](https://github.com/chargebee/chargebee-ruby/tree/chargebee-v1).
## Installation
Install the latest version of the gem with the following command...
$ sudo gem install chargebee -v '~>2'
## Requirements
* Ruby 1.9.3 or above.
* rest-client
## Documentation
See our [Ruby API Reference](https://apidocs.chargebee.com/docs/api?lang=ruby "API Reference").
## Usage
### To create a new subscription:
```ruby
ChargeBee.configure({:api_key => "your_api_key" , :site => "your_site"})
result = ChargeBee::Subscription.create({
:id => "sub_KyVqDh__dev__NTn4VZZ1",
:plan_id => "basic",
})
subscription = result.subscription
puts "created subscription is #{subscription}"
```
### Create an Idempotent Request
[Idempotency keys](https://apidocs.chargebee.com/docs/api) are passed along with request headers to allow a safe retry of POST requests.
```ruby
require 'chargebee'
ChargeBee.configure({:api_key => "your_api_key" , :site => "your_site"})
result = ChargeBee::Customer.create({
:first_name => "John",
:last_name => "Doe",
:email => "john@test.com",
:locale => "fr-CA",
:billing_address => {
:first_name => "John",
:last_name => "Doe",
:line1 => "PO Box 9999",
:city => "Walnut",
:state => "California",
:zip => "91789",
:country => "US"
}
},
nil,
{"chargebee-idempotency-key" => "<>"} # Replace <> with a unique string
)
customer = result.customer
card = result.card
responseHeader = result.get_response_headers # Retrieves response headers
puts(responseHeader)
idempotencyReplayedValue = result.is_idempotency_replayed # Retrieves Idempotency replayed header value
puts(idempotencyReplayedValue)
```
`is_idempotency_replayed` method can be accessed to differentiate between original and replayed requests.
## License
See the LICENSE file.