twocheckout 0.4.0 → 0.5.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 +5 -5
- data/lib/twocheckout.rb +11 -13
- data/lib/twocheckout/api.rb +3 -5
- data/lib/twocheckout/checkout.rb +0 -4
- data/lib/twocheckout/sale.rb +0 -7
- data/lib/twocheckout/version.rb +1 -1
- data/test/minitest_helper.rb +5 -8
- data/test/twocheckout_test.rb +22 -83
- data/twocheckout.gemspec +5 -5
- metadata +11 -11
- data/lib/twocheckout/coupon.rb +0 -41
- data/lib/twocheckout/option.rb +0 -57
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 6ae819e29f87aa59ae4f4756f06d8e1cdccba403f504f4e2eafd5e3e86ef64c3
|
4
|
+
data.tar.gz: dbe2d6eb71fb17e18d37585f2183976225f1da6d3849d09834f1a727cc4304fb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9957625ac830b0e2b4be232e449dd29cb9bed844526a943a3aacc0bed878eb0f5eea1b9b95329c7a10d23ca963e486d173d2801ffb623e1855c47bb6579d9f02
|
7
|
+
data.tar.gz: 7001057a88943e0c38900c38893bef7e1b9638768285a71848f240381b9c1ed6492e75df4680a5273297026d665cd60d6d550e497bca4b249ccc42412856467c
|
data/lib/twocheckout.rb
CHANGED
@@ -1,13 +1,11 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
6
|
-
require
|
7
|
-
require
|
8
|
-
require
|
9
|
-
require
|
10
|
-
require
|
11
|
-
require
|
12
|
-
require "twocheckout/checkout"
|
13
|
-
require "twocheckout/twocheckout_error"
|
1
|
+
require 'twocheckout/version'
|
2
|
+
require 'twocheckout/api'
|
3
|
+
require 'twocheckout/hash_object'
|
4
|
+
require 'twocheckout/validate_response'
|
5
|
+
require 'twocheckout/company'
|
6
|
+
require 'twocheckout/lineitem'
|
7
|
+
require 'twocheckout/invoice'
|
8
|
+
require 'twocheckout/sale'
|
9
|
+
require 'twocheckout/product'
|
10
|
+
require 'twocheckout/checkout'
|
11
|
+
require 'twocheckout/twocheckout_error'
|
data/lib/twocheckout/api.rb
CHANGED
@@ -3,16 +3,14 @@ require 'json'
|
|
3
3
|
|
4
4
|
module Twocheckout
|
5
5
|
class API
|
6
|
-
PROD_BASE = 'https://www.2checkout.com'
|
7
|
-
|
8
|
-
API_VERSION = '1'
|
6
|
+
PROD_BASE = 'https://www.2checkout.com'.freeze
|
7
|
+
API_VERSION = '1'.freeze
|
9
8
|
|
10
9
|
def self.credentials=(opts)
|
11
10
|
@username = opts[:username]
|
12
11
|
@password = opts[:password]
|
13
12
|
@private_key = opts[:private_key]
|
14
13
|
@seller_id = opts[:seller_id]
|
15
|
-
@sandbox = opts[:sandbox]
|
16
14
|
end
|
17
15
|
|
18
16
|
def self.request(http_method, api_call, params = nil)
|
@@ -33,7 +31,7 @@ module Twocheckout
|
|
33
31
|
private
|
34
32
|
|
35
33
|
def self.set_opts(http_method, api_call, params = null)
|
36
|
-
url =
|
34
|
+
url = PROD_BASE
|
37
35
|
if api_call == 'authService'
|
38
36
|
url += '/checkout/api/' + API_VERSION + '/' + @seller_id + '/rs/' + api_call
|
39
37
|
params['sellerId'] = @seller_id
|
data/lib/twocheckout/checkout.rb
CHANGED
@@ -3,10 +3,6 @@ module Twocheckout
|
|
3
3
|
|
4
4
|
@checkout_url = 'https://www.2checkout.com/checkout/purchase'
|
5
5
|
|
6
|
-
def self.sandbox(sandbox)
|
7
|
-
@checkout_url = sandbox ? 'https://sandbox.2checkout.com/checkout/purchase' : @checkout_url;
|
8
|
-
end
|
9
|
-
|
10
6
|
def self.form(params={}, button_text='Proceed to Checkout')
|
11
7
|
@form = "<form id=\"2checkout\" action=\"#{@checkout_url}\" method=\"post\">\n";
|
12
8
|
params.each do |k,v|
|
data/lib/twocheckout/sale.rb
CHANGED
@@ -75,13 +75,6 @@ module Twocheckout
|
|
75
75
|
Twocheckout::API.request(:post, 'sales/mark_shipped', opts)
|
76
76
|
end
|
77
77
|
|
78
|
-
#
|
79
|
-
# Reauthorize sale
|
80
|
-
#
|
81
|
-
def reauth
|
82
|
-
Twocheckout::API.request(:post, 'sales/reauth', sale_id: self.sale_id)
|
83
|
-
end
|
84
|
-
|
85
78
|
#
|
86
79
|
# Get sale list in an array
|
87
80
|
#
|
data/lib/twocheckout/version.rb
CHANGED
data/test/minitest_helper.rb
CHANGED
@@ -2,11 +2,8 @@ require "minitest/autorun"
|
|
2
2
|
require "twocheckout"
|
3
3
|
|
4
4
|
Twocheckout::API.credentials = {
|
5
|
-
:username => '
|
6
|
-
:password => '
|
7
|
-
:seller_id => '
|
8
|
-
:private_key => '
|
9
|
-
|
10
|
-
}
|
11
|
-
|
12
|
-
Twocheckout::Checkout.sandbox(true);
|
5
|
+
:username => 'CREDENTIALS HERE',
|
6
|
+
:password => 'CREDENTIALS HERE',
|
7
|
+
:seller_id => 'CREDENTIALS HERE',
|
8
|
+
:private_key => 'CREDENTIALS HERE',
|
9
|
+
}
|
data/test/twocheckout_test.rb
CHANGED
@@ -7,14 +7,14 @@ describe Twocheckout::Sale do
|
|
7
7
|
|
8
8
|
#retrieve sale
|
9
9
|
it "Sale retrieve returns sale" do
|
10
|
-
sale = Twocheckout::Sale.find(:sale_id =>
|
11
|
-
assert_equal('
|
10
|
+
sale = Twocheckout::Sale.find(:sale_id => 250335346812)
|
11
|
+
assert_equal('250335346812', sale.sale_id)
|
12
12
|
end
|
13
13
|
|
14
14
|
#retrieve invoice
|
15
15
|
it "Sale retrieve returns invoice" do
|
16
|
-
invoice = Twocheckout::Sale.find({:invoice_id =>
|
17
|
-
assert_equal('
|
16
|
+
invoice = Twocheckout::Sale.find({:invoice_id => 250334725631})
|
17
|
+
assert_equal('250334725631', invoice.invoice_id)
|
18
18
|
end
|
19
19
|
|
20
20
|
#retrieve sale list
|
@@ -26,40 +26,40 @@ describe Twocheckout::Sale do
|
|
26
26
|
#refund sale
|
27
27
|
it "Refunding a refunded sale returns Twocheckout::TwocheckoutError" do
|
28
28
|
begin
|
29
|
-
sale = Twocheckout::Sale.find(:sale_id =>
|
29
|
+
sale = Twocheckout::Sale.find(:sale_id => 250335365202)
|
30
30
|
sale.refund!({:comment => "test refund", :category => 1})
|
31
31
|
rescue Twocheckout::TwocheckoutError => e
|
32
|
-
assert_equal("
|
32
|
+
assert_equal("Amount greater than remaining balance on invoice.", e.message)
|
33
33
|
end
|
34
34
|
end
|
35
35
|
|
36
36
|
#refund invoice
|
37
37
|
it "Refunding a refunded invoice returns Twocheckout::TwocheckoutError" do
|
38
38
|
begin
|
39
|
-
sale = Twocheckout::Sale.find(:sale_id =>
|
39
|
+
sale = Twocheckout::Sale.find(:sale_id => 250335365202)
|
40
40
|
invoice = sale.invoices.first
|
41
41
|
invoice.refund!({:comment => "test refund", :category => 1})
|
42
42
|
rescue Twocheckout::TwocheckoutError => e
|
43
|
-
assert_equal("
|
43
|
+
assert_equal("Amount greater than remaining balance on invoice.", e.message)
|
44
44
|
end
|
45
45
|
end
|
46
46
|
|
47
47
|
#refund lineitem
|
48
48
|
it "Refunding a refunded lineitem returns Twocheckout::TwocheckoutError" do
|
49
49
|
begin
|
50
|
-
sale = Twocheckout::Sale.find(:sale_id =>
|
50
|
+
sale = Twocheckout::Sale.find(:sale_id => 250192108517)
|
51
51
|
first_invoice = sale.invoices.first
|
52
52
|
last_lineitem = first_invoice.lineitems.last
|
53
53
|
last_lineitem.refund!({:comment => "test refund", :category => 1})
|
54
54
|
rescue Twocheckout::TwocheckoutError => e
|
55
|
-
assert_equal("
|
55
|
+
assert_equal("Lineitem amount greater than remaining balance on invoice.", e.message)
|
56
56
|
end
|
57
57
|
end
|
58
58
|
|
59
59
|
#stop recurring lineitem
|
60
60
|
it "Stopping a stopped recurring lineitem returns Twocheckout::TwocheckoutError" do
|
61
61
|
begin
|
62
|
-
sale = Twocheckout::Sale.find(:sale_id =>
|
62
|
+
sale = Twocheckout::Sale.find(:sale_id => 250192108517)
|
63
63
|
result = sale.stop_recurring!
|
64
64
|
assert_equal(result, [])
|
65
65
|
rescue Twocheckout::TwocheckoutError => e
|
@@ -70,7 +70,7 @@ describe Twocheckout::Sale do
|
|
70
70
|
#stop recurring sale
|
71
71
|
it "Stopping a stopped recurring sale returns Twocheckout::TwocheckoutError" do
|
72
72
|
begin
|
73
|
-
sale = Twocheckout::Sale.find(:sale_id =>
|
73
|
+
sale = Twocheckout::Sale.find(:sale_id => 250192108517)
|
74
74
|
last_invoice = sale.invoices.last
|
75
75
|
last_lineitem = last_invoice.lineitems.last
|
76
76
|
last_lineitem.stop_recurring!
|
@@ -81,7 +81,7 @@ describe Twocheckout::Sale do
|
|
81
81
|
|
82
82
|
#create comment
|
83
83
|
it "Creates a sale comment" do
|
84
|
-
sale = Twocheckout::Sale.find(:sale_id =>
|
84
|
+
sale = Twocheckout::Sale.find(:sale_id => 250334624367)
|
85
85
|
result = sale.comment({:sale_comment => "test"})
|
86
86
|
assert_equal('Created comment successfully.', result['response_message'])
|
87
87
|
end
|
@@ -89,22 +89,12 @@ describe Twocheckout::Sale do
|
|
89
89
|
#mark shipped
|
90
90
|
it "Shipping an intangible sale returns Twocheckout::TwocheckoutError" do
|
91
91
|
begin
|
92
|
-
sale = Twocheckout::Sale.find(:sale_id =>
|
92
|
+
sale = Twocheckout::Sale.find(:sale_id => 250335377097)
|
93
93
|
sale.ship({:tracking_number => "123"})
|
94
94
|
rescue Twocheckout::TwocheckoutError => e
|
95
95
|
assert_equal("Sale already marked shipped.", e.message)
|
96
96
|
end
|
97
97
|
end
|
98
|
-
|
99
|
-
#reauth
|
100
|
-
it "Reauthorizing a pending sale returns Twocheckout::TwocheckoutError" do
|
101
|
-
begin
|
102
|
-
sale = Twocheckout::Sale.find(:sale_id => 9093717691800)
|
103
|
-
sale.reauth
|
104
|
-
rescue Twocheckout::TwocheckoutError => e
|
105
|
-
assert_equal("Payment is already pending or deposited and cannot be reauthorized.", e.message)
|
106
|
-
end
|
107
|
-
end
|
108
98
|
end
|
109
99
|
|
110
100
|
#
|
@@ -136,60 +126,8 @@ describe Twocheckout::Product do
|
|
136
126
|
end
|
137
127
|
end
|
138
128
|
|
139
|
-
describe Twocheckout::Option do
|
140
|
-
|
141
|
-
# Option list
|
142
|
-
it "Option list returns array of options" do
|
143
|
-
option_list = Twocheckout::Option.list({ :pagesize => 3 })
|
144
|
-
assert_equal(3, option_list.size)
|
145
|
-
end
|
146
|
-
|
147
|
-
# Option CRUD
|
148
|
-
it "Option create, find, update, delete is successful" do
|
149
|
-
# create
|
150
|
-
new_option = Twocheckout::Option.create({:option_name => "test option",
|
151
|
-
:option_value_name => "test option value", :option_value_surcharge => 1.00})
|
152
|
-
assert_equal("test option", new_option.option_name)
|
153
|
-
# find
|
154
|
-
option = Twocheckout::Option.find({:option_id => new_option.option_id})
|
155
|
-
assert_equal(new_option.option_id, option.option_id)
|
156
|
-
# update
|
157
|
-
option = option.update({:option_name => "new name"})
|
158
|
-
assert_equal("new name", option.option_name)
|
159
|
-
# delete
|
160
|
-
result = option.delete!
|
161
|
-
assert_equal("Option deleted successfully", result['response_message'])
|
162
|
-
end
|
163
|
-
end
|
164
|
-
|
165
|
-
describe Twocheckout::Coupon do
|
166
|
-
|
167
|
-
# Coupon list
|
168
|
-
it "Coupon list returns array of coupons" do
|
169
|
-
coupon_list = Twocheckout::Coupon.list({ :pagesize => 4 })
|
170
|
-
assert_equal(4, coupon_list.size)
|
171
|
-
end
|
172
|
-
|
173
|
-
# Coupon CRUD
|
174
|
-
it "Coupon create, find, update, delete is successful" do
|
175
|
-
# create
|
176
|
-
new_coupon = Twocheckout::Coupon.create({:date_expire => "2020-01-01",
|
177
|
-
:type => "shipping", :minimum_purchase => 1.00})
|
178
|
-
assert_equal("2020-01-01", new_coupon.date_expire)
|
179
|
-
# find
|
180
|
-
coupon = Twocheckout::Coupon.find({:coupon_code => new_coupon.coupon_code})
|
181
|
-
assert_equal(new_coupon.coupon_code, coupon.coupon_code)
|
182
|
-
# update
|
183
|
-
coupon = coupon.update({:date_expire => "2020-01-02"})
|
184
|
-
assert_equal("2020-01-02", coupon.date_expire)
|
185
|
-
# delete
|
186
|
-
result = coupon.delete!
|
187
|
-
assert_equal("Coupon successfully deleted.", result['response_message'])
|
188
|
-
end
|
189
|
-
end
|
190
|
-
|
191
129
|
describe Twocheckout::ValidateResponse do
|
192
|
-
|
130
|
+
|
193
131
|
it "Validates Purchase MD5 Hash" do
|
194
132
|
result = Twocheckout::ValidateResponse.purchase({:sid => 1817037, :secret => "tango", :order_number => 1, :total => 0.01,
|
195
133
|
:key => '1BC47EA0D63EB76496E294F434138AD3'})
|
@@ -215,7 +153,7 @@ describe Twocheckout::Checkout do
|
|
215
153
|
#submit
|
216
154
|
it "Submit return a form + JS to submit" do
|
217
155
|
form = Twocheckout::Checkout.submit({ 'sid' => '1817037', 'cart_order_id' => 'Example Sale', 'total' => '1.00'})
|
218
|
-
@form = "<form id=\"2checkout\" action=\"https://
|
156
|
+
@form = "<form id=\"2checkout\" action=\"https://www.2checkout.com/checkout/purchase\" method=\"post\">\n" +
|
219
157
|
"<input type=\"hidden\" name=\"sid\" value=\"1817037\" />\n" +
|
220
158
|
"<input type=\"hidden\" name=\"cart_order_id\" value=\"Example Sale\" />\n" +
|
221
159
|
"<input type=\"hidden\" name=\"total\" value=\"1.00\" />\n" +
|
@@ -227,7 +165,7 @@ describe Twocheckout::Checkout do
|
|
227
165
|
#form
|
228
166
|
it "Form returns a form" do
|
229
167
|
form = Twocheckout::Checkout.form({ 'sid' => '1817037', 'cart_order_id' => 'Example Sale', 'total' => '1.00'}, "Proceed")
|
230
|
-
@form = "<form id=\"2checkout\" action=\"https://
|
168
|
+
@form = "<form id=\"2checkout\" action=\"https://www.2checkout.com/checkout/purchase\" method=\"post\">\n" +
|
231
169
|
"<input type=\"hidden\" name=\"sid\" value=\"1817037\" />\n" +
|
232
170
|
"<input type=\"hidden\" name=\"cart_order_id\" value=\"Example Sale\" />\n" +
|
233
171
|
"<input type=\"hidden\" name=\"total\" value=\"1.00\" />\n" +
|
@@ -249,7 +187,7 @@ describe Twocheckout::Checkout do
|
|
249
187
|
'country' => 'USA',
|
250
188
|
'email' => 'no-reply@2co.com'
|
251
189
|
})
|
252
|
-
@form = "<form id=\"2checkout\" action=\"https://
|
190
|
+
@form = "<form id=\"2checkout\" action=\"https://www.2checkout.com/checkout/purchase\" method=\"post\">\n" +
|
253
191
|
"<input type=\"hidden\" name=\"sid\" value=\"1817037\" />\n" +
|
254
192
|
"<input type=\"hidden\" name=\"cart_order_id\" value=\"Example Sale\" />\n" +
|
255
193
|
"<input type=\"hidden\" name=\"total\" value=\"1.00\" />\n" +
|
@@ -269,7 +207,7 @@ describe Twocheckout::Checkout do
|
|
269
207
|
#link
|
270
208
|
it "Link returns a link" do
|
271
209
|
link = Twocheckout::Checkout.link({ 'sid' => '1817037', 'cart_order_id' => 'Example Sale', 'total' => '1.00'})
|
272
|
-
@link = "https://
|
210
|
+
@link = "https://www.2checkout.com/checkout/purchase?sid=1817037&cart_order_id=Example+Sale&total=1.00"
|
273
211
|
assert_equal(link, @link)
|
274
212
|
end
|
275
213
|
|
@@ -277,11 +215,12 @@ describe Twocheckout::Checkout do
|
|
277
215
|
it "Authorize creates authorization" do
|
278
216
|
params = {
|
279
217
|
:merchantOrderId => '123',
|
280
|
-
:token => '
|
218
|
+
:token => 'OWM5OTAxM2YtNDhiMC00YjMyLTlkNDQtOWQ5MGRlOGExNDE0',
|
281
219
|
:currency => 'USD',
|
282
220
|
:total => '1.00',
|
221
|
+
:demo => true,
|
283
222
|
:billingAddr => {
|
284
|
-
:name => '
|
223
|
+
:name => 'John Doe',
|
285
224
|
:addrLine1 => '123 Test St',
|
286
225
|
:city => 'Columbus',
|
287
226
|
:state => 'OH',
|
data/twocheckout.gemspec
CHANGED
@@ -4,17 +4,17 @@ $:.unshift(File.join(File.dirname(__FILE__), 'lib'))
|
|
4
4
|
Gem::Specification.new do |s|
|
5
5
|
s.platform = Gem::Platform::RUBY
|
6
6
|
s.name = 'twocheckout'
|
7
|
-
s.version = '0.
|
7
|
+
s.version = '0.5.0'
|
8
8
|
s.summary = '2Checkout Ruby Library'
|
9
|
-
s.description = '0.
|
9
|
+
s.description = '0.5.0'
|
10
10
|
s.summary = '2Checkout Ruby Library'
|
11
|
-
s.author = "Craig Christenson", "Ernesto Garcia"
|
12
|
-
s.email = '
|
11
|
+
s.author = "Craig Christenson", "Ernesto Garcia", "Andrei Popa"
|
12
|
+
s.email = 'supportplus@2checkout.com'
|
13
13
|
s.homepage = 'https://github.com/2Checkout/2checkout-ruby'
|
14
14
|
s.files = `git ls-files`.split("\n")
|
15
15
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
16
16
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
17
|
-
s.add_dependency('rest-client', '
|
17
|
+
s.add_dependency('rest-client', '>= 1.4')
|
18
18
|
s.require_paths = %w{lib}
|
19
19
|
s.requirements << 'none'
|
20
20
|
s.license = 'MIT'
|
metadata
CHANGED
@@ -1,32 +1,33 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: twocheckout
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Craig Christenson
|
8
8
|
- Ernesto Garcia
|
9
|
+
- Andrei Popa
|
9
10
|
autorequire:
|
10
11
|
bindir: bin
|
11
12
|
cert_chain: []
|
12
|
-
date:
|
13
|
+
date: 2020-06-01 00:00:00.000000000 Z
|
13
14
|
dependencies:
|
14
15
|
- !ruby/object:Gem::Dependency
|
15
16
|
name: rest-client
|
16
17
|
requirement: !ruby/object:Gem::Requirement
|
17
18
|
requirements:
|
18
|
-
- - "
|
19
|
+
- - ">="
|
19
20
|
- !ruby/object:Gem::Version
|
20
21
|
version: '1.4'
|
21
22
|
type: :runtime
|
22
23
|
prerelease: false
|
23
24
|
version_requirements: !ruby/object:Gem::Requirement
|
24
25
|
requirements:
|
25
|
-
- - "
|
26
|
+
- - ">="
|
26
27
|
- !ruby/object:Gem::Version
|
27
28
|
version: '1.4'
|
28
|
-
description: 0.
|
29
|
-
email:
|
29
|
+
description: 0.5.0
|
30
|
+
email: supportplus@2checkout.com
|
30
31
|
executables: []
|
31
32
|
extensions: []
|
32
33
|
extra_rdoc_files: []
|
@@ -38,11 +39,9 @@ files:
|
|
38
39
|
- lib/twocheckout/api.rb
|
39
40
|
- lib/twocheckout/checkout.rb
|
40
41
|
- lib/twocheckout/company.rb
|
41
|
-
- lib/twocheckout/coupon.rb
|
42
42
|
- lib/twocheckout/hash_object.rb
|
43
43
|
- lib/twocheckout/invoice.rb
|
44
44
|
- lib/twocheckout/lineitem.rb
|
45
|
-
- lib/twocheckout/option.rb
|
46
45
|
- lib/twocheckout/product.rb
|
47
46
|
- lib/twocheckout/sale.rb
|
48
47
|
- lib/twocheckout/twocheckout_error.rb
|
@@ -71,9 +70,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
71
70
|
version: '0'
|
72
71
|
requirements:
|
73
72
|
- none
|
74
|
-
|
75
|
-
rubygems_version: 2.4.3
|
73
|
+
rubygems_version: 3.0.3
|
76
74
|
signing_key:
|
77
75
|
specification_version: 4
|
78
76
|
summary: 2Checkout Ruby Library
|
79
|
-
test_files:
|
77
|
+
test_files:
|
78
|
+
- test/minitest_helper.rb
|
79
|
+
- test/twocheckout_test.rb
|
data/lib/twocheckout/coupon.rb
DELETED
@@ -1,41 +0,0 @@
|
|
1
|
-
module Twocheckout
|
2
|
-
class Coupon < HashObject
|
3
|
-
|
4
|
-
def self.find(options)
|
5
|
-
response = Twocheckout::API.request(:get, 'products/detail_coupon', options)
|
6
|
-
Coupon.new(response['coupon'])
|
7
|
-
end
|
8
|
-
|
9
|
-
def self.with_coupon_code(coupon_code)
|
10
|
-
find(:coupon_code => coupon_code)
|
11
|
-
end
|
12
|
-
|
13
|
-
def self.create(opts)
|
14
|
-
response = Twocheckout::API.request(:post, 'products/create_coupon', opts)
|
15
|
-
find(:coupon_code => response['coupon_code'])
|
16
|
-
end
|
17
|
-
|
18
|
-
def update(opts)
|
19
|
-
opts = opts.merge(:coupon_code => self.coupon_code)
|
20
|
-
Twocheckout::API.request(:post, 'products/update_coupon', opts)
|
21
|
-
response = Twocheckout::API.request(:get, 'products/detail_coupon', opts)
|
22
|
-
Coupon.new(response['coupon'])
|
23
|
-
end
|
24
|
-
|
25
|
-
def delete!
|
26
|
-
opts = {:coupon_code => self.coupon_code}
|
27
|
-
Twocheckout::API.request(:post, 'products/delete_coupon', opts)
|
28
|
-
end
|
29
|
-
|
30
|
-
def self.list(opts=nil)
|
31
|
-
Twocheckout::API.request(:get, 'products/list_coupons', opts)
|
32
|
-
end
|
33
|
-
|
34
|
-
protected
|
35
|
-
|
36
|
-
def _key
|
37
|
-
self.coupon_code
|
38
|
-
end
|
39
|
-
|
40
|
-
end
|
41
|
-
end
|
data/lib/twocheckout/option.rb
DELETED
@@ -1,57 +0,0 @@
|
|
1
|
-
module Twocheckout
|
2
|
-
class Option < HashObject
|
3
|
-
|
4
|
-
#
|
5
|
-
# Finds option by ID and returns a Option object
|
6
|
-
#
|
7
|
-
def self.find(options)
|
8
|
-
response = Twocheckout::API.request(:get, 'products/detail_option', options)
|
9
|
-
Option.new(response['option'][0])
|
10
|
-
end
|
11
|
-
|
12
|
-
def self.with_option_id(option_id)
|
13
|
-
find(:option_id => option_id)
|
14
|
-
end
|
15
|
-
|
16
|
-
#
|
17
|
-
# Creates a new product option
|
18
|
-
#
|
19
|
-
def self.create(opts)
|
20
|
-
response = Twocheckout::API.request(:post, 'products/create_option', opts)
|
21
|
-
find(:option_id => response['option_id'])
|
22
|
-
end
|
23
|
-
|
24
|
-
#
|
25
|
-
# Updates option and returns a new object
|
26
|
-
#
|
27
|
-
def update(opts)
|
28
|
-
opts = opts.merge(:option_id => self.option_id)
|
29
|
-
Twocheckout::API.request(:post, 'products/update_option', opts)
|
30
|
-
response = Twocheckout::API.request(:get, 'products/detail_option', opts)
|
31
|
-
Option.new(response['option'][0])
|
32
|
-
end
|
33
|
-
|
34
|
-
#
|
35
|
-
# Deletes the option and returns the response
|
36
|
-
#
|
37
|
-
def delete!
|
38
|
-
opts = {:option_id => self.option_id}
|
39
|
-
Twocheckout::API.request(:post, 'products/delete_option', opts)
|
40
|
-
end
|
41
|
-
|
42
|
-
#
|
43
|
-
# An array to index options list
|
44
|
-
#
|
45
|
-
def self.list(opts=nil)
|
46
|
-
response = Twocheckout::API.request(:get, 'products/list_options', opts)
|
47
|
-
response['options']
|
48
|
-
end
|
49
|
-
|
50
|
-
protected
|
51
|
-
|
52
|
-
def _key
|
53
|
-
self.option_id
|
54
|
-
end
|
55
|
-
|
56
|
-
end
|
57
|
-
end
|