chargebee 2.6.4 → 2.6.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +1501 -1488
- data/LICENSE +24 -24
- data/README.rdoc +41 -41
- data/chargebee.gemspec +2 -3
- data/lib/chargebee/environment.rb +28 -28
- data/lib/chargebee/errors.rb +43 -43
- data/lib/chargebee/models/addon.rb +45 -45
- data/lib/chargebee/models/address.rb +18 -18
- data/lib/chargebee/models/card.rb +32 -32
- data/lib/chargebee/models/comment.rb +25 -25
- data/lib/chargebee/models/contact.rb +10 -10
- data/lib/chargebee/models/coupon.rb +40 -40
- data/lib/chargebee/models/coupon_code.rb +25 -25
- data/lib/chargebee/models/coupon_set.rb +37 -37
- data/lib/chargebee/models/credit_note.rb +77 -77
- data/lib/chargebee/models/credit_note_estimate.rb +35 -35
- data/lib/chargebee/models/customer.rb +120 -120
- data/lib/chargebee/models/download.rb +9 -9
- data/lib/chargebee/models/estimate.rb +46 -46
- data/lib/chargebee/models/event.rb +45 -45
- data/lib/chargebee/models/export.rb +86 -86
- data/lib/chargebee/models/gift.rb +42 -42
- data/lib/chargebee/models/hosted_page.rb +77 -77
- data/lib/chargebee/models/invoice.rb +172 -172
- data/lib/chargebee/models/invoice_estimate.rb +35 -35
- data/lib/chargebee/models/model.rb +101 -101
- data/lib/chargebee/models/order.rb +76 -76
- data/lib/chargebee/models/payment_source.rb +75 -71
- data/lib/chargebee/models/plan.rb +60 -59
- data/lib/chargebee/models/portal_session.rb +30 -30
- data/lib/chargebee/models/promotional_credit.rb +30 -30
- data/lib/chargebee/models/quote.rb +72 -72
- data/lib/chargebee/models/resource_migration.rb +13 -13
- data/lib/chargebee/models/site_migration_detail.rb +14 -14
- data/lib/chargebee/models/subscription.rb +137 -137
- data/lib/chargebee/models/subscription_estimate.rb +13 -13
- data/lib/chargebee/models/third_party_payment_method.rb +9 -9
- data/lib/chargebee/models/time_machine.rb +46 -46
- data/lib/chargebee/models/transaction.rb +62 -62
- data/lib/chargebee/models/unbilled_charge.rb +31 -31
- data/lib/chargebee/models/virtual_bank_account.rb +30 -26
- data/lib/chargebee/request.rb +27 -27
- data/lib/chargebee/rest.rb +92 -92
- data/lib/chargebee/result.rb +240 -240
- data/lib/chargebee.rb +85 -85
- data/spec/errors_spec.rb +23 -23
- data/spec/sample_response.rb +73 -73
- metadata +3 -4
- data/lib/chargebee/.DS_Store +0 -0
@@ -1,63 +1,63 @@
|
|
1
|
-
module ChargeBee
|
2
|
-
class Transaction < Model
|
3
|
-
|
4
|
-
class LinkedInvoice < Model
|
5
|
-
attr_accessor :invoice_id, :applied_amount, :applied_at, :invoice_date, :invoice_total, :invoice_status
|
6
|
-
end
|
7
|
-
|
8
|
-
class LinkedCreditNote < Model
|
9
|
-
attr_accessor :cn_id, :applied_amount, :applied_at, :cn_reason_code, :cn_date, :cn_total, :cn_status, :cn_reference_invoice_id
|
10
|
-
end
|
11
|
-
|
12
|
-
class LinkedRefund < Model
|
13
|
-
attr_accessor :txn_id, :txn_status, :txn_date, :txn_amount
|
14
|
-
end
|
15
|
-
|
16
|
-
class LinkedPayment < Model
|
17
|
-
attr_accessor :id, :status, :amount, :date
|
18
|
-
end
|
19
|
-
|
20
|
-
attr_accessor :id, :customer_id, :subscription_id, :gateway_account_id, :payment_source_id,
|
21
|
-
:payment_method, :reference_number, :gateway, :type, :date, :settled_at, :currency_code, :amount,
|
22
|
-
:id_at_gateway, :status, :fraud_flag, :authorization_reason, :error_code, :error_text, :voided_at,
|
23
|
-
:resource_version, :updated_at, :fraud_reason, :amount_unused, :masked_card_number, :reference_transaction_id,
|
24
|
-
:refunded_txn_id, :reference_authorization_id, :amount_capturable, :reversal_transaction_id,
|
25
|
-
:linked_invoices, :linked_credit_notes, :linked_refunds, :linked_payments, :deleted
|
26
|
-
|
27
|
-
# OPERATIONS
|
28
|
-
#-----------
|
29
|
-
|
30
|
-
def self.create_authorization(params, env=nil, headers={})
|
31
|
-
Request.send('post', uri_path("transactions","create_authorization"), params, env, headers)
|
32
|
-
end
|
33
|
-
|
34
|
-
def self.void_transaction(id, env=nil, headers={})
|
35
|
-
Request.send('post', uri_path("transactions",id.to_s,"void"), {}, env, headers)
|
36
|
-
end
|
37
|
-
|
38
|
-
def self.list(params={}, env=nil, headers={})
|
39
|
-
Request.send_list_request('get', uri_path("transactions"), params, env, headers)
|
40
|
-
end
|
41
|
-
|
42
|
-
def self.transactions_for_customer(id, params={}, env=nil, headers={})
|
43
|
-
Request.send('get', uri_path("customers",id.to_s,"transactions"), params, env, headers)
|
44
|
-
end
|
45
|
-
|
46
|
-
def self.transactions_for_subscription(id, params={}, env=nil, headers={})
|
47
|
-
Request.send('get', uri_path("subscriptions",id.to_s,"transactions"), params, env, headers)
|
48
|
-
end
|
49
|
-
|
50
|
-
def self.payments_for_invoice(id, params={}, env=nil, headers={})
|
51
|
-
Request.send('get', uri_path("invoices",id.to_s,"payments"), params, env, headers)
|
52
|
-
end
|
53
|
-
|
54
|
-
def self.retrieve(id, env=nil, headers={})
|
55
|
-
Request.send('get', uri_path("transactions",id.to_s), {}, env, headers)
|
56
|
-
end
|
57
|
-
|
58
|
-
def self.delete_offline_transaction(id, params={}, env=nil, headers={})
|
59
|
-
Request.send('post', uri_path("transactions",id.to_s,"delete_offline_transaction"), params, env, headers)
|
60
|
-
end
|
61
|
-
|
62
|
-
end # ~Transaction
|
1
|
+
module ChargeBee
|
2
|
+
class Transaction < Model
|
3
|
+
|
4
|
+
class LinkedInvoice < Model
|
5
|
+
attr_accessor :invoice_id, :applied_amount, :applied_at, :invoice_date, :invoice_total, :invoice_status
|
6
|
+
end
|
7
|
+
|
8
|
+
class LinkedCreditNote < Model
|
9
|
+
attr_accessor :cn_id, :applied_amount, :applied_at, :cn_reason_code, :cn_date, :cn_total, :cn_status, :cn_reference_invoice_id
|
10
|
+
end
|
11
|
+
|
12
|
+
class LinkedRefund < Model
|
13
|
+
attr_accessor :txn_id, :txn_status, :txn_date, :txn_amount
|
14
|
+
end
|
15
|
+
|
16
|
+
class LinkedPayment < Model
|
17
|
+
attr_accessor :id, :status, :amount, :date
|
18
|
+
end
|
19
|
+
|
20
|
+
attr_accessor :id, :customer_id, :subscription_id, :gateway_account_id, :payment_source_id,
|
21
|
+
:payment_method, :reference_number, :gateway, :type, :date, :settled_at, :currency_code, :amount,
|
22
|
+
:id_at_gateway, :status, :fraud_flag, :authorization_reason, :error_code, :error_text, :voided_at,
|
23
|
+
:resource_version, :updated_at, :fraud_reason, :amount_unused, :masked_card_number, :reference_transaction_id,
|
24
|
+
:refunded_txn_id, :reference_authorization_id, :amount_capturable, :reversal_transaction_id,
|
25
|
+
:linked_invoices, :linked_credit_notes, :linked_refunds, :linked_payments, :deleted
|
26
|
+
|
27
|
+
# OPERATIONS
|
28
|
+
#-----------
|
29
|
+
|
30
|
+
def self.create_authorization(params, env=nil, headers={})
|
31
|
+
Request.send('post', uri_path("transactions","create_authorization"), params, env, headers)
|
32
|
+
end
|
33
|
+
|
34
|
+
def self.void_transaction(id, env=nil, headers={})
|
35
|
+
Request.send('post', uri_path("transactions",id.to_s,"void"), {}, env, headers)
|
36
|
+
end
|
37
|
+
|
38
|
+
def self.list(params={}, env=nil, headers={})
|
39
|
+
Request.send_list_request('get', uri_path("transactions"), params, env, headers)
|
40
|
+
end
|
41
|
+
|
42
|
+
def self.transactions_for_customer(id, params={}, env=nil, headers={})
|
43
|
+
Request.send('get', uri_path("customers",id.to_s,"transactions"), params, env, headers)
|
44
|
+
end
|
45
|
+
|
46
|
+
def self.transactions_for_subscription(id, params={}, env=nil, headers={})
|
47
|
+
Request.send('get', uri_path("subscriptions",id.to_s,"transactions"), params, env, headers)
|
48
|
+
end
|
49
|
+
|
50
|
+
def self.payments_for_invoice(id, params={}, env=nil, headers={})
|
51
|
+
Request.send('get', uri_path("invoices",id.to_s,"payments"), params, env, headers)
|
52
|
+
end
|
53
|
+
|
54
|
+
def self.retrieve(id, env=nil, headers={})
|
55
|
+
Request.send('get', uri_path("transactions",id.to_s), {}, env, headers)
|
56
|
+
end
|
57
|
+
|
58
|
+
def self.delete_offline_transaction(id, params={}, env=nil, headers={})
|
59
|
+
Request.send('post', uri_path("transactions",id.to_s,"delete_offline_transaction"), params, env, headers)
|
60
|
+
end
|
61
|
+
|
62
|
+
end # ~Transaction
|
63
63
|
end # ~ChargeBee
|
@@ -1,32 +1,32 @@
|
|
1
|
-
module ChargeBee
|
2
|
-
class UnbilledCharge < Model
|
3
|
-
|
4
|
-
class Tier < Model
|
5
|
-
attr_accessor :starting_unit, :ending_unit, :quantity_used, :unit_amount
|
6
|
-
end
|
7
|
-
|
8
|
-
attr_accessor :id, :customer_id, :subscription_id, :date_from, :date_to, :unit_amount, :pricing_model,
|
9
|
-
:quantity, :amount, :currency_code, :discount_amount, :description, :entity_type, :entity_id,
|
10
|
-
:is_voided, :voided_at, :tiers, :deleted
|
11
|
-
|
12
|
-
# OPERATIONS
|
13
|
-
#-----------
|
14
|
-
|
15
|
-
def self.invoice_unbilled_charges(params={}, env=nil, headers={})
|
16
|
-
Request.send('post', uri_path("unbilled_charges","invoice_unbilled_charges"), params, env, headers)
|
17
|
-
end
|
18
|
-
|
19
|
-
def self.delete(id, env=nil, headers={})
|
20
|
-
Request.send('post', uri_path("unbilled_charges",id.to_s,"delete"), {}, env, headers)
|
21
|
-
end
|
22
|
-
|
23
|
-
def self.list(params={}, env=nil, headers={})
|
24
|
-
Request.send_list_request('get', uri_path("unbilled_charges"), params, env, headers)
|
25
|
-
end
|
26
|
-
|
27
|
-
def self.invoice_now_estimate(params={}, env=nil, headers={})
|
28
|
-
Request.send('post', uri_path("unbilled_charges","invoice_now_estimate"), params, env, headers)
|
29
|
-
end
|
30
|
-
|
31
|
-
end # ~UnbilledCharge
|
1
|
+
module ChargeBee
|
2
|
+
class UnbilledCharge < Model
|
3
|
+
|
4
|
+
class Tier < Model
|
5
|
+
attr_accessor :starting_unit, :ending_unit, :quantity_used, :unit_amount
|
6
|
+
end
|
7
|
+
|
8
|
+
attr_accessor :id, :customer_id, :subscription_id, :date_from, :date_to, :unit_amount, :pricing_model,
|
9
|
+
:quantity, :amount, :currency_code, :discount_amount, :description, :entity_type, :entity_id,
|
10
|
+
:is_voided, :voided_at, :tiers, :deleted
|
11
|
+
|
12
|
+
# OPERATIONS
|
13
|
+
#-----------
|
14
|
+
|
15
|
+
def self.invoice_unbilled_charges(params={}, env=nil, headers={})
|
16
|
+
Request.send('post', uri_path("unbilled_charges","invoice_unbilled_charges"), params, env, headers)
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.delete(id, env=nil, headers={})
|
20
|
+
Request.send('post', uri_path("unbilled_charges",id.to_s,"delete"), {}, env, headers)
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.list(params={}, env=nil, headers={})
|
24
|
+
Request.send_list_request('get', uri_path("unbilled_charges"), params, env, headers)
|
25
|
+
end
|
26
|
+
|
27
|
+
def self.invoice_now_estimate(params={}, env=nil, headers={})
|
28
|
+
Request.send('post', uri_path("unbilled_charges","invoice_now_estimate"), params, env, headers)
|
29
|
+
end
|
30
|
+
|
31
|
+
end # ~UnbilledCharge
|
32
32
|
end # ~ChargeBee
|
@@ -1,27 +1,31 @@
|
|
1
|
-
module ChargeBee
|
2
|
-
class VirtualBankAccount < Model
|
3
|
-
|
4
|
-
attr_accessor :id, :customer_id, :email, :bank_name, :account_number, :routing_number, :swift_code,
|
5
|
-
:gateway, :gateway_account_id, :resource_version, :updated_at, :created_at, :reference_id, :deleted
|
6
|
-
|
7
|
-
# OPERATIONS
|
8
|
-
#-----------
|
9
|
-
|
10
|
-
def self.create_using_permanent_token(params, env=nil, headers={})
|
11
|
-
Request.send('post', uri_path("virtual_bank_accounts","create_using_permanent_token"), params, env, headers)
|
12
|
-
end
|
13
|
-
|
14
|
-
def self.create(params, env=nil, headers={})
|
15
|
-
Request.send('post', uri_path("virtual_bank_accounts"), params, env, headers)
|
16
|
-
end
|
17
|
-
|
18
|
-
def self.retrieve(id, env=nil, headers={})
|
19
|
-
Request.send('get', uri_path("virtual_bank_accounts",id.to_s), {}, env, headers)
|
20
|
-
end
|
21
|
-
|
22
|
-
def self.list(params={}, env=nil, headers={})
|
23
|
-
Request.send_list_request('get', uri_path("virtual_bank_accounts"), params, env, headers)
|
24
|
-
end
|
25
|
-
|
26
|
-
|
1
|
+
module ChargeBee
|
2
|
+
class VirtualBankAccount < Model
|
3
|
+
|
4
|
+
attr_accessor :id, :customer_id, :email, :bank_name, :account_number, :routing_number, :swift_code,
|
5
|
+
:gateway, :gateway_account_id, :resource_version, :updated_at, :created_at, :reference_id, :deleted
|
6
|
+
|
7
|
+
# OPERATIONS
|
8
|
+
#-----------
|
9
|
+
|
10
|
+
def self.create_using_permanent_token(params, env=nil, headers={})
|
11
|
+
Request.send('post', uri_path("virtual_bank_accounts","create_using_permanent_token"), params, env, headers)
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.create(params, env=nil, headers={})
|
15
|
+
Request.send('post', uri_path("virtual_bank_accounts"), params, env, headers)
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.retrieve(id, env=nil, headers={})
|
19
|
+
Request.send('get', uri_path("virtual_bank_accounts",id.to_s), {}, env, headers)
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.list(params={}, env=nil, headers={})
|
23
|
+
Request.send_list_request('get', uri_path("virtual_bank_accounts"), params, env, headers)
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.delete_local(id, env=nil, headers={})
|
27
|
+
Request.send('post', uri_path("virtual_bank_accounts",id.to_s,"delete_local"), {}, env, headers)
|
28
|
+
end
|
29
|
+
|
30
|
+
end # ~VirtualBankAccount
|
27
31
|
end # ~ChargeBee
|
data/lib/chargebee/request.rb
CHANGED
@@ -1,27 +1,27 @@
|
|
1
|
-
module ChargeBee
|
2
|
-
class Request
|
3
|
-
|
4
|
-
def self.send_list_request(method, url, params={}, env=nil, headers={})
|
5
|
-
serialized = {}
|
6
|
-
params.each do |k, v|
|
7
|
-
if(v.kind_of? Array)
|
8
|
-
v = v.to_json
|
9
|
-
end
|
10
|
-
serialized["#{k}"] = v
|
11
|
-
end
|
12
|
-
self.send(method, url, serialized, env, headers)
|
13
|
-
end
|
14
|
-
|
15
|
-
def self.send(method, url, params={}, env=nil, headers={})
|
16
|
-
env ||= ChargeBee.default_env
|
17
|
-
ser_params = Util.serialize(params)
|
18
|
-
resp = Rest.request(method, url, env, ser_params||={}, headers)
|
19
|
-
if resp.has_key?(:list)
|
20
|
-
ListResult.new(resp[:list], resp[:next_offset])
|
21
|
-
else
|
22
|
-
Result.new(resp)
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
end
|
27
|
-
end
|
1
|
+
module ChargeBee
|
2
|
+
class Request
|
3
|
+
|
4
|
+
def self.send_list_request(method, url, params={}, env=nil, headers={})
|
5
|
+
serialized = {}
|
6
|
+
params.each do |k, v|
|
7
|
+
if(v.kind_of? Array)
|
8
|
+
v = v.to_json
|
9
|
+
end
|
10
|
+
serialized["#{k}"] = v
|
11
|
+
end
|
12
|
+
self.send(method, url, serialized, env, headers)
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.send(method, url, params={}, env=nil, headers={})
|
16
|
+
env ||= ChargeBee.default_env
|
17
|
+
ser_params = Util.serialize(params)
|
18
|
+
resp = Rest.request(method, url, env, ser_params||={}, headers)
|
19
|
+
if resp.has_key?(:list)
|
20
|
+
ListResult.new(resp[:list], resp[:next_offset])
|
21
|
+
else
|
22
|
+
Result.new(resp)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
end
|
data/lib/chargebee/rest.rb
CHANGED
@@ -1,92 +1,92 @@
|
|
1
|
-
require 'rest_client'
|
2
|
-
require 'json'
|
3
|
-
|
4
|
-
module ChargeBee
|
5
|
-
module Rest
|
6
|
-
|
7
|
-
def self.request(method, url, env, params=nil, headers={})
|
8
|
-
raise Error.new('No environment configured.') unless env
|
9
|
-
api_key = env.api_key
|
10
|
-
|
11
|
-
if(ChargeBee.verify_ca_certs?)
|
12
|
-
ssl_opts = {
|
13
|
-
:verify_ssl => OpenSSL::SSL::VERIFY_PEER,
|
14
|
-
:ssl_ca_file => ChargeBee.ca_cert_path
|
15
|
-
}
|
16
|
-
else
|
17
|
-
ssl_opts = {
|
18
|
-
:verify_ssl => false
|
19
|
-
}
|
20
|
-
end
|
21
|
-
case method.to_s.downcase.to_sym
|
22
|
-
when :get, :head, :delete
|
23
|
-
headers = { :params => params }.merge(headers)
|
24
|
-
payload = nil
|
25
|
-
else
|
26
|
-
payload = params
|
27
|
-
end
|
28
|
-
|
29
|
-
user_agent = ChargeBee.user_agent
|
30
|
-
headers = {
|
31
|
-
"User-Agent" => user_agent,
|
32
|
-
:accept => :json,
|
33
|
-
"Lang-Version" => RUBY_VERSION,
|
34
|
-
"OS-Version" => RUBY_PLATFORM
|
35
|
-
}.merge(headers)
|
36
|
-
opts = {
|
37
|
-
:method => method,
|
38
|
-
:url => env.api_url(url),
|
39
|
-
:user => api_key,
|
40
|
-
:headers => headers,
|
41
|
-
:payload => payload,
|
42
|
-
:open_timeout => 50,
|
43
|
-
:timeout => 100
|
44
|
-
}.merge(ssl_opts)
|
45
|
-
|
46
|
-
begin
|
47
|
-
response = RestClient::Request.execute(opts)
|
48
|
-
rescue RestClient::ExceptionWithResponse => e
|
49
|
-
if rcode = e.http_code and rbody = e.http_body
|
50
|
-
raise handle_for_error(e, rcode, rbody)
|
51
|
-
else
|
52
|
-
raise IOError.new("IO Exception when trying to connect to chargebee with url #{opts[:url]} . Reason #{e}",e)
|
53
|
-
end
|
54
|
-
rescue Exception => e
|
55
|
-
raise IOError.new("IO Exception when trying to connect to chargebee with url #{opts[:url]} . Reason #{e}",e)
|
56
|
-
end
|
57
|
-
rbody = response.body
|
58
|
-
rcode = response.code
|
59
|
-
begin
|
60
|
-
resp = JSON.parse(rbody)
|
61
|
-
rescue Exception => e
|
62
|
-
raise Error.new("Response not in JSON format. Probably not a ChargeBee response \n #{rbody.inspect}",e)
|
63
|
-
end
|
64
|
-
resp = Util.symbolize_keys(resp)
|
65
|
-
resp
|
66
|
-
end
|
67
|
-
|
68
|
-
def self.handle_for_error(e, rcode=nil, rbody=nil)
|
69
|
-
if(rcode == 204)
|
70
|
-
raise Error.new("No response returned by the chargebee api. The http status code is #{rcode}")
|
71
|
-
end
|
72
|
-
begin
|
73
|
-
error_obj = JSON.parse(rbody)
|
74
|
-
error_obj = Util.symbolize_keys(error_obj)
|
75
|
-
rescue Exception => e
|
76
|
-
raise Error.new("Error response not in JSON format. The http status code is #{rcode} \n #{rbody.inspect}",e)
|
77
|
-
end
|
78
|
-
type = error_obj[:type]
|
79
|
-
if("payment" == type)
|
80
|
-
raise PaymentError.new(rcode, error_obj)
|
81
|
-
elsif("operation_failed" == type)
|
82
|
-
raise OperationFailedError.new(rcode, error_obj)
|
83
|
-
elsif("invalid_request" == type)
|
84
|
-
raise InvalidRequestError.new(rcode, error_obj)
|
85
|
-
else
|
86
|
-
raise APIError.new(rcode, error_obj)
|
87
|
-
end
|
88
|
-
|
89
|
-
end
|
90
|
-
|
91
|
-
end
|
92
|
-
end
|
1
|
+
require 'rest_client'
|
2
|
+
require 'json'
|
3
|
+
|
4
|
+
module ChargeBee
|
5
|
+
module Rest
|
6
|
+
|
7
|
+
def self.request(method, url, env, params=nil, headers={})
|
8
|
+
raise Error.new('No environment configured.') unless env
|
9
|
+
api_key = env.api_key
|
10
|
+
|
11
|
+
if(ChargeBee.verify_ca_certs?)
|
12
|
+
ssl_opts = {
|
13
|
+
:verify_ssl => OpenSSL::SSL::VERIFY_PEER,
|
14
|
+
:ssl_ca_file => ChargeBee.ca_cert_path
|
15
|
+
}
|
16
|
+
else
|
17
|
+
ssl_opts = {
|
18
|
+
:verify_ssl => false
|
19
|
+
}
|
20
|
+
end
|
21
|
+
case method.to_s.downcase.to_sym
|
22
|
+
when :get, :head, :delete
|
23
|
+
headers = { :params => params }.merge(headers)
|
24
|
+
payload = nil
|
25
|
+
else
|
26
|
+
payload = params
|
27
|
+
end
|
28
|
+
|
29
|
+
user_agent = ChargeBee.user_agent
|
30
|
+
headers = {
|
31
|
+
"User-Agent" => user_agent,
|
32
|
+
:accept => :json,
|
33
|
+
"Lang-Version" => RUBY_VERSION,
|
34
|
+
"OS-Version" => RUBY_PLATFORM
|
35
|
+
}.merge(headers)
|
36
|
+
opts = {
|
37
|
+
:method => method,
|
38
|
+
:url => env.api_url(url),
|
39
|
+
:user => api_key,
|
40
|
+
:headers => headers,
|
41
|
+
:payload => payload,
|
42
|
+
:open_timeout => 50,
|
43
|
+
:timeout => 100
|
44
|
+
}.merge(ssl_opts)
|
45
|
+
|
46
|
+
begin
|
47
|
+
response = RestClient::Request.execute(opts)
|
48
|
+
rescue RestClient::ExceptionWithResponse => e
|
49
|
+
if rcode = e.http_code and rbody = e.http_body
|
50
|
+
raise handle_for_error(e, rcode, rbody)
|
51
|
+
else
|
52
|
+
raise IOError.new("IO Exception when trying to connect to chargebee with url #{opts[:url]} . Reason #{e}",e)
|
53
|
+
end
|
54
|
+
rescue Exception => e
|
55
|
+
raise IOError.new("IO Exception when trying to connect to chargebee with url #{opts[:url]} . Reason #{e}",e)
|
56
|
+
end
|
57
|
+
rbody = response.body
|
58
|
+
rcode = response.code
|
59
|
+
begin
|
60
|
+
resp = JSON.parse(rbody)
|
61
|
+
rescue Exception => e
|
62
|
+
raise Error.new("Response not in JSON format. Probably not a ChargeBee response \n #{rbody.inspect}",e)
|
63
|
+
end
|
64
|
+
resp = Util.symbolize_keys(resp)
|
65
|
+
resp
|
66
|
+
end
|
67
|
+
|
68
|
+
def self.handle_for_error(e, rcode=nil, rbody=nil)
|
69
|
+
if(rcode == 204)
|
70
|
+
raise Error.new("No response returned by the chargebee api. The http status code is #{rcode}")
|
71
|
+
end
|
72
|
+
begin
|
73
|
+
error_obj = JSON.parse(rbody)
|
74
|
+
error_obj = Util.symbolize_keys(error_obj)
|
75
|
+
rescue Exception => e
|
76
|
+
raise Error.new("Error response not in JSON format. The http status code is #{rcode} \n #{rbody.inspect}",e)
|
77
|
+
end
|
78
|
+
type = error_obj[:type]
|
79
|
+
if("payment" == type)
|
80
|
+
raise PaymentError.new(rcode, error_obj)
|
81
|
+
elsif("operation_failed" == type)
|
82
|
+
raise OperationFailedError.new(rcode, error_obj)
|
83
|
+
elsif("invalid_request" == type)
|
84
|
+
raise InvalidRequestError.new(rcode, error_obj)
|
85
|
+
else
|
86
|
+
raise APIError.new(rcode, error_obj)
|
87
|
+
end
|
88
|
+
|
89
|
+
end
|
90
|
+
|
91
|
+
end
|
92
|
+
end
|