mc2p-ruby 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/README.md +125 -0
- data/bin/mc2p +3 -0
- data/lib/base.rb +331 -0
- data/lib/errors.rb +37 -0
- data/lib/mc2p.rb +125 -0
- data/lib/mixins.rb +377 -0
- data/lib/notification.rb +73 -0
- data/lib/objects.rb +135 -0
- data/lib/request.rb +87 -0
- data/lib/resources.rb +108 -0
- metadata +69 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 2cf6d964ae739ae4de6ac141e488f89a29b28122
|
4
|
+
data.tar.gz: '0590e374daf4ad713f50b31d0880ab9f5b44d3d2'
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 2f265ef00b103392dcd85527a53b368fccfbf48722547892aa2c50d717883a2b89cd2a1c0392b598c4556a9c5a2b6e644ebe3740522c38b17890d737ab22246c
|
7
|
+
data.tar.gz: 4003ad34dca603880af5be7a7e7ea333483e904f2053604d242ffaa2830a4a82414ca4d38ae7cdc5e389f037b3dff6f178ad12f6c562667e8f96b174da0fe90c
|
data/README.md
ADDED
@@ -0,0 +1,125 @@
|
|
1
|
+
# MyChoice2Pay Ruby
|
2
|
+
|
3
|
+
|
4
|
+
# Overview
|
5
|
+
|
6
|
+
MyChoice2Pay Ruby provides integration access to the MyChoice2Pay API.
|
7
|
+
|
8
|
+
# Installation
|
9
|
+
|
10
|
+
Add this line to your application's Gemfile:
|
11
|
+
|
12
|
+
gem 'mc2p-ruby'
|
13
|
+
|
14
|
+
And then execute:
|
15
|
+
|
16
|
+
$ bundle
|
17
|
+
|
18
|
+
Or install it yourself as:
|
19
|
+
|
20
|
+
gem install mc2p-ruby
|
21
|
+
|
22
|
+
# Quick Start Example
|
23
|
+
|
24
|
+
require 'mc2p'
|
25
|
+
|
26
|
+
mc2p = MC2P::MC2PClient.new('KEY', 'SECRET_KEY')
|
27
|
+
|
28
|
+
# Create transaction
|
29
|
+
transaction = mc2p.transaction({
|
30
|
+
'currency' => 'EUR',
|
31
|
+
'products' => [{
|
32
|
+
'amount' => 1,
|
33
|
+
'product_id' => 'PRODUCT-ID'
|
34
|
+
}]
|
35
|
+
})
|
36
|
+
# or with product details
|
37
|
+
transaction = mc2p.transaction({
|
38
|
+
'currency' => 'EUR',
|
39
|
+
'products' => [{
|
40
|
+
'amount' => 1,
|
41
|
+
'product' => {
|
42
|
+
'name' => 'Product',
|
43
|
+
'price' => 5
|
44
|
+
}
|
45
|
+
}]
|
46
|
+
})
|
47
|
+
transaction.save
|
48
|
+
transaction.pay_url # Send user to this url to pay
|
49
|
+
transaction.iframe_url # Use this url to show an iframe in your site
|
50
|
+
|
51
|
+
# Get plans
|
52
|
+
plans_paginator = mc2p.plan_resource.list
|
53
|
+
plans_paginator.count
|
54
|
+
plans_paginator.results # Application's plans
|
55
|
+
plans_paginator.next_list
|
56
|
+
|
57
|
+
# Get product, change and save
|
58
|
+
product = mc2p.product({
|
59
|
+
'id' => 'PRODUCT-ID'
|
60
|
+
})
|
61
|
+
product.retrieve
|
62
|
+
product.set('price', 10)
|
63
|
+
product.save
|
64
|
+
|
65
|
+
# Create and delete tax
|
66
|
+
tax = mc2p.tax({
|
67
|
+
'name' => 'Tax',
|
68
|
+
'percent' => 5
|
69
|
+
})
|
70
|
+
tax.save
|
71
|
+
tax.delete
|
72
|
+
|
73
|
+
# Check if transaction was paid
|
74
|
+
transaction = mc2p.transaction({
|
75
|
+
'id' => 'TRANSACTION-ID'
|
76
|
+
})
|
77
|
+
transaction.retrieve
|
78
|
+
transaction.status == 'D' # Paid
|
79
|
+
|
80
|
+
# Create subscription
|
81
|
+
subscription = mc2p.subscription({
|
82
|
+
'currency' => 'EUR',
|
83
|
+
'plan_id' => 'PLAN-ID',
|
84
|
+
'note' => 'Note example'
|
85
|
+
})
|
86
|
+
# or with plan details
|
87
|
+
subscription = mc2p.subscription({
|
88
|
+
'currency' => 'EUR',
|
89
|
+
'plan' => {
|
90
|
+
'name' => 'Plan',
|
91
|
+
'price' => 5,
|
92
|
+
'duration' => 1,
|
93
|
+
'unit' => 'M',
|
94
|
+
'recurring' => true
|
95
|
+
},
|
96
|
+
'note' => 'Note example'
|
97
|
+
})
|
98
|
+
subscription.save
|
99
|
+
subscription.pay_url # Send user to this url to pay
|
100
|
+
subscription.iframe_url # Use this url to show an iframe in your site
|
101
|
+
|
102
|
+
# Receive a notification
|
103
|
+
notification_data = mc2p.notification_data(JSON_DICT_RECEIVED_FROM_MYCHOICE2PAY)
|
104
|
+
notification_data.status == 'D' # Paid
|
105
|
+
notification_data.transaction # Transaction Paid
|
106
|
+
notification_data.sale # Sale generated
|
107
|
+
|
108
|
+
# Exceptions
|
109
|
+
|
110
|
+
require 'mc2p'
|
111
|
+
|
112
|
+
# Incorrect data
|
113
|
+
shipping = mc2p.shipping({
|
114
|
+
'name' => 'Normal shipping',
|
115
|
+
'price' => 'text' # Price must be number
|
116
|
+
})
|
117
|
+
begin
|
118
|
+
shipping.save
|
119
|
+
rescue MC2P::InvalidRequestError => e
|
120
|
+
puts e.message # Status code of error
|
121
|
+
puts e.json_body # Info from server
|
122
|
+
puts e.resource # Resource used to make the server request
|
123
|
+
puts e.resource_id # Resource id requested
|
124
|
+
end
|
125
|
+
|
data/bin/mc2p
ADDED
data/lib/base.rb
ADDED
@@ -0,0 +1,331 @@
|
|
1
|
+
module MC2P
|
2
|
+
# Paginator - class used on list requests
|
3
|
+
class Paginator
|
4
|
+
attr_accessor :count
|
5
|
+
attr_accessor :results
|
6
|
+
|
7
|
+
# Initializes a paginator
|
8
|
+
# Params:
|
9
|
+
# +json_dict+:: Response from server
|
10
|
+
# +object_item_class+:: Class to wrapper all the items from results field
|
11
|
+
# +resource+:: Resource used to get next and previous items
|
12
|
+
def initialize(json_dict, object_item_class, resource)
|
13
|
+
@count = json_dict.fetch('count', 0)
|
14
|
+
@_previous = json_dict.fetch('previous', nil)
|
15
|
+
@_next = json_dict.fetch('next', nil)
|
16
|
+
@results = []
|
17
|
+
json_dict.fetch('results', []).each do |result|
|
18
|
+
@results.push(object_item_class.new(result, resource))
|
19
|
+
@resource = resource
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
# Params:
|
24
|
+
# Returns: Paginator object with the next items
|
25
|
+
def next_list
|
26
|
+
@_next ? @resource.list(abs_url: @_next) : nil
|
27
|
+
end
|
28
|
+
|
29
|
+
# Params:
|
30
|
+
# Returns: Paginator object with the previous items
|
31
|
+
def previous_list
|
32
|
+
@_previous ? @resource.list(abs_url: @_previous) : nil
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
# Object item - class used to wrap the data from API that represent an item
|
37
|
+
class ObjectItem < ObjectItemMixin
|
38
|
+
# Initializes an object item
|
39
|
+
# Params:
|
40
|
+
# +json_dict+:: Data of the object
|
41
|
+
# +resource+:: Resource used to delete, save, create or retrieve the object
|
42
|
+
def initialize(json_dict, resource)
|
43
|
+
@json_dict = json_dict.nil? ? {} : json_dict
|
44
|
+
@resource = resource
|
45
|
+
@_deleted = false
|
46
|
+
@id_property = 'id'
|
47
|
+
end
|
48
|
+
|
49
|
+
# Allows use the following syntax to get a field of the object:
|
50
|
+
# obj.name
|
51
|
+
# Params:
|
52
|
+
# +key+:: Field to return
|
53
|
+
# Returns: Value of the field from json_dict
|
54
|
+
def method_missing(key, *args)
|
55
|
+
@json_dict.include?(key.to_s) ? @json_dict[key.to_s] : super
|
56
|
+
end
|
57
|
+
|
58
|
+
def respond_to_missing?(key, include_private = false)
|
59
|
+
@json_dict.include?(key.to_s) || super
|
60
|
+
end
|
61
|
+
|
62
|
+
def respond_to?(key, include_private = false)
|
63
|
+
@json_dict.include?(key.to_s) || super
|
64
|
+
end
|
65
|
+
|
66
|
+
# Allows use the following syntax to set a field of the object:
|
67
|
+
# obj.name = 'example'
|
68
|
+
# Params:
|
69
|
+
# +key+:: Field to change
|
70
|
+
# +value+:: Content to replace the current value
|
71
|
+
def set(key, value)
|
72
|
+
@json_dict[key] = value
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
# Object item that allows retrieve an item
|
77
|
+
class ReadOnlyObjectItem < ObjectItem
|
78
|
+
# Initializes an object item
|
79
|
+
# Params:
|
80
|
+
# +json_dict+:: Data of the object
|
81
|
+
# +resource+:: Resource used to delete, save, create or retrieve the object
|
82
|
+
def initialize(json_dict, resource)
|
83
|
+
@retrieve_mixin = RetrieveObjectItemMixin.new(json_dict, resource)
|
84
|
+
super(json_dict, resource)
|
85
|
+
end
|
86
|
+
|
87
|
+
# Retrieve object with object_id and return
|
88
|
+
# Params:
|
89
|
+
# +object_id+:: Id to retrieve
|
90
|
+
# Returns: Object after retrieve
|
91
|
+
def self.get(object_id)
|
92
|
+
obj = new({
|
93
|
+
@id_property => object_id
|
94
|
+
}, resource)
|
95
|
+
obj.retrieve
|
96
|
+
obj
|
97
|
+
end
|
98
|
+
|
99
|
+
# Retrieves the data of the object item
|
100
|
+
def retrieve
|
101
|
+
@retrieve_mixin.json_dict = @json_dict
|
102
|
+
@retrieve_mixin._deleted = @_deleted
|
103
|
+
@retrieve_mixin.retrieve
|
104
|
+
@json_dict = @retrieve_mixin.json_dict
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
# Object item that allows retrieve and create an item
|
109
|
+
class CRObjectItem < ReadOnlyObjectItem
|
110
|
+
# Initializes an object item
|
111
|
+
# Params:
|
112
|
+
# +json_dict+:: Data of the object
|
113
|
+
# +resource+:: Resource used to delete, save, create or retrieve the object
|
114
|
+
def initialize(json_dict, resource)
|
115
|
+
@create_mixin = CreateObjectItemMixin.new(json_dict, resource)
|
116
|
+
super(json_dict, resource)
|
117
|
+
end
|
118
|
+
|
119
|
+
# Creates the object item with the json_dict data
|
120
|
+
def _create
|
121
|
+
@create_mixin.json_dict = @json_dict
|
122
|
+
@create_mixin._deleted = @_deleted
|
123
|
+
@create_mixin._create
|
124
|
+
@json_dict = @create_mixin.json_dict
|
125
|
+
end
|
126
|
+
|
127
|
+
# Executes the internal function _create if the object item don't have id
|
128
|
+
def save
|
129
|
+
@create_mixin.json_dict = @json_dict
|
130
|
+
@create_mixin._deleted = @_deleted
|
131
|
+
@create_mixin.save
|
132
|
+
@json_dict = @create_mixin.json_dict
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
136
|
+
# Object item that allows retrieve, create and change an item
|
137
|
+
class CRUObjectItem < ReadOnlyObjectItem
|
138
|
+
# Initializes an object item
|
139
|
+
# Params:
|
140
|
+
# +json_dict+:: Data of the object
|
141
|
+
# +resource+:: Resource used to delete, save, create or retrieve the object
|
142
|
+
def initialize(json_dict, resource)
|
143
|
+
@save_mixin = SaveObjectItemMixin.new(json_dict, resource)
|
144
|
+
super(json_dict, resource)
|
145
|
+
end
|
146
|
+
|
147
|
+
# Creates the object item with the json_dict data
|
148
|
+
def _create
|
149
|
+
@save_mixin.json_dict = @json_dict
|
150
|
+
@save_mixin._deleted = @_deleted
|
151
|
+
@save_mixin._create
|
152
|
+
@json_dict = @save_mixin.json_dict
|
153
|
+
end
|
154
|
+
|
155
|
+
# Creates the object item with the json_dict data
|
156
|
+
def _change
|
157
|
+
@save_mixin.json_dict = @json_dict
|
158
|
+
@save_mixin._deleted = @_deleted
|
159
|
+
@save_mixin._change
|
160
|
+
@json_dict = @save_mixin.json_dict
|
161
|
+
end
|
162
|
+
|
163
|
+
# Executes the internal function _create if the object item don't have id
|
164
|
+
def save
|
165
|
+
@save_mixin.json_dict = @json_dict
|
166
|
+
@save_mixin._deleted = @_deleted
|
167
|
+
@save_mixin.save
|
168
|
+
@json_dict = @save_mixin.json_dict
|
169
|
+
end
|
170
|
+
end
|
171
|
+
|
172
|
+
# Object item that allows retrieve, create, change and delete an item
|
173
|
+
class CRUDObjectItem < CRUObjectItem
|
174
|
+
# Initializes an object item
|
175
|
+
# Params:
|
176
|
+
# +json_dict+:: Data of the object
|
177
|
+
# +resource+:: Resource used to delete, save, create or retrieve the object
|
178
|
+
def initialize(json_dict, resource)
|
179
|
+
@delete_mixin = DeleteObjectItemMixin.new(json_dict, resource)
|
180
|
+
super(json_dict, resource)
|
181
|
+
end
|
182
|
+
|
183
|
+
# Deletes the object item
|
184
|
+
def delete
|
185
|
+
@delete_mixin.json_dict = @json_dict
|
186
|
+
@delete_mixin._deleted = @_deleted
|
187
|
+
@delete_mixin.delete
|
188
|
+
@json_dict = @delete_mixin.json_dict
|
189
|
+
@_deleted = @delete_mixin._deleted
|
190
|
+
end
|
191
|
+
end
|
192
|
+
|
193
|
+
# Object item that allows retrieve, create and to get pay_url based
|
194
|
+
# on token of an item
|
195
|
+
class PayURLCRObjectItem < CRObjectItem
|
196
|
+
# Initializes an object item
|
197
|
+
# Params:
|
198
|
+
# +json_dict+:: Data of the object
|
199
|
+
# +resource+:: Resource used to delete, save, create or retrieve the object
|
200
|
+
def initialize(json_dict, resource)
|
201
|
+
@pay_url_mixin = PayURLMixin.new(json_dict, resource)
|
202
|
+
super(json_dict, resource)
|
203
|
+
end
|
204
|
+
|
205
|
+
# Returns: pay_url
|
206
|
+
def pay_url
|
207
|
+
@pay_url_mixin.json_dict = @json_dict
|
208
|
+
@pay_url_mixin.pay_url
|
209
|
+
end
|
210
|
+
|
211
|
+
# Returns: iframe_url
|
212
|
+
def iframe_url
|
213
|
+
@pay_url_mixin.json_dict = @json_dict
|
214
|
+
@pay_url_mixin.iframe_url
|
215
|
+
end
|
216
|
+
end
|
217
|
+
|
218
|
+
# Resource - class used to manage the requests to the API related with
|
219
|
+
# a resource
|
220
|
+
# ex: product
|
221
|
+
class Resource < ResourceMixin
|
222
|
+
# Initializes a resource
|
223
|
+
# Params:
|
224
|
+
# +api_request+:: Api request used to make all the requests to the API
|
225
|
+
# +path+:: Path used to make all the requests to the API
|
226
|
+
# +object_item_class+:: Object item class used to return values
|
227
|
+
def initialize(api_request, path, object_item_class)
|
228
|
+
@paginator_class = Paginator
|
229
|
+
super(api_request, path, object_item_class, @paginator_class)
|
230
|
+
end
|
231
|
+
end
|
232
|
+
|
233
|
+
# Resource that allows send requests of detail
|
234
|
+
class DetailOnlyResource < Resource
|
235
|
+
# Initializes a resource
|
236
|
+
# Params:
|
237
|
+
# +api_request+:: Api request used to make all the requests to the API
|
238
|
+
# +path+:: Path used to make all the requests to the API
|
239
|
+
# +object_item_class+:: Object item class used to return values
|
240
|
+
def initialize(api_request, path, object_item_class)
|
241
|
+
super(api_request, path, object_item_class)
|
242
|
+
@do_resource_mixin = DetailOnlyResourceMixin.new(api_request, path,
|
243
|
+
object_item_class,
|
244
|
+
@paginator_class)
|
245
|
+
end
|
246
|
+
|
247
|
+
# Params:
|
248
|
+
# +resource_id+:: id to request
|
249
|
+
# Returns: an object item class with the response of the server
|
250
|
+
def detail(resource_id)
|
251
|
+
@do_resource_mixin.detail(resource_id)
|
252
|
+
end
|
253
|
+
end
|
254
|
+
|
255
|
+
# Resource that allows send requests of list and detail
|
256
|
+
class ReadOnlyResource < DetailOnlyResource
|
257
|
+
# Initializes a resource
|
258
|
+
# Params:
|
259
|
+
# +api_request+:: Api request used to make all the requests to the API
|
260
|
+
# +path+:: Path used to make all the requests to the API
|
261
|
+
# +object_item_class+:: Object item class used to return values
|
262
|
+
def initialize(api_request, path, object_item_class)
|
263
|
+
super(api_request, path, object_item_class)
|
264
|
+
@ro_resource_mixin = ReadOnlyResourceMixin.new(api_request, path,
|
265
|
+
object_item_class,
|
266
|
+
@paginator_class)
|
267
|
+
end
|
268
|
+
|
269
|
+
# Params:
|
270
|
+
# +abs_url+:: if is passed the request is sent to this url
|
271
|
+
# Returns: a paginator class with the response of the server
|
272
|
+
def list(abs_url = nil)
|
273
|
+
@ro_resource_mixin.list(abs_url)
|
274
|
+
end
|
275
|
+
end
|
276
|
+
|
277
|
+
# Resource that allows send requests of create, list and detail
|
278
|
+
class CRResource < ReadOnlyResource
|
279
|
+
# Initializes a resource
|
280
|
+
# Params:
|
281
|
+
# +api_request+:: Api request used to make all the requests to the API
|
282
|
+
# +path+:: Path used to make all the requests to the API
|
283
|
+
# +object_item_class+:: Object item class used to return values
|
284
|
+
def initialize(api_request, path, object_item_class)
|
285
|
+
super(api_request, path, object_item_class)
|
286
|
+
@create_resource_mixin = CreateResourceMixin.new(api_request, path,
|
287
|
+
object_item_class,
|
288
|
+
@paginator_class)
|
289
|
+
end
|
290
|
+
|
291
|
+
# Params:
|
292
|
+
# +data+:: data used on the request
|
293
|
+
# Returns: an object item class with the response of the server
|
294
|
+
def create(data)
|
295
|
+
@create_resource_mixin.create(data)
|
296
|
+
end
|
297
|
+
end
|
298
|
+
|
299
|
+
# Resource that allows send requests of delete, change, create,
|
300
|
+
# list and detail
|
301
|
+
class CRUDResource < CRResource
|
302
|
+
# Initializes a resource
|
303
|
+
# Params:
|
304
|
+
# +api_request+:: Api request used to make all the requests to the API
|
305
|
+
# +path+:: Path used to make all the requests to the API
|
306
|
+
# +object_item_class+:: Object item class used to return values
|
307
|
+
def initialize(api_request, path, object_item_class)
|
308
|
+
super(api_request, path, object_item_class)
|
309
|
+
@change_resource_mixin = ChangeResourceMixin.new(api_request, path,
|
310
|
+
object_item_class,
|
311
|
+
@paginator_class)
|
312
|
+
@delete_resource_mixin = DeleteResourceMixin.new(api_request, path,
|
313
|
+
object_item_class,
|
314
|
+
@paginator_class)
|
315
|
+
end
|
316
|
+
|
317
|
+
# Params:
|
318
|
+
# +resource_id+:: id to request
|
319
|
+
# +data+:: data used on the request
|
320
|
+
# Returns: an object item class with the response of the server
|
321
|
+
def change(resource_id, data)
|
322
|
+
@change_resource_mixin.change(resource_id, data)
|
323
|
+
end
|
324
|
+
|
325
|
+
# Params:
|
326
|
+
# +resource_id+::id to request
|
327
|
+
def delete(resource_id)
|
328
|
+
@delete_resource_mixin.delete(resource_id)
|
329
|
+
end
|
330
|
+
end
|
331
|
+
end
|
data/lib/errors.rb
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
module MC2P
|
2
|
+
# MC2P Error - class used to manage the exceptions related with mc2p library
|
3
|
+
class MC2PError < StandardError
|
4
|
+
attr_accessor :json_body
|
5
|
+
attr_accessor :resource
|
6
|
+
attr_accessor :resource_id
|
7
|
+
|
8
|
+
# Initializes an error
|
9
|
+
# Params:
|
10
|
+
# +message+:: Error type
|
11
|
+
# +json_body+:: Response from server
|
12
|
+
# +resource+:: Class resource used when the error raised
|
13
|
+
# +resource_id+:: Resource id requested when the error raised
|
14
|
+
def initialize(message = nil, json_body = nil,
|
15
|
+
resource = nil, resource_id = nil)
|
16
|
+
super(message)
|
17
|
+
|
18
|
+
@_message = message
|
19
|
+
@json_body = json_body
|
20
|
+
@resource = resource
|
21
|
+
@resource_id = resource_id
|
22
|
+
end
|
23
|
+
|
24
|
+
# Returns: Error type and response
|
25
|
+
def to_s
|
26
|
+
"#{@_message} #{@json_body}"
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
# Invalid request error
|
31
|
+
class InvalidRequestError < MC2PError
|
32
|
+
end
|
33
|
+
|
34
|
+
# Bad use error
|
35
|
+
class BadUseError < MC2PError
|
36
|
+
end
|
37
|
+
end
|
data/lib/mc2p.rb
ADDED
@@ -0,0 +1,125 @@
|
|
1
|
+
require 'unirest'
|
2
|
+
|
3
|
+
require_relative 'errors'
|
4
|
+
require_relative 'request'
|
5
|
+
require_relative 'mixins'
|
6
|
+
require_relative 'base'
|
7
|
+
require_relative 'objects'
|
8
|
+
require_relative 'resources'
|
9
|
+
require_relative 'notification'
|
10
|
+
|
11
|
+
module MC2P
|
12
|
+
VERSION = '0.1.2'
|
13
|
+
|
14
|
+
# MC2P - class used to manage the communication with MyChoice2Pay API
|
15
|
+
class MC2PClient
|
16
|
+
attr_accessor :api_request
|
17
|
+
|
18
|
+
attr_accessor :product_resource
|
19
|
+
attr_accessor :plan_resource
|
20
|
+
attr_accessor :tax_resource
|
21
|
+
attr_accessor :shipping_resource
|
22
|
+
attr_accessor :coupon_resource
|
23
|
+
attr_accessor :transaction_resource
|
24
|
+
attr_accessor :subscription_resource
|
25
|
+
attr_accessor :sale_resource
|
26
|
+
attr_accessor :currency_resource
|
27
|
+
attr_accessor :gateway_resource
|
28
|
+
attr_accessor :pay_data_resource
|
29
|
+
|
30
|
+
# Initializes a resource
|
31
|
+
# Params:
|
32
|
+
# +api_request+:: Api request used to make all the requests to the API
|
33
|
+
# +path+:: Path used to make all the requests to the API
|
34
|
+
# +object_item_class+:: Object item class used to return values
|
35
|
+
def initialize(key, secret_key)
|
36
|
+
@api_request = APIRequest.new(key, secret_key)
|
37
|
+
|
38
|
+
@product_resource = ProductResource.new(@api_request,
|
39
|
+
'/product/',
|
40
|
+
Product)
|
41
|
+
@plan_resource = PlanResource.new(@api_request,
|
42
|
+
'/plan/',
|
43
|
+
Plan)
|
44
|
+
@tax_resource = TaxResource.new(@api_request,
|
45
|
+
'/tax/',
|
46
|
+
Tax)
|
47
|
+
@shipping_resource = ShippingResource.new(@api_request,
|
48
|
+
'/shipping/',
|
49
|
+
Shipping)
|
50
|
+
@coupon_resource = CouponResource.new(@api_request,
|
51
|
+
'/coupon/',
|
52
|
+
Coupon)
|
53
|
+
@transaction_resource = TransactionResource.new(@api_request,
|
54
|
+
'/transaction/',
|
55
|
+
Transaction)
|
56
|
+
@subscription_resource = SubscriptionResource.new(@api_request,
|
57
|
+
'/subscription/',
|
58
|
+
Subscription)
|
59
|
+
@sale_resource = SaleResource.new(@api_request,
|
60
|
+
'/sale/',
|
61
|
+
Sale)
|
62
|
+
@currency_resource = CurrencyResource.new(@api_request,
|
63
|
+
'/currency/',
|
64
|
+
Currency)
|
65
|
+
@gateway_resource = GatewayResource.new(@api_request,
|
66
|
+
'/gateway/',
|
67
|
+
Gateway)
|
68
|
+
@pay_data_resource = PayDataResource.new(@api_request,
|
69
|
+
'/pay/',
|
70
|
+
PayData)
|
71
|
+
end
|
72
|
+
|
73
|
+
def _wrapper(cls, resource, data)
|
74
|
+
cls.new(data, resource)
|
75
|
+
end
|
76
|
+
|
77
|
+
def product(data)
|
78
|
+
_wrapper(Product, @product_resource, data)
|
79
|
+
end
|
80
|
+
|
81
|
+
def plan(data)
|
82
|
+
_wrapper(Plan, @plan_resource, data)
|
83
|
+
end
|
84
|
+
|
85
|
+
def tax(data)
|
86
|
+
_wrapper(Tax, @tax_resource, data)
|
87
|
+
end
|
88
|
+
|
89
|
+
def shipping(data)
|
90
|
+
_wrapper(Shipping, @shipping_resource, data)
|
91
|
+
end
|
92
|
+
|
93
|
+
def coupon(data)
|
94
|
+
_wrapper(Coupon, @coupon_resource, data)
|
95
|
+
end
|
96
|
+
|
97
|
+
def transaction(data)
|
98
|
+
_wrapper(Transaction, @transaction_resource, data)
|
99
|
+
end
|
100
|
+
|
101
|
+
def subscription(data)
|
102
|
+
_wrapper(Subscription, @subscription_resource, data)
|
103
|
+
end
|
104
|
+
|
105
|
+
def sale(data)
|
106
|
+
_wrapper(Sale, @sale_resource, data)
|
107
|
+
end
|
108
|
+
|
109
|
+
def currency(data)
|
110
|
+
_wrapper(Currency, @currency_resource, data)
|
111
|
+
end
|
112
|
+
|
113
|
+
def gateway(data)
|
114
|
+
_wrapper(Gateway, @gateway_resource, data)
|
115
|
+
end
|
116
|
+
|
117
|
+
def pay_data(data)
|
118
|
+
_wrapper(PayData, @pay_data_resource, data)
|
119
|
+
end
|
120
|
+
|
121
|
+
def notification_data(data)
|
122
|
+
NotificationData.new(data, self)
|
123
|
+
end
|
124
|
+
end
|
125
|
+
end
|