processout 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +9 -0
- data/.rspec +2 -0
- data/.travis.yml +5 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +21 -0
- data/README.md +10 -0
- data/Rakefile +6 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/deploy.sh +25 -0
- data/lib/processout.rb +130 -0
- data/lib/processout/activity.rb +147 -0
- data/lib/processout/authorization_request.rb +248 -0
- data/lib/processout/card.rb +156 -0
- data/lib/processout/coupon.rb +284 -0
- data/lib/processout/customer.rb +418 -0
- data/lib/processout/customer_action.rb +50 -0
- data/lib/processout/discount.rb +217 -0
- data/lib/processout/errors/authentication_error.rb +7 -0
- data/lib/processout/errors/generic_error.rb +7 -0
- data/lib/processout/errors/internal_error.rb +7 -0
- data/lib/processout/errors/notfound_error.rb +7 -0
- data/lib/processout/errors/validation_error.rb +7 -0
- data/lib/processout/event.rb +176 -0
- data/lib/processout/gateway.rb +104 -0
- data/lib/processout/gateway_configuration.rb +91 -0
- data/lib/processout/invoice.rb +457 -0
- data/lib/processout/networking/request.rb +95 -0
- data/lib/processout/networking/response.rb +61 -0
- data/lib/processout/plan.rb +280 -0
- data/lib/processout/product.rb +313 -0
- data/lib/processout/project.rb +105 -0
- data/lib/processout/refund.rb +161 -0
- data/lib/processout/subscription.rb +633 -0
- data/lib/processout/token.rb +167 -0
- data/lib/processout/transaction.rb +302 -0
- data/lib/processout/version.rb +3 -0
- data/lib/processout/webhook.rb +154 -0
- data/processout.gemspec +26 -0
- metadata +125 -0
@@ -0,0 +1,104 @@
|
|
1
|
+
# The content of this file was automatically generated
|
2
|
+
|
3
|
+
require "cgi"
|
4
|
+
require "processout/networking/request"
|
5
|
+
require "processout/networking/response"
|
6
|
+
|
7
|
+
module ProcessOut
|
8
|
+
class Gateway
|
9
|
+
|
10
|
+
attr_reader :id
|
11
|
+
attr_reader :name
|
12
|
+
attr_reader :display_name
|
13
|
+
attr_reader :logo_url
|
14
|
+
attr_reader :url
|
15
|
+
attr_reader :flows
|
16
|
+
attr_reader :tags
|
17
|
+
attr_reader :description
|
18
|
+
|
19
|
+
|
20
|
+
def id=(val)
|
21
|
+
@id = val
|
22
|
+
end
|
23
|
+
|
24
|
+
def name=(val)
|
25
|
+
@name = val
|
26
|
+
end
|
27
|
+
|
28
|
+
def display_name=(val)
|
29
|
+
@display_name = val
|
30
|
+
end
|
31
|
+
|
32
|
+
def logo_url=(val)
|
33
|
+
@logo_url = val
|
34
|
+
end
|
35
|
+
|
36
|
+
def url=(val)
|
37
|
+
@url = val
|
38
|
+
end
|
39
|
+
|
40
|
+
def flows=(val)
|
41
|
+
@flows = val
|
42
|
+
end
|
43
|
+
|
44
|
+
def tags=(val)
|
45
|
+
@tags = val
|
46
|
+
end
|
47
|
+
|
48
|
+
def description=(val)
|
49
|
+
@description = val
|
50
|
+
end
|
51
|
+
|
52
|
+
|
53
|
+
# Initializes the Gateway object
|
54
|
+
# Params:
|
55
|
+
# +client+:: +ProcessOut+ client instance
|
56
|
+
def initialize(client)
|
57
|
+
@client = client
|
58
|
+
|
59
|
+
@id = ""
|
60
|
+
@name = ""
|
61
|
+
@display_name = ""
|
62
|
+
@logo_url = ""
|
63
|
+
@url = ""
|
64
|
+
@flows = Array.new
|
65
|
+
@tags = Array.new
|
66
|
+
@description = ""
|
67
|
+
|
68
|
+
end
|
69
|
+
|
70
|
+
# Fills the object with data coming from the API
|
71
|
+
# Params:
|
72
|
+
# +data+:: +Hash+ of data coming from the API
|
73
|
+
def fill_with_data(data)
|
74
|
+
if data.include? "id"
|
75
|
+
@id = data["id"]
|
76
|
+
end
|
77
|
+
if data.include? "name"
|
78
|
+
@name = data["name"]
|
79
|
+
end
|
80
|
+
if data.include? "display_name"
|
81
|
+
@display_name = data["display_name"]
|
82
|
+
end
|
83
|
+
if data.include? "logo_url"
|
84
|
+
@logo_url = data["logo_url"]
|
85
|
+
end
|
86
|
+
if data.include? "url"
|
87
|
+
@url = data["url"]
|
88
|
+
end
|
89
|
+
if data.include? "flows"
|
90
|
+
@flows = data["flows"]
|
91
|
+
end
|
92
|
+
if data.include? "tags"
|
93
|
+
@tags = data["tags"]
|
94
|
+
end
|
95
|
+
if data.include? "description"
|
96
|
+
@description = data["description"]
|
97
|
+
end
|
98
|
+
|
99
|
+
self
|
100
|
+
end
|
101
|
+
|
102
|
+
|
103
|
+
end
|
104
|
+
end
|
@@ -0,0 +1,91 @@
|
|
1
|
+
# The content of this file was automatically generated
|
2
|
+
|
3
|
+
require "cgi"
|
4
|
+
require "processout/networking/request"
|
5
|
+
require "processout/networking/response"
|
6
|
+
|
7
|
+
module ProcessOut
|
8
|
+
class GatewayConfiguration
|
9
|
+
|
10
|
+
attr_reader :id
|
11
|
+
attr_reader :project
|
12
|
+
attr_reader :gateway
|
13
|
+
attr_reader :enabled
|
14
|
+
attr_reader :public_keys
|
15
|
+
|
16
|
+
|
17
|
+
def id=(val)
|
18
|
+
@id = val
|
19
|
+
end
|
20
|
+
|
21
|
+
def project=(val)
|
22
|
+
if val.instance_of? Project
|
23
|
+
@project = val
|
24
|
+
else
|
25
|
+
obj = Project.new(@client)
|
26
|
+
obj.fill_with_data(val)
|
27
|
+
@project = obj
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
|
32
|
+
def gateway=(val)
|
33
|
+
if val.instance_of? Gateway
|
34
|
+
@gateway = val
|
35
|
+
else
|
36
|
+
obj = Gateway.new(@client)
|
37
|
+
obj.fill_with_data(val)
|
38
|
+
@gateway = obj
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
|
43
|
+
def enabled=(val)
|
44
|
+
@enabled = val
|
45
|
+
end
|
46
|
+
|
47
|
+
def public_keys=(val)
|
48
|
+
@public_keys = val
|
49
|
+
end
|
50
|
+
|
51
|
+
|
52
|
+
# Initializes the GatewayConfiguration object
|
53
|
+
# Params:
|
54
|
+
# +client+:: +ProcessOut+ client instance
|
55
|
+
def initialize(client)
|
56
|
+
@client = client
|
57
|
+
|
58
|
+
@id = ""
|
59
|
+
@project = nil
|
60
|
+
@gateway = nil
|
61
|
+
@enabled = false
|
62
|
+
@public_keys = Hash.new
|
63
|
+
|
64
|
+
end
|
65
|
+
|
66
|
+
# Fills the object with data coming from the API
|
67
|
+
# Params:
|
68
|
+
# +data+:: +Hash+ of data coming from the API
|
69
|
+
def fill_with_data(data)
|
70
|
+
if data.include? "id"
|
71
|
+
@id = data["id"]
|
72
|
+
end
|
73
|
+
if data.include? "project"
|
74
|
+
@project = data["project"]
|
75
|
+
end
|
76
|
+
if data.include? "gateway"
|
77
|
+
@gateway = data["gateway"]
|
78
|
+
end
|
79
|
+
if data.include? "enabled"
|
80
|
+
@enabled = data["enabled"]
|
81
|
+
end
|
82
|
+
if data.include? "public_keys"
|
83
|
+
@public_keys = data["public_keys"]
|
84
|
+
end
|
85
|
+
|
86
|
+
self
|
87
|
+
end
|
88
|
+
|
89
|
+
|
90
|
+
end
|
91
|
+
end
|
@@ -0,0 +1,457 @@
|
|
1
|
+
# The content of this file was automatically generated
|
2
|
+
|
3
|
+
require "cgi"
|
4
|
+
require "processout/networking/request"
|
5
|
+
require "processout/networking/response"
|
6
|
+
|
7
|
+
module ProcessOut
|
8
|
+
class Invoice
|
9
|
+
|
10
|
+
attr_reader :id
|
11
|
+
attr_reader :project
|
12
|
+
attr_reader :transaction
|
13
|
+
attr_reader :customer
|
14
|
+
attr_reader :subscription
|
15
|
+
attr_reader :url
|
16
|
+
attr_reader :name
|
17
|
+
attr_reader :amount
|
18
|
+
attr_reader :currency
|
19
|
+
attr_reader :metadata
|
20
|
+
attr_reader :request_email
|
21
|
+
attr_reader :request_shipping
|
22
|
+
attr_reader :return_url
|
23
|
+
attr_reader :cancel_url
|
24
|
+
attr_reader :sandbox
|
25
|
+
attr_reader :created_at
|
26
|
+
|
27
|
+
|
28
|
+
def id=(val)
|
29
|
+
@id = val
|
30
|
+
end
|
31
|
+
|
32
|
+
def project=(val)
|
33
|
+
if val.instance_of? Project
|
34
|
+
@project = val
|
35
|
+
else
|
36
|
+
obj = Project.new(@client)
|
37
|
+
obj.fill_with_data(val)
|
38
|
+
@project = obj
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
|
43
|
+
def transaction=(val)
|
44
|
+
if val.instance_of? Transaction
|
45
|
+
@transaction = val
|
46
|
+
else
|
47
|
+
obj = Transaction.new(@client)
|
48
|
+
obj.fill_with_data(val)
|
49
|
+
@transaction = obj
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
53
|
+
|
54
|
+
def customer=(val)
|
55
|
+
if val.instance_of? Customer
|
56
|
+
@customer = val
|
57
|
+
else
|
58
|
+
obj = Customer.new(@client)
|
59
|
+
obj.fill_with_data(val)
|
60
|
+
@customer = obj
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
64
|
+
|
65
|
+
def subscription=(val)
|
66
|
+
if val.instance_of? Subscription
|
67
|
+
@subscription = val
|
68
|
+
else
|
69
|
+
obj = Subscription.new(@client)
|
70
|
+
obj.fill_with_data(val)
|
71
|
+
@subscription = obj
|
72
|
+
end
|
73
|
+
|
74
|
+
end
|
75
|
+
|
76
|
+
def url=(val)
|
77
|
+
@url = val
|
78
|
+
end
|
79
|
+
|
80
|
+
def name=(val)
|
81
|
+
@name = val
|
82
|
+
end
|
83
|
+
|
84
|
+
def amount=(val)
|
85
|
+
@amount = val
|
86
|
+
end
|
87
|
+
|
88
|
+
def currency=(val)
|
89
|
+
@currency = val
|
90
|
+
end
|
91
|
+
|
92
|
+
def metadata=(val)
|
93
|
+
@metadata = val
|
94
|
+
end
|
95
|
+
|
96
|
+
def request_email=(val)
|
97
|
+
@request_email = val
|
98
|
+
end
|
99
|
+
|
100
|
+
def request_shipping=(val)
|
101
|
+
@request_shipping = val
|
102
|
+
end
|
103
|
+
|
104
|
+
def return_url=(val)
|
105
|
+
@return_url = val
|
106
|
+
end
|
107
|
+
|
108
|
+
def cancel_url=(val)
|
109
|
+
@cancel_url = val
|
110
|
+
end
|
111
|
+
|
112
|
+
def sandbox=(val)
|
113
|
+
@sandbox = val
|
114
|
+
end
|
115
|
+
|
116
|
+
def created_at=(val)
|
117
|
+
@created_at = val
|
118
|
+
end
|
119
|
+
|
120
|
+
|
121
|
+
# Initializes the Invoice object
|
122
|
+
# Params:
|
123
|
+
# +client+:: +ProcessOut+ client instance
|
124
|
+
def initialize(client)
|
125
|
+
@client = client
|
126
|
+
|
127
|
+
@id = ""
|
128
|
+
@project = nil
|
129
|
+
@transaction = nil
|
130
|
+
@customer = nil
|
131
|
+
@subscription = nil
|
132
|
+
@url = ""
|
133
|
+
@name = ""
|
134
|
+
@amount = ""
|
135
|
+
@currency = ""
|
136
|
+
@metadata = Hash.new
|
137
|
+
@request_email = false
|
138
|
+
@request_shipping = false
|
139
|
+
@return_url = ""
|
140
|
+
@cancel_url = ""
|
141
|
+
@sandbox = false
|
142
|
+
@created_at = ""
|
143
|
+
|
144
|
+
end
|
145
|
+
|
146
|
+
# Fills the object with data coming from the API
|
147
|
+
# Params:
|
148
|
+
# +data+:: +Hash+ of data coming from the API
|
149
|
+
def fill_with_data(data)
|
150
|
+
if data.include? "id"
|
151
|
+
@id = data["id"]
|
152
|
+
end
|
153
|
+
if data.include? "project"
|
154
|
+
@project = data["project"]
|
155
|
+
end
|
156
|
+
if data.include? "transaction"
|
157
|
+
@transaction = data["transaction"]
|
158
|
+
end
|
159
|
+
if data.include? "customer"
|
160
|
+
@customer = data["customer"]
|
161
|
+
end
|
162
|
+
if data.include? "subscription"
|
163
|
+
@subscription = data["subscription"]
|
164
|
+
end
|
165
|
+
if data.include? "url"
|
166
|
+
@url = data["url"]
|
167
|
+
end
|
168
|
+
if data.include? "name"
|
169
|
+
@name = data["name"]
|
170
|
+
end
|
171
|
+
if data.include? "amount"
|
172
|
+
@amount = data["amount"]
|
173
|
+
end
|
174
|
+
if data.include? "currency"
|
175
|
+
@currency = data["currency"]
|
176
|
+
end
|
177
|
+
if data.include? "metadata"
|
178
|
+
@metadata = data["metadata"]
|
179
|
+
end
|
180
|
+
if data.include? "request_email"
|
181
|
+
@request_email = data["request_email"]
|
182
|
+
end
|
183
|
+
if data.include? "request_shipping"
|
184
|
+
@request_shipping = data["request_shipping"]
|
185
|
+
end
|
186
|
+
if data.include? "return_url"
|
187
|
+
@return_url = data["return_url"]
|
188
|
+
end
|
189
|
+
if data.include? "cancel_url"
|
190
|
+
@cancel_url = data["cancel_url"]
|
191
|
+
end
|
192
|
+
if data.include? "sandbox"
|
193
|
+
@sandbox = data["sandbox"]
|
194
|
+
end
|
195
|
+
if data.include? "created_at"
|
196
|
+
@created_at = data["created_at"]
|
197
|
+
end
|
198
|
+
|
199
|
+
self
|
200
|
+
end
|
201
|
+
|
202
|
+
# Authorize the invoice using the given source (customer or token)
|
203
|
+
# Params:
|
204
|
+
# +source+:: Source used to authorization the payment. Can be a card, a token or a gateway request
|
205
|
+
# +options+:: +Hash+ of options
|
206
|
+
def authorize(source, options = nil)
|
207
|
+
request = Request.new(@client)
|
208
|
+
path = "/invoices/" + CGI.escape(@id) + "/authorize"
|
209
|
+
data = {
|
210
|
+
'source': source
|
211
|
+
}
|
212
|
+
|
213
|
+
response = Response.new(request.post(path, data, options))
|
214
|
+
return_values = Array.new
|
215
|
+
|
216
|
+
body = response.body
|
217
|
+
body = body["transaction"]
|
218
|
+
transaction = Transaction(self._client)
|
219
|
+
return_values.push(transaction.fill_with_data(body))
|
220
|
+
|
221
|
+
|
222
|
+
return_values[0]
|
223
|
+
end
|
224
|
+
|
225
|
+
# Capture the invoice using the given source (customer or token)
|
226
|
+
# Params:
|
227
|
+
# +source+:: Source used to authorization the payment. Can be a card, a token or a gateway request
|
228
|
+
# +options+:: +Hash+ of options
|
229
|
+
def capture(source, options = nil)
|
230
|
+
request = Request.new(@client)
|
231
|
+
path = "/invoices/" + CGI.escape(@id) + "/capture"
|
232
|
+
data = {
|
233
|
+
'source': source
|
234
|
+
}
|
235
|
+
|
236
|
+
response = Response.new(request.post(path, data, options))
|
237
|
+
return_values = Array.new
|
238
|
+
|
239
|
+
body = response.body
|
240
|
+
body = body["transaction"]
|
241
|
+
transaction = Transaction(self._client)
|
242
|
+
return_values.push(transaction.fill_with_data(body))
|
243
|
+
|
244
|
+
|
245
|
+
return_values[0]
|
246
|
+
end
|
247
|
+
|
248
|
+
# Get the customer linked to the invoice.
|
249
|
+
# Params:
|
250
|
+
# +options+:: +Hash+ of options
|
251
|
+
def customer(options = nil)
|
252
|
+
request = Request.new(@client)
|
253
|
+
path = "/invoices/" + CGI.escape(@id) + "/customers"
|
254
|
+
data = {
|
255
|
+
|
256
|
+
}
|
257
|
+
|
258
|
+
response = Response.new(request.get(path, data, options))
|
259
|
+
return_values = Array.new
|
260
|
+
|
261
|
+
body = response.body
|
262
|
+
body = body["customer"]
|
263
|
+
customer = Customer(self._client)
|
264
|
+
return_values.push(customer.fill_with_data(body))
|
265
|
+
|
266
|
+
|
267
|
+
return_values[0]
|
268
|
+
end
|
269
|
+
|
270
|
+
# Assign a customer to the invoice.
|
271
|
+
# Params:
|
272
|
+
# +customer_id+:: ID of the customer to be linked to the invoice
|
273
|
+
# +options+:: +Hash+ of options
|
274
|
+
def assign_customer(customer_id, options = nil)
|
275
|
+
request = Request.new(@client)
|
276
|
+
path = "/invoices/" + CGI.escape(@id) + "/customers"
|
277
|
+
data = {
|
278
|
+
'customer_id': customer_id
|
279
|
+
}
|
280
|
+
|
281
|
+
response = Response.new(request.post(path, data, options))
|
282
|
+
return_values = Array.new
|
283
|
+
|
284
|
+
body = response.body
|
285
|
+
body = body["customer"]
|
286
|
+
customer = Customer(self._client)
|
287
|
+
return_values.push(customer.fill_with_data(body))
|
288
|
+
|
289
|
+
|
290
|
+
return_values[0]
|
291
|
+
end
|
292
|
+
|
293
|
+
# Get the transaction of the invoice.
|
294
|
+
# Params:
|
295
|
+
# +options+:: +Hash+ of options
|
296
|
+
def transaction(options = nil)
|
297
|
+
request = Request.new(@client)
|
298
|
+
path = "/invoices/" + CGI.escape(@id) + "/transactions"
|
299
|
+
data = {
|
300
|
+
|
301
|
+
}
|
302
|
+
|
303
|
+
response = Response.new(request.get(path, data, options))
|
304
|
+
return_values = Array.new
|
305
|
+
|
306
|
+
body = response.body
|
307
|
+
body = body["transaction"]
|
308
|
+
transaction = Transaction(self._client)
|
309
|
+
return_values.push(transaction.fill_with_data(body))
|
310
|
+
|
311
|
+
|
312
|
+
return_values[0]
|
313
|
+
end
|
314
|
+
|
315
|
+
# Void the invoice
|
316
|
+
# Params:
|
317
|
+
# +options+:: +Hash+ of options
|
318
|
+
def void(options = nil)
|
319
|
+
request = Request.new(@client)
|
320
|
+
path = "/invoices/" + CGI.escape(@id) + "/void"
|
321
|
+
data = {
|
322
|
+
|
323
|
+
}
|
324
|
+
|
325
|
+
response = Response.new(request.post(path, data, options))
|
326
|
+
return_values = Array.new
|
327
|
+
|
328
|
+
body = response.body
|
329
|
+
body = body["transaction"]
|
330
|
+
transaction = Transaction(self._client)
|
331
|
+
return_values.push(transaction.fill_with_data(body))
|
332
|
+
|
333
|
+
|
334
|
+
return_values[0]
|
335
|
+
end
|
336
|
+
|
337
|
+
# Get all the invoices.
|
338
|
+
# Params:
|
339
|
+
# +options+:: +Hash+ of options
|
340
|
+
def all(options = nil)
|
341
|
+
request = Request.new(@client)
|
342
|
+
path = "/invoices"
|
343
|
+
data = {
|
344
|
+
|
345
|
+
}
|
346
|
+
|
347
|
+
response = Response.new(request.get(path, data, options))
|
348
|
+
return_values = Array.new
|
349
|
+
|
350
|
+
a = Array.new
|
351
|
+
body = response.body
|
352
|
+
for v in body['invoices']
|
353
|
+
tmp = Invoice(@client)
|
354
|
+
tmp.fill_with_data(v)
|
355
|
+
a.push(tmp)
|
356
|
+
end
|
357
|
+
|
358
|
+
return_values.push(a)
|
359
|
+
|
360
|
+
|
361
|
+
|
362
|
+
return_values[0]
|
363
|
+
end
|
364
|
+
|
365
|
+
# Create a new invoice.
|
366
|
+
# Params:
|
367
|
+
# +options+:: +Hash+ of options
|
368
|
+
def create(options = nil)
|
369
|
+
request = Request.new(@client)
|
370
|
+
path = "/invoices"
|
371
|
+
data = {
|
372
|
+
"name": @name,
|
373
|
+
"amount": @amount,
|
374
|
+
"currency": @currency,
|
375
|
+
"metadata": @metadata,
|
376
|
+
"request_email": @request_email,
|
377
|
+
"request_shipping": @request_shipping,
|
378
|
+
"return_url": @return_url,
|
379
|
+
"cancel_url": @cancel_url
|
380
|
+
}
|
381
|
+
|
382
|
+
response = Response.new(request.post(path, data, options))
|
383
|
+
return_values = Array.new
|
384
|
+
|
385
|
+
body = response.body
|
386
|
+
body = body["invoice"]
|
387
|
+
|
388
|
+
|
389
|
+
return_values.push(self.fill_with_data(body))
|
390
|
+
|
391
|
+
|
392
|
+
|
393
|
+
return_values[0]
|
394
|
+
end
|
395
|
+
|
396
|
+
# Create a new invoice for the given customer ID.
|
397
|
+
# Params:
|
398
|
+
# +customer_id+:: ID of the customer
|
399
|
+
# +options+:: +Hash+ of options
|
400
|
+
def create_for_customer(customer_id, options = nil)
|
401
|
+
request = Request.new(@client)
|
402
|
+
path = "/invoices"
|
403
|
+
data = {
|
404
|
+
"name": @name,
|
405
|
+
"amount": @amount,
|
406
|
+
"currency": @currency,
|
407
|
+
"metadata": @metadata,
|
408
|
+
"request_email": @request_email,
|
409
|
+
"request_shipping": @request_shipping,
|
410
|
+
"return_url": @return_url,
|
411
|
+
"cancel_url": @cancel_url,
|
412
|
+
'customer_id': customer_id
|
413
|
+
}
|
414
|
+
|
415
|
+
response = Response.new(request.post(path, data, options))
|
416
|
+
return_values = Array.new
|
417
|
+
|
418
|
+
body = response.body
|
419
|
+
body = body["invoice"]
|
420
|
+
|
421
|
+
|
422
|
+
return_values.push(self.fill_with_data(body))
|
423
|
+
|
424
|
+
|
425
|
+
|
426
|
+
return_values[0]
|
427
|
+
end
|
428
|
+
|
429
|
+
# Find an invoice by its ID.
|
430
|
+
# Params:
|
431
|
+
# +invoice_id+:: ID of the invoice
|
432
|
+
# +options+:: +Hash+ of options
|
433
|
+
def find(invoice_id, options = nil)
|
434
|
+
request = Request.new(@client)
|
435
|
+
path = "/invoices/" + CGI.escape(invoice_id) + ""
|
436
|
+
data = {
|
437
|
+
|
438
|
+
}
|
439
|
+
|
440
|
+
response = Response.new(request.get(path, data, options))
|
441
|
+
return_values = Array.new
|
442
|
+
|
443
|
+
body = response.body
|
444
|
+
body = body["invoice"]
|
445
|
+
|
446
|
+
|
447
|
+
obj = Invoice.new(@client)
|
448
|
+
return_values.push(obj.fill_with_data(body))
|
449
|
+
|
450
|
+
|
451
|
+
|
452
|
+
return_values[0]
|
453
|
+
end
|
454
|
+
|
455
|
+
|
456
|
+
end
|
457
|
+
end
|