Class: Chargify::Subscription

Inherits:
Base
  • Object
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

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



120
121
122
123
124
# File 'lib/chargify_api_ares/resources/subscription.rb', line 120

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

#adjustment(attrs = {}) ⇒ Object



114
115
116
117
118
# File 'lib/chargify_api_ares/resources/subscription.rb', line 114

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

#build_metadata(params = {}) ⇒ Object



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

def (params = {})
  SubscriptionMetadata.new(params.reverse_merge({:resource_id => self.id}))
end

#cancel(cancellation_message = nil) ⇒ Object



19
20
21
22
23
24
25
26
# File 'lib/chargify_api_ares/resources/subscription.rb', line 19

def cancel(cancellation_message = nil)
  if cancellation_message.nil?
    destroy
  else
    #Destory does not support body, must work around it to send verb DELETE
    self.connection.post(element_path, {:cancellation_message => cancellation_message}.to_xml(:root => :subscription), self.class.headers.merge({'X-Http-Method-Override' => 'DELETE'}))
  end
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



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

def charge(attrs = {})
  Chargify::Charge.create(attrs.merge(:subscription_id => self.id))
end

#component(id) ⇒ Object



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

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

#components(params = {}) ⇒ Object



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

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

#create_metadata(params = {}) ⇒ Object



32
33
34
# File 'lib/chargify_api_ares/resources/subscription.rb', line 32

def (params = {})
  SubscriptionMetadata.create(params.reverse_merge({:resource_id => self.id}))
end

#credit(attrs = {}) ⇒ Object



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

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

#events(params = {}) ⇒ Object



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

def events(params = {})
  params.merge!(:subscription_id => self.id)
  Event.all(:params => params)
end

#metadata(params = {}) ⇒ Object



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

def (params={})
  params.merge!({:resource_id => self.id})
  SubscriptionMetadata.find(:all, :params => params)
end

#migrate(attrs = {}) ⇒ Object



94
95
96
# File 'lib/chargify_api_ares/resources/subscription.rb', line 94

def migrate(attrs = {})
  Chargify::Migration.create(attrs.merge(:subscription_id => self.id))
end

#payment_profileObject



55
56
57
58
59
60
61
# File 'lib/chargify_api_ares/resources/subscription.rb', line 55

def payment_profile
  if self.respond_to?('credit_card')
    credit_card
  elsif self.respond_to?('bank_account')
    
  end
end

#reactivate(params = {}) ⇒ Object



82
83
84
85
86
# File 'lib/chargify_api_ares/resources/subscription.rb', line 82

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

#refund(attrs = {}) ⇒ Object



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

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

#remove_coupon(code = nil) ⇒ Object



126
127
128
129
130
131
132
133
134
# File 'lib/chargify_api_ares/resources/subscription.rb', line 126

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

#reset_balanceObject



88
89
90
91
92
# File 'lib/chargify_api_ares/resources/subscription.rb', line 88

def reset_balance
  process_capturing_errors do
    put :reset_balance
  end
end

#saveObject

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



11
12
13
14
15
16
17
# File 'lib/chargify_api_ares/resources/subscription.rb', line 11

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

#statement(id) ⇒ Object

Raises:

  • (ActiveResource::ResourceNotFound)


98
99
100
101
102
# File 'lib/chargify_api_ares/resources/subscription.rb', line 98

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

#statements(params = {}) ⇒ Object



104
105
106
107
# File 'lib/chargify_api_ares/resources/subscription.rb', line 104

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

#transactions(params = {}) ⇒ Object



109
110
111
112
# File 'lib/chargify_api_ares/resources/subscription.rb', line 109

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