Class: Chargify::Subscription

Inherits:
Base
  • Object
show all
Defined in:
lib/chargify_api_ares/resources/subscription.rb

Defined Under Namespace

Classes: Component, Statement, Transaction

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Base

element_name, #to_xml

Class Method Details

.find_by_customer_reference(reference) ⇒ Object



3
4
5
6
# File 'lib/chargify_api_ares/resources/subscription.rb', line 3

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



80
81
82
# File 'lib/chargify_api_ares/resources/subscription.rb', line 80

def add_coupon(code)
  post :add_coupon, :code => code
end

#adjustment(attrs = {}) ⇒ Object



76
77
78
# File 'lib/chargify_api_ares/resources/subscription.rb', line 76

def adjustment(attrs = {})
  post :adjustments, {}, attrs.to_xml(:root => :adjustment)
end

#cancelObject



16
17
18
# File 'lib/chargify_api_ares/resources/subscription.rb', line 16

def cancel
  destroy
end

#charge(attrs = {}) ⇒ Object

Perform a one-time charge on an existing subscription. For more information, please see the one-time charge API docs available at: support.chargify.com/faqs/api/api-charges



36
37
38
# File 'lib/chargify_api_ares/resources/subscription.rb', line 36

def charge(attrs = {})
  post :charges, {}, attrs.to_xml(:root => :charge)
end

#component(id) ⇒ Object



20
21
22
# File 'lib/chargify_api_ares/resources/subscription.rb', line 20

def component(id)
  Component.find(id, :params => {:subscription_id => self.id})
end

#components(params = {}) ⇒ Object



24
25
26
27
# File 'lib/chargify_api_ares/resources/subscription.rb', line 24

def components(params = {})
  params.merge!({:subscription_id => self.id})
  Component.find(:all, :params => params)
end

#credit(attrs = {}) ⇒ Object



40
41
42
# File 'lib/chargify_api_ares/resources/subscription.rb', line 40

def credit(attrs = {})
  post :credits, {}, attrs.to_xml(:root => :credit)
end

#migrate(attrs = {}) ⇒ Object



56
57
58
# File 'lib/chargify_api_ares/resources/subscription.rb', line 56

def migrate(attrs = {})
  post :migrations, :migration => attrs
end

#payment_profileObject



29
30
31
# File 'lib/chargify_api_ares/resources/subscription.rb', line 29

def payment_profile
  self.respond_to?('credit_card') ? credit_card : nil
end

#reactivate(params = {}) ⇒ Object



48
49
50
# File 'lib/chargify_api_ares/resources/subscription.rb', line 48

def reactivate(params = {})
  put :reactivate, params
end

#refund(attrs = {}) ⇒ Object



44
45
46
# File 'lib/chargify_api_ares/resources/subscription.rb', line 44

def refund(attrs = {})
  post :refunds, {}, attrs.to_xml(:root => :refund)
end

#remove_coupon(code = nil) ⇒ Object



84
85
86
87
88
89
90
# File 'lib/chargify_api_ares/resources/subscription.rb', line 84

def remove_coupon(code=nil)
  if code.nil?
    delete :remove_coupon
  else
    delete :remove_coupon, :code => code
  end
end

#reset_balanceObject



52
53
54
# File 'lib/chargify_api_ares/resources/subscription.rb', line 52

def reset_balance
  put :reset_balance
end

#saveObject

Strip off nested attributes of associations before saving, or type-mismatch errors will occur



9
10
11
12
13
14
# File 'lib/chargify_api_ares/resources/subscription.rb', line 9

def save
  self.attributes.delete('customer')
  self.attributes.delete('product')
  self.attributes.delete('credit_card')
  super
end

#statement(id) ⇒ Object

Raises:

  • (ActiveResource::ResourceNotFound)


60
61
62
63
64
# File 'lib/chargify_api_ares/resources/subscription.rb', line 60

def statement(id)
  statement = Chargify::Statement.find(id)
  raise ActiveResource::ResourceNotFound.new(nil) if (statement.subscription_id != self.id)
  statement
end

#statements(params = {}) ⇒ Object



66
67
68
69
# File 'lib/chargify_api_ares/resources/subscription.rb', line 66

def statements(params = {})
  params.merge!(:subscription_id => self.id)
  Statement.find(:all, :params => params)
end

#transactions(params = {}) ⇒ Object



71
72
73
74
# File 'lib/chargify_api_ares/resources/subscription.rb', line 71

def transactions(params = {})
  params.merge!(:subscription_id => self.id)
  Transaction.find(:all, :params => params)
end