processout 1.2.2 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,26 @@
1
+ require "base64"
2
+ require "json"
3
+
4
+ module ProcessOut
5
+ class GatewayRequest
6
+ attr_accessor :gateway_configuration_id, :method, :url, :headers, :body
7
+
8
+ def initialize(gateway_configuration_id, data = {})
9
+ self.gateway_configuration_id = gateway_configuration_id
10
+ self.method = data.fetch(:method, nil)
11
+ self.url = data.fetch(:url, nil)
12
+ self.headers = data.fetch(:headers, {})
13
+ self.body = data.fetch(:body, nil)
14
+ end
15
+
16
+ def to_s
17
+ "gway_req_" + Base64.strict_encode64(JSON.generate({
18
+ gateway_configuration_id: self.gateway_configuration_id,
19
+ method: self.method,
20
+ url: self.url,
21
+ headers: self.headers,
22
+ body: self.body
23
+ }))
24
+ end
25
+ end
26
+ end
@@ -9,19 +9,25 @@ module ProcessOut
9
9
 
10
10
  attr_reader :id
11
11
  attr_reader :project
12
+ attr_reader :project_id
12
13
  attr_reader :transaction
14
+ attr_reader :transaction_id
13
15
  attr_reader :customer
16
+ attr_reader :customer_id
14
17
  attr_reader :subscription
18
+ attr_reader :subscription_id
19
+ attr_reader :token
20
+ attr_reader :token_id
15
21
  attr_reader :details
16
22
  attr_reader :url
17
23
  attr_reader :name
24
+ attr_reader :amount
25
+ attr_reader :currency
18
26
  attr_reader :statement_descriptor
19
27
  attr_reader :statement_descriptor_phone
20
28
  attr_reader :statement_descriptor_city
21
29
  attr_reader :statement_descriptor_company
22
30
  attr_reader :statement_descriptor_url
23
- attr_reader :amount
24
- attr_reader :currency
25
31
  attr_reader :metadata
26
32
  attr_reader :return_url
27
33
  attr_reader :cancel_url
@@ -34,6 +40,11 @@ module ProcessOut
34
40
  end
35
41
 
36
42
  def project=(val)
43
+ if val.nil?
44
+ @project = val
45
+ return
46
+ end
47
+
37
48
  if val.instance_of? Project
38
49
  @project = val
39
50
  else
@@ -44,7 +55,16 @@ module ProcessOut
44
55
 
45
56
  end
46
57
 
58
+ def project_id=(val)
59
+ @project_id = val
60
+ end
61
+
47
62
  def transaction=(val)
63
+ if val.nil?
64
+ @transaction = val
65
+ return
66
+ end
67
+
48
68
  if val.instance_of? Transaction
49
69
  @transaction = val
50
70
  else
@@ -55,7 +75,16 @@ module ProcessOut
55
75
 
56
76
  end
57
77
 
78
+ def transaction_id=(val)
79
+ @transaction_id = val
80
+ end
81
+
58
82
  def customer=(val)
83
+ if val.nil?
84
+ @customer = val
85
+ return
86
+ end
87
+
59
88
  if val.instance_of? Customer
60
89
  @customer = val
61
90
  else
@@ -66,7 +95,16 @@ module ProcessOut
66
95
 
67
96
  end
68
97
 
98
+ def customer_id=(val)
99
+ @customer_id = val
100
+ end
101
+
69
102
  def subscription=(val)
103
+ if val.nil?
104
+ @subscription = val
105
+ return
106
+ end
107
+
70
108
  if val.instance_of? Subscription
71
109
  @subscription = val
72
110
  else
@@ -77,7 +115,36 @@ module ProcessOut
77
115
 
78
116
  end
79
117
 
118
+ def subscription_id=(val)
119
+ @subscription_id = val
120
+ end
121
+
122
+ def token=(val)
123
+ if val.nil?
124
+ @token = val
125
+ return
126
+ end
127
+
128
+ if val.instance_of? Token
129
+ @token = val
130
+ else
131
+ obj = Token.new(@client)
132
+ obj.fill_with_data(val)
133
+ @token = obj
134
+ end
135
+
136
+ end
137
+
138
+ def token_id=(val)
139
+ @token_id = val
140
+ end
141
+
80
142
  def details=(val)
143
+ if val.nil?
144
+ @details = []
145
+ return
146
+ end
147
+
81
148
  if val.length > 0 and val[0].instance_of? InvoiceDetail
82
149
  @details = val
83
150
  else
@@ -100,6 +167,14 @@ module ProcessOut
100
167
  @name = val
101
168
  end
102
169
 
170
+ def amount=(val)
171
+ @amount = val
172
+ end
173
+
174
+ def currency=(val)
175
+ @currency = val
176
+ end
177
+
103
178
  def statement_descriptor=(val)
