Class: Chargify::Subscription
- Inherits:
-
Base
- Object
- ActiveResource::Base
- Base
- Chargify::Subscription
show all
- Includes:
- ResponseHelper
- Defined in:
- lib/chargify_api_ares/resources/subscription.rb
Defined Under Namespace
Classes: Component, Event, Statement, Transaction
Class Method Summary
collapse
Instance Method Summary
collapse
#extract_uniqueness_token
Methods inherited from Base
element_name, #to_xml
Class Method Details
.find_by_customer_reference(reference) ⇒ Object
5
6
7
8
|
# File 'lib/chargify_api_ares/resources/subscription.rb', line 5
def self.find_by_customer_reference(reference)
customer = Customer.find_by_reference(reference)
find(:first, :params => {:customer_id => customer.id})
end
|
Instance Method Details
#add_coupon(code) ⇒ Object
162
163
164
165
166
|
# File 'lib/chargify_api_ares/resources/subscription.rb', line 162
def add_coupon(code)
process_capturing_errors do
post :add_coupon, :code => code
end
end
|
#adjustment(attrs = {}) ⇒ Object
155
156
157
158
159
160
|
# File 'lib/chargify_api_ares/resources/subscription.rb', line 155
def adjustment(attrs = {})
attrs, options = (attrs)
process_capturing_errors do
post :adjustments, options, attrs.to_xml(:root => :adjustment)
end
end
|
40
41
42
|
# File 'lib/chargify_api_ares/resources/subscription.rb', line 40
def build_metadata(params = {})
SubscriptionMetadata.new(params.reverse_merge({:resource_id => self.id}))
end
|
#cancel(params = {}) ⇒ Object
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
# File 'lib/chargify_api_ares/resources/subscription.rb', line 24
def cancel(params = {})
if params.blank?
destroy
else
self.connection.post(
element_path,
{
cancellation_message: params[:cancellation_message] || nil,
reason_code: params[:reason_code] || nil
}.to_xml(:root => :subscription),
self.class..merge({'X-Http-Method-Override' => 'DELETE'})
)
end
end
|
#cancel_delayed_product_change ⇒ Object
189
190
191
192
|
# File 'lib/chargify_api_ares/resources/subscription.rb', line 189
def cancel_delayed_product_change
self.next_product_id = nil
save
end
|
#charge(attrs = {}) ⇒ Object
80
81
82
|
# File 'lib/chargify_api_ares/resources/subscription.rb', line 80
def charge(attrs = {})
Chargify::Charge.create(attrs.merge(:subscription_id => self.id))
end
|
#component(id) ⇒ Object
53
54
55
|
# File 'lib/chargify_api_ares/resources/subscription.rb', line 53
def component(id)
Component.find(id, :params => {:subscription_id => self.id})
end
|
#components(params = {}) ⇒ Object
57
58
59
60
|
# File 'lib/chargify_api_ares/resources/subscription.rb', line 57
def components(params = {})
params.merge!({:subscription_id => self.id})
Component.find(:all, :params => params)
end
|
44
45
46
|
# File 'lib/chargify_api_ares/resources/subscription.rb', line 44
def create_metadata(params = {})
SubscriptionMetadata.create(params.reverse_merge({:resource_id => self.id}))
end
|
#credit(attrs = {}) ⇒ Object
92
93
94
95
96
97
|
# File 'lib/chargify_api_ares/resources/subscription.rb', line 92
def credit(attrs = {})
attrs, options = (attrs)
process_capturing_errors do
post :credits, options, attrs.to_xml(:root => :credit)
end
end
|
#delayed_cancel(cancel_at_end_of_period = true) ⇒ Object
178
179
180
181
|
# File 'lib/chargify_api_ares/resources/subscription.rb', line 178
def delayed_cancel(cancel_at_end_of_period = true)
self.cancel_at_end_of_period = cancel_at_end_of_period
save
end
|
#events(params = {}) ⇒ Object
62
63
64
65
|
# File 'lib/chargify_api_ares/resources/subscription.rb', line 62
def events(params = {})
params.merge!(:subscription_id => self.id)
Event.all(:params => params)
end
|
#invoice(id) ⇒ Object
144
145
146
147
148
|
# File 'lib/chargify_api_ares/resources/subscription.rb', line 144
def invoice(id)
invoice = Chargify::Invoice.find(id)
raise ActiveResource::ResourceNotFound.new(nil) if (invoice.subscription_id != self.id)
invoice
end
|
#invoices(params = {}) ⇒ Object
139
140
141
142
|
# File 'lib/chargify_api_ares/resources/subscription.rb', line 139
def invoices(params = {})
params.merge!(subscription_id: self.id)
Invoice.find(:all, params: params)
end
|
48
49
50
51
|
# File 'lib/chargify_api_ares/resources/subscription.rb', line 48
def metadata(params={})
params.merge!({:resource_id => self.id})
SubscriptionMetadata.find(:all, :params => params)
end
|
#migrate(attrs = {}) ⇒ Object
124
125
126
|
# File 'lib/chargify_api_ares/resources/subscription.rb', line 124
def migrate(attrs = {})
Chargify::Migration.create(attrs.merge(:subscription_id => self.id))
end
|
#payment(attrs = {}) ⇒ Object
Record an external payment on an existing subscription. This DOES NOT charge the customer’s credit card. For more information, please see the API docs available at: docs.chargify.com/api-payments
88
89
90
|
# File 'lib/chargify_api_ares/resources/subscription.rb', line 88
def payment(attrs = {})
Chargify::Payment.create(attrs.merge(:subscription_id => self.id))
end
|
#payment_profile ⇒ Object
67
68
69
70
71
72
73
74
75
|
# File 'lib/chargify_api_ares/resources/subscription.rb', line 67
def payment_profile
if self.respond_to?('credit_card')
credit_card
elsif self.respond_to?('bank_account')
bank_account
elsif self.respond_to?('paypal_account')
paypal_account
end
end
|
#product_change(handle, delayed = false) ⇒ Object
183
184
185
186
187
|
# File 'lib/chargify_api_ares/resources/subscription.rb', line 183
def product_change(handle, delayed = false)
self.product_handle = handle
self.product_change_delayed = delayed
save
end
|
#reactivate(params = {}) ⇒ Object
106
107
108
109
110
|
# File 'lib/chargify_api_ares/resources/subscription.rb', line 106
def reactivate(params = {})
process_capturing_errors do
put :reactivate, params
end
end
|
#refund(attrs = {}) ⇒ Object
99
100
101
102
103
104
|
# File 'lib/chargify_api_ares/resources/subscription.rb', line 99
def refund(attrs = {})
attrs, options = (attrs)
process_capturing_errors do
post :refunds, options, attrs.to_xml(:root => :refund)
end
end
|
#remove_coupon(code = nil) ⇒ Object
168
169
170
171
172
173
174
175
176
|
# File 'lib/chargify_api_ares/resources/subscription.rb', line 168
def remove_coupon(code=nil)
process_capturing_errors do
if code.nil?
delete :remove_coupon
else
delete :remove_coupon, :coupon_code => code
end
end
end
|
#reset_balance ⇒ Object
118
119
120
121
122
|
# File 'lib/chargify_api_ares/resources/subscription.rb', line 118
def reset_balance
process_capturing_errors do
put :reset_balance
end
end
|
#retry ⇒ Object
112
113
114
115
116
|
# File 'lib/chargify_api_ares/resources/subscription.rb', line 112
def retry
process_capturing_errors do
put :retry
end
end
|
#save ⇒ Object
Strip off nested attributes of associations before saving, or type-mismatch errors will occur
11
12
13
14
15
16
17
18
19
20
21
22
|
# File 'lib/chargify_api_ares/resources/subscription.rb', line 11
def save
self.attributes.stringify_keys!
self.attributes.delete('customer')
self.attributes.delete('product')
self.attributes.delete('credit_card')
self.attributes.delete('bank_account')
self.attributes.delete('paypal_account')
self.attributes, options = (attributes)
self.prefix_options.merge!(options)
super
end
|
#statement(id) ⇒ Object
128
129
130
131
132
|
# File 'lib/chargify_api_ares/resources/subscription.rb', line 128
def statement(id)
statement = Chargify::Statement.find(id)
raise ActiveResource::ResourceNotFound.new(nil) if (statement.subscription_id != self.id)
statement
end
|
#statements(params = {}) ⇒ Object
134
135
136
137
|
# File 'lib/chargify_api_ares/resources/subscription.rb', line 134
def statements(params = {})
params.merge!(:subscription_id => self.id)
Statement.find(:all, :params => params)
end
|
#transactions(params = {}) ⇒ Object
150
151
152
153
|
# File 'lib/chargify_api_ares/resources/subscription.rb', line 150
def transactions(params = {})
params.merge!(:subscription_id => self.id)
Transaction.find(:all, :params => params)
end
|