Class: Epay::Subscription
- Inherits:
-
Object
- Object
- Epay::Subscription
show all
- Includes:
- Model
- Defined in:
- lib/epay/subscription.rb
Instance Attribute Summary collapse
Attributes included from Model
#data, #id
Class Method Summary
collapse
Instance Method Summary
collapse
Methods included from Model
#initialize, #inspect, inspect
Instance Attribute Details
#card_no ⇒ Object
Returns the value of attribute card_no.
5
6
7
|
# File 'lib/epay/subscription.rb', line 5
def card_no
@card_no
end
|
Class Method Details
.all ⇒ Object
114
115
116
117
118
119
120
121
122
123
124
125
|
# File 'lib/epay/subscription.rb', line 114
def all
Epay::Api.request(SUBSCRIPTION_SOAP_URL, 'getsubscriptions') do |response|
if response.success?
collection = []
response.data['subscriptionAry']['SubscriptionInformationType'].each do |subscription|
collection << new_from_data(subscription)
end
collection
end
end
end
|
.create(params) ⇒ Object
Epay::Subscription.create(:card_no => ‘…’, :)
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
|
# File 'lib/epay/subscription.rb', line 88
def create(params)
params.merge!(
:order_no => (Time.now.to_f * 10000).to_i.to_s,
:amount => 0
)
post = Api.default_post_for_params(params).merge({
:subscription => 1,
:subscriptionname => params[:description]
})
query = Api.authorize(post)
if query['accept']
subscription = new(query["subscriptionid"].to_i).reload
subscription.card_no = query["tcardno"]
subscription
else
new(nil, 'error' => query["error"])
end
end
|
.find(id) ⇒ Object
Epay::Subscription.find(1234)
83
84
85
|
# File 'lib/epay/subscription.rb', line 83
def find(id)
Subscription.new(id).reload
end
|
.inspectable_attributes ⇒ Object
7
8
9
|
# File 'lib/epay/subscription.rb', line 7
def self.inspectable_attributes
%w(id created_at description)
end
|
.new_from_data(data) ⇒ Object
127
128
129
|
# File 'lib/epay/subscription.rb', line 127
def new_from_data(data)
new(data['subscriptionid'].to_i, data)
end
|
Instance Method Details
#authorize(params = {}) ⇒ Object
63
64
65
66
67
68
69
70
71
72
73
74
75
|
# File 'lib/epay/subscription.rb', line 63
def authorize(params = {})
post = Api.default_post_for_params(params)
post[:subscriptionid] = id
Epay::Api.request(SUBSCRIPTION_SOAP_URL, 'authorize', post) do |response|
if response.success?
Transaction.find(response.data['transactionid'])
else
Transaction.new(nil, 'error' => response.data['pbsresponse'], 'failed' => true)
end
end
end
|
#card ⇒ Object
15
16
17
18
19
20
21
22
23
24
25
26
27
|
# File 'lib/epay/subscription.rb', line 15
def card
if transactions.any?
transactions.last.card
else
Card.new({
:exp_year => data['expyear'].to_i,
:exp_month => data['expmonth'].to_i,
:kind => data['cardtypeid'].downcase.to_sym,
:number => card_no
})
end
end
|
#created_at ⇒ Object
11
12
13
|
# File 'lib/epay/subscription.rb', line 11
def created_at
Time.parse(data['created'])
end
|
#delete ⇒ Object
77
78
79
|
# File 'lib/epay/subscription.rb', line 77
def delete
Epay::Api.request(SUBSCRIPTION_SOAP_URL, 'delete', :subscriptionid => id).success?
end
|
#description ⇒ Object
37
38
39
|
# File 'lib/epay/subscription.rb', line 37
def description
data['description']
end
|
#error ⇒ Object
29
30
31
|
# File 'lib/epay/subscription.rb', line 29
def error
data['error']
end
|
#reload ⇒ Object
51
52
53
54
55
56
57
58
59
60
61
|
# File 'lib/epay/subscription.rb', line 51
def reload
response = Epay::Api.request(SUBSCRIPTION_SOAP_URL, 'getsubscriptions', :subscriptionid => id) do |response|
if response.success?
@data = response.data['subscriptionAry']['SubscriptionInformationType']
self
else
raise(SubscriptionNotFound, "Couldn't find subscription with ID=#{id}")
end
end
end
|
#transactions ⇒ Object
41
42
43
44
45
46
47
48
|
# File 'lib/epay/subscription.rb', line 41
def transactions
return [] unless data['transactionList'].present?
Array.wrap(data['transactionList']['TransactionInformationType']).collect do |transaction_data|
Transaction.new(transaction_data['transactionid'].to_i, transaction_data)
end
end
|
#valid? ⇒ Boolean
33
34
35
|
# File 'lib/epay/subscription.rb', line 33
def valid?
data['error'].nil?
end
|