104
179
  @statement_descriptor = val
105
180
  end
@@ -120,14 +195,6 @@ module ProcessOut
120
195
  @statement_descriptor_url = val
121
196
  end
122
197
 
123
- def amount=(val)
124
- @amount = val
125
- end
126
-
127
- def currency=(val)
128
- @currency = val
129
- end
130
-
131
198
  def metadata=(val)
132
199
  @metadata = val
133
200
  end
@@ -158,19 +225,25 @@ module ProcessOut
158
225
 
159
226
  self.id = data.fetch(:id, nil)
160
227
  self.project = data.fetch(:project, nil)
228
+ self.project_id = data.fetch(:project_id, nil)
161
229
  self.transaction = data.fetch(:transaction, nil)
230
+ self.transaction_id = data.fetch(:transaction_id, nil)
162
231
  self.customer = data.fetch(:customer, nil)
232
+ self.customer_id = data.fetch(:customer_id, nil)
163
233
  self.subscription = data.fetch(:subscription, nil)
234
+ self.subscription_id = data.fetch(:subscription_id, nil)
235
+ self.token = data.fetch(:token, nil)
236
+ self.token_id = data.fetch(:token_id, nil)
164
237
  self.details = data.fetch(:details, nil)
165
238
  self.url = data.fetch(:url, nil)
166
239
  self.name = data.fetch(:name, nil)
240
+ self.amount = data.fetch(:amount, nil)
241
+ self.currency = data.fetch(:currency, nil)
167
242
  self.statement_descriptor = data.fetch(:statement_descriptor, nil)
168
243
  self.statement_descriptor_phone = data.fetch(:statement_descriptor_phone, nil)
169
244
  self.statement_descriptor_city = data.fetch(:statement_descriptor_city, nil)
170
245
  self.statement_descriptor_company = data.fetch(:statement_descriptor_company, nil)
171
246
  self.statement_descriptor_url = data.fetch(:statement_descriptor_url, nil)
172
- self.amount = data.fetch(:amount, nil)
173
- self.currency = data.fetch(:currency, nil)
174
247
  self.metadata = data.fetch(:metadata, nil)
175
248
  self.return_url = data.fetch(:return_url, nil)
176
249
  self.cancel_url = data.fetch(:cancel_url, nil)
@@ -197,15 +270,33 @@ module ProcessOut
197
270
  if data.include? "project"
198
271
  self.project = data["project"]
199
272
  end
273
+ if data.include? "project_id"
274
+ self.project_id = data["project_id"]
275
+ end
200
276
  if data.include? "transaction"
201
277
  self.transaction = data["transaction"]
202
278
  end
279
+ if data.include? "transaction_id"
280
+ self.transaction_id = data["transaction_id"]
281
+ end
203
282
  if data.include? "customer"
204
283
  self.customer = data["customer"]
205
284
  end
285
+ if data.include? "customer_id"
286
+ self.customer_id = data["customer_id"]
287
+ end
206
288
  if data.include? "subscription"
207
289
  self.subscription = data["subscription"]
208
290
  end
291
+ if data.include? "subscription_id"
292
+ self.subscription_id = data["subscription_id"]
293
+ end
294
+ if data.include? "token"
295
+ self.token = data["token"]
296
+ end
297
+ if data.include? "token_id"
298
+ self.token_id = data["token_id"]
299
+ end
209
300
  if data.include? "details"
210
301
  self.details = data["details"]
211
302
  end
@@ -215,6 +306,12 @@ module ProcessOut
215
306
  if data.include? "name"
216
307
  self.name = data["name"]
217
308
  end
309
+ if data.include? "amount"
310
+ self.amount = data["amount"]
311
+ end
312
+ if data.include? "currency"
313
+ self.currency = data["currency"]
314
+ end
218
315
  if data.include? "statement_descriptor"
219
316
  self.statement_descriptor = data["statement_descriptor"]
220
317
  end
@@ -230,12 +327,6 @@ module ProcessOut
230
327
  if data.include? "statement_descriptor_url"
231
328
  self.statement_descriptor_url = data["statement_descriptor_url"]
232
329
  end
233
- if data.include? "amount"
234
- self.amount = data["amount"]
235
- end
236
- if data.include? "currency"
237
- self.currency = data["currency"]
238
- end
239
330
  if data.include? "metadata"
240
331
  self.metadata = data["metadata"]
241
332
  end
@@ -264,19 +355,25 @@ module ProcessOut
264
355
  end
265
356
  self.id = data.fetch(:id, self.id)
266
357
  self.project = data.fetch(:project, self.project)
358
+ self.project_id = data.fetch(:project_id, self.project_id)
267
359
  self.transaction = data.fetch(:transaction, self.transaction)
360
+ self.transaction_id = data.fetch(:transaction_id, self.transaction_id)
268
361
  self.customer = data.fetch(:customer, self.customer)
362
+ self.customer_id = data.fetch(:customer_id, self.customer_id)
269
363
  self.subscription = data.fetch(:subscription, self.subscription)
364
+ self.subscription_id = data.fetch(:subscription_id, self.subscription_id)
365
+ self.token = data.fetch(:token, self.token)
366
+ self.token_id = data.fetch(:token_id, self.token_id)
270
367
  self.details = data.fetch(:details, self.details)
271
368
  self.url = data.fetch(:url, self.url)
272
369
  self.name = data.fetch(:name, self.name)
370
+ self.amount = data.fetch(:amount, self.amount)
371
+ self.currency = data.fetch(:currency, self.currency)
273
372
  self.statement_descriptor = data.fetch(:statement_descriptor, self.statement_descriptor)
274
373
  self.statement_descriptor_phone = data.fetch(:statement_descriptor_phone, self.statement_descriptor_phone)
275
374
  self.statement_descriptor_city = data.fetch(:statement_descriptor_city, self.statement_descriptor_city)
276
375
  self.statement_descriptor_company = data.fetch(:statement_descriptor_company, self.statement_descriptor_company)
277
376
  self.statement_descriptor_url = data.fetch(:statement_descriptor_url, self.statement_descriptor_url)
278
- self.amount = data.fetch(:amount, self.amount)
279
- self.currency = data.fetch(:currency, self.currency)
280
377
  self.metadata = data.fetch(:metadata, self.metadata)
281
378
  self.return_url = data.fetch(:return_url, self.return_url)
282
379
  self.cancel_url = data.fetch(:cancel_url, self.cancel_url)
@@ -296,7 +393,6 @@ module ProcessOut
296
393
  request = Request.new(@client)
297
394
  path = "/invoices/" + CGI.escape(@id) + "/authorize"
298
395
  data = {
299
- "authorize_only" => options.fetch(:authorize_only, nil),
300
396
  "synchronous" => options.fetch(:synchronous, nil),
301
397
  "source" => source
302
398
  }
@@ -476,6 +572,7 @@ module ProcessOut
476
572
  request = Request.new(@client)
477
573
  path = "/invoices"
478
574
  data = {
575
+ "customer_id" => @customer_id,
479
576
  "name" => @name,
480
577
  "amount" => @amount,
481
578
  "currency" => @currency,
@@ -487,47 +584,7 @@ module ProcessOut
487
584
  "statement_descriptor_company" => @statement_descriptor_company,
488
585
  "statement_descriptor_url" => @statement_descriptor_url,
489
586
  "return_url" => @return_url,
490
- "cancel_url" => @cancel_url,
491
- "customer_id" => options.fetch(:customer_id, nil)
492
- }
493
-
494
- response = Response.new(request.post(path, data, options))
495
- return_values = Array.new
496
-
497
- body = response.body
498
- body = body["invoice"]
499
-
500
-
501
- return_values.push(self.fill_with_data(body))
502
-
503
-
504
-
505
- return_values[0]
506
- end
507
-
508
- # Create a new invoice for the given customer ID.
509
- # Params:
510
- # +customer_id+:: ID of the customer
511
- # +options+:: +Hash+ of options
512
- def create_for_customer(customer_id, options = {})
513
- self.prefill(options)
514
-
515
- request = Request.new(@client)
516
- path = "/invoices"
517
- data = {
518
- "name" => @name,
519
- "amount" => @amount,
520
- "currency" => @currency,
521
- "metadata" => @metadata,
522
- "details" => @details,
523
- "statement_descriptor" => @statement_descriptor,
524
- "statement_descriptor_phone" => @statement_descriptor_phone,
525
- "statement_descriptor_city" => @statement_descriptor_city,
526
- "statement_descriptor_company" => @statement_descriptor_company,
527
- "statement_descriptor_url" => @statement_descriptor_url,
528
- "return_url" => @return_url,
529
- "cancel_url" => @cancel_url,
530
- "customer_id" => customer_id
587
+ "cancel_url" => @cancel_url
531
588
  }
532
589
 
533
590
  response = Response.new(request.post(path, data, options))
@@ -7,11 +7,17 @@ require "processout/networking/response"
7
7
  module ProcessOut
8
8
  class InvoiceDetail
9
9
 
10
+ attr_reader :name
10
11
  attr_reader :type
11
12
  attr_reader :amount
13
+ attr_reader :quantity
12
14
  attr_reader :metadata
13
15
 
14
16
 
17
+ def name=(val)
18
+ @name = val
19
+ end
20
+
15
21
  def type=(val)
16
22
  @type = val
17
23
  end
@@ -20,6 +26,10 @@ module ProcessOut
20
26
  @amount = val
21
27
  end
22
28
 
29
+ def quantity=(val)
30
+ @quantity = val
31
+ end
32
+
23
33
  def metadata=(val)
24
34
  @metadata = val
25
35
  end
@@ -32,8 +42,10 @@ module ProcessOut
32
42
  def initialize(client, data = {})
33
43
  @client = client
34
44
 
45
+ self.name = data.fetch(:name, nil)
35
46
  self.type = data.fetch(:type, nil)
36
47
  self.amount = data.fetch(:amount, nil)
48
+ self.quantity = data.fetch(:quantity, nil)
37
49
  self.metadata = data.fetch(:metadata, nil)
38
50
 
39
51
  end
@@ -50,12 +62,18 @@ module ProcessOut
50
62
  if data.nil?
51
63
  return self
52
64
  end
65
+ if data.include? "name"
66
+ self.name = data["name"]
67
+ end
53
68
  if data.include? "type"
54
69
  self.type = data["type"]
55
70
  end
56
71
  if data.include? "amount"
57
72
  self.amount = data["amount"]
58
73
  end
74
+ if data.include? "quantity"
75
+ self.quantity = data["quantity"]
76
+ end
59
77
  if data.include? "metadata"
60
78
  self.metadata = data["metadata"]
61
79
  end
@@ -70,8 +88,10 @@ module ProcessOut
70
88
  if data.nil?
71
89
  return self
72
90
  end
91
+ self.name = data.fetch(:name, self.name)
73
92
  self.type = data.fetch(:type, self.type)
74
93
  self.amount = data.fetch(:amount, self.amount)
94
+ self.quantity = data.fetch(:quantity, self.quantity)
75
95
  self.metadata = data.fetch(:metadata, self.metadata)
76
96
 
77
97
  self
@@ -12,7 +12,7 @@ module ProcessOut
12
12
  def apply_headers(req, options)
13
13
  req.basic_auth @client.project_id, @client.project_secret
14
14
  req.content_type = "application/json"
15
- req["API-Version"] = "1.3.0.0"
15
+ req["API-Version"] = "1.4.0.0"
16
16
  req["User-Agent"] = "utf-8"
17
17
 
18
18
  unless options.nil?
@@ -28,7 +28,6 @@ module ProcessOut
28
28
  data["expand"] = options.fetch(:expand, [])
29
29
  data["filter"] = options.fetch(:filter, "")
30
30
  data["limit"] = options.fetch(:limit, "")
31
- data["page"] = options.fetch(:page, "")
32
31
  data["end_before"] = options.fetch(:end_before, "")
33
32
  data["start_after"] = options.fetch(:start_after, "")
34
33
  end
@@ -9,6 +9,7 @@ module ProcessOut
9
9
 
10
10
  attr_reader :id
11
11
  attr_reader :project
12
+ attr_reader :project_id
12
13
  attr_reader :url
13
14
  attr_reader :name
14
15
  attr_reader :amount
@@ -27,6 +28,11 @@ module ProcessOut
27
28
  end
28
29
 
29
30
  def project=(val)
31
+ if val.nil?
32
+ @project = val
33
+ return
34
+ end
35
+
30
36
  if val.instance_of? Project
31
37
  @project = val
32
38
  else
@@ -37,6 +43,10 @@ module ProcessOut
37
43
 
38
44
  end
39
45
 
46
+ def project_id=(val)
47
+ @project_id = val
48
+ end
49
+
40
50
  def url=(val)
41
51
  @url = val
42
52
  end
@@ -91,6 +101,7 @@ module ProcessOut
91
101
 
92
102
  self.id = data.fetch(:id, nil)
93
103
  self.project = data.fetch(:project, nil)
104
+ self.project_id = data.fetch(:project_id, nil)
94
105
  self.url = data.fetch(:url, nil)
95
106
  self.name = data.fetch(:name, nil)
96
107
  self.amount = data.fetch(:amount, nil)
@@ -123,6 +134,9 @@ module ProcessOut
123
134
  if data.include? "project"
124
135
  self.project = data["project"]
125
136
  end
137
+ if data.include? "project_id"
138
+ self.project_id = data["project_id"]
139
+ end
126
140
  if data.include? "url"
127
141
  self.url = data["url"]
128
142
  end
@@ -169,6 +183,7 @@ module ProcessOut
169
183
  end
170
184
  self.id = data.fetch(:id, self.id)
171
185
  self.project = data.fetch(:project, self.project)
186
+ self.project_id = data.fetch(:project_id, self.project_id)
172
187
  self.url = data.fetch(:url, self.url)
173
188
  self.name = data.fetch(:name, self.name)
174
189
  self.amount = data.fetch(:amount, self.amount)