twocheckout 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
metadata CHANGED
@@ -1,15 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: twocheckout
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
8
8
  - Craig Christenson
9
+ - Ernesto Garcia
9
10
  autorequire:
10
11
  bindir: bin
11
12
  cert_chain: []
12
- date: 2012-08-23 00:00:00.000000000 Z
13
+ date: 2012-10-24 00:00:00.000000000 Z
13
14
  dependencies:
14
15
  - !ruby/object:Gem::Dependency
15
16
  name: rest-client
@@ -18,7 +19,7 @@ dependencies:
18
19
  requirements:
19
20
  - - ~>
20
21
  - !ruby/object:Gem::Version
21
- version: '1.4'
22
+ version: 1.6.7
22
23
  type: :runtime
23
24
  prerelease: false
24
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -26,31 +27,16 @@ dependencies:
26
27
  requirements:
27
28
  - - ~>
28
29
  - !ruby/object:Gem::Version
29
- version: '1.4'
30
- description: 0.0.1
31
- email: christensoncraig@gmail.com
30
+ version: 1.6.7
31
+ description: 0.1.0
32
+ email:
33
+ - christensoncraig@gmail.com
34
+ - ernesto+git@gnapse.com
32
35
  executables: []
33
36
  extensions: []
34
37
  extra_rdoc_files: []
35
- files:
36
- - .gitignore
37
- - LICENSE
38
- - README.md
39
- - lib/test/test_twocheckout.rb
40
- - lib/twocheckout.rb
41
- - lib/twocheckout/api/company.rb
42
- - lib/twocheckout/api/contact.rb
43
- - lib/twocheckout/api/coupon.rb
44
- - lib/twocheckout/api/option.rb
45
- - lib/twocheckout/api/product.rb
46
- - lib/twocheckout/api/sale.rb
47
- - lib/twocheckout/charge.rb
48
- - lib/twocheckout/ins.rb
49
- - lib/twocheckout/message.rb
50
- - lib/twocheckout/return.rb
51
- - lib/twocheckout/util.rb
52
- - twocheckout.gemspec
53
- homepage: https://github.com/craigchristenson
38
+ files: []
39
+ homepage: http://github.com/craigchristenson
54
40
  licenses: []
55
41
  post_install_message:
56
42
  rdoc_options: []
@@ -68,11 +54,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
68
54
  - - ! '>='
69
55
  - !ruby/object:Gem::Version
70
56
  version: '0'
71
- requirements:
72
- - none
57
+ requirements: []
73
58
  rubyforge_project:
74
59
  rubygems_version: 1.8.24
75
60
  signing_key:
76
61
  specification_version: 3
77
- summary: 2Checkout Ruby Library
62
+ summary: Ruby wrapper for 2Checkout API
78
63
  test_files: []
data/.gitignore DELETED
@@ -1,5 +0,0 @@
1
- *~
2
- *.lock
3
- *.DS_Store
4
- *.swp
5
- *.out
data/LICENSE DELETED
@@ -1,21 +0,0 @@
1
- The MIT License
2
-
3
- Copyright (c) 2012 - Craig Christenson
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
data/README.md DELETED
@@ -1,102 +0,0 @@
1
- 2Checkout Ruby Library
2
- =====================
3
-
4
- This library provides developers with a simple set of bindings to the 2Checkout purchase routine, Instant Notification Service and Back Office API.
5
-
6
- To use, download or clone the repository.
7
-
8
- ```shell
9
- git clone https://github.com/craigchristenson/2checkout-ruby.git
10
- ```
11
-
12
- Or import into your Gemfile
13
-
14
- ```ruby
15
- gem 'twocheckout', :git => "git://github.com/craigchristenson/2checkout-ruby.git"
16
- ```
17
-
18
- Full documentation for each binding will be provided in the [Wiki](https://github.com/craigchristenson/2checkout-ruby/wiki).
19
-
20
-
21
- Example API Usage
22
- -----------------
23
-
24
- *Example Usage:*
25
-
26
- ```ruby
27
- Twocheckout.api_credentials=({'username' => 'APIuser1817037', 'password' => 'APIpass1817037'})
28
-
29
- @action = Twocheckout::Sale.refund({'sale_id' => 4769044324, 'comment' => "test refund", 'category' => 1})
30
- puts @action
31
- ```
32
-
33
- *Example Response:*
34
-
35
- ```json
36
- {
37
- "response_code" : "OK",
38
- "response_message" : "refund added to invoice"
39
- }
40
- ```
41
-
42
- Example Checkout Usage:
43
- -----------------------
44
-
45
- *Example Usage:*
46
-
47
- ```ruby
48
- require "sinatra"
49
-
50
- get '/' do
51
- @@form = Twocheckout::Charge.submit({'sid' => 1817037, 'cart_order_id' => 'Example Sale', 'total' => 1.00})
52
- @@form
53
- end
54
- ```
55
-
56
- Example Return Usage:
57
- ---------------------
58
-
59
- *Example Usage:*
60
-
61
- ```ruby
62
- require "sinatra"
63
-
64
- post '/' do
65
- @@response = Twocheckout::Return.request({ :credentials => {'sid' => '532001', 'secret' => 'tango'}, :params => params})
66
- @@response.inspect
67
- end
68
- ```
69
-
70
- *Example Response:*
71
-
72
- ```json
73
- {
74
- "code" : "PASS",
75
- "message" : "Hash Matched"
76
- }
77
- ```
78
-
79
- Example INS Usage:
80
- ------------------
81
-
82
- *Example Usage:*
83
-
84
- ```ruby
85
- require "sinatra"
86
-
87
- post '/' do
88
- @@response = Twocheckout::Ins.request({ :credentials => {'sid' => 532001, 'secret' => 'tango'}, :params => params})
89
- @@response.inspect
90
- end
91
- ```
92
-
93
- *Example Response:*
94
-
95
- ```json
96
- {
97
- "code" : "PASS",
98
- "message" : "Hash Matched"
99
- }
100
- ```
101
-
102
- Full documentation for each binding will be provided in the [Wiki](https://github.com/craigchristenson/2checkout-ruby/wiki).
@@ -1,260 +0,0 @@
1
- require 'minitest/spec'
2
- require 'minitest/autorun'
3
- require '../../lib/twocheckout.rb'
4
-
5
- describe Twocheckout::Sale do
6
- before do
7
- Twocheckout.api_credentials=({'username' => 'APIuser1817037', 'password' => 'APIpass1817037'})
8
- end
9
-
10
- #retrieve sale
11
- it "Sale retrieve returns sale" do
12
- action = Twocheckout::Sale.retrieve({'sale_id' => 4786293822})
13
- action = JSON.parse(action)
14
- assert_equal('Sale detail retrieved', action['response_message'])
15
- end
16
-
17
- #retrieve invoice
18
- it "Sale retrieve returns sale" do
19
- action = Twocheckout::Sale.retrieve({'invoice_id' => 4786293831})
20
- action = JSON.parse(action)
21
- assert_equal('Sale detail retrieved', action['response_message'])
22
- end
23
-
24
- #retrieve list
25
- it "Sale retrieve returns list" do
26
- action = Twocheckout::Sale.retrieve()
27
- action = JSON.parse(action)
28
- assert_equal('Sales summaries retrieved successfully.', action['response_message'])
29
- end
30
-
31
- #refund sale
32
- it "Sale refund returns successful result when passing sale_id" do
33
- action = Twocheckout::Sale.refund({'sale_id' => 4786293822, 'comment' => "test refund", 'category' => 1})
34
- action = JSON.parse(action)
35
- if action['response_message']
36
- assert_equal('refund added to invoice', action['response_message'])
37
- else
38
- assert_equal('Invoice was already refunded.', action["errors"][0]["message"])
39
- end
40
- end
41
-
42
- #refund invoice
43
- it "Sale refund returns successful result when passing invoice_id" do
44
- action = Twocheckout::Sale.refund({'invoice_id' => 4786293831, 'comment' => "test refund", 'category' => 1})
45
- action = JSON.parse(action)
46
- if action['response_message']
47
- assert_equal('refund added to invoice', action['response_message'])
48
- else
49
- assert_equal("Invoice was already refunded.", action["errors"][0]["message"])
50
- end
51
- end
52
-
53
- #refund lineitem
54
- it "Sale refund returns successful result when passing lineitem_id" do
55
- action = Twocheckout::Sale.refund({'lineitem_id' => 4789788509, 'comment' => "test refund", 'category' => 1})
56
- action = JSON.parse(action)
57
- if action['response_message']
58
- assert_equal('lineitem refunded', action['response_message'])
59
- else
60
- assert_equal('This lineitem cannot be refunded.', action["errors"][0]["message"])
61
- end
62
- end
63
-
64
- #stop recurring lineitem
65
- it "Sale stop returns successful result when passing lineitem_id" do
66
- action = Twocheckout::Sale.stop({'lineitem_id' => 4789788509})
67
- action = JSON.parse(action)
68
- if action['response_message']
69
- assert_equal('Recurring billing stopped for lineitem', action['response_message'])
70
- else
71
- assert_equal('Lineitem is not scheduled to recur.', action["errors"][0]["message"])
72
- end
73
- end
74
-
75
- #stop recurring sale
76
- it "Sale stop returns successful result when passing sale_id" do
77
- action = Twocheckout::Sale.stop('sale_id' => 4786293822)
78
- action = JSON.parse(action)
79
- if action[0]
80
- assert_equal('Recurring billing stopped for lineitem', action['response_message'])
81
- else
82
- assert_equal("No Active recurring lineitems.", action["errors"][0]["message"])
83
- end
84
- end
85
-
86
- #create comment
87
- it "Sale comment returns successful result" do
88
- action = Twocheckout::Sale.comment({'sale_id' => 4786293822, 'sale_comment' => "test"})
89
- action = JSON.parse(action)
90
- assert_equal('Created comment successfully.', action['response_message'])
91
- end
92
-
93
- #mark shipped
94
- it "Sale ship returns successful result" do
95
- action = Twocheckout::Sale.ship({'sale_id' => 4786293822, 'tracking_number' => "test"})
96
- action = JSON.parse(action)
97
- if action['response_message']
98
- assert_equal('Sale marked shipped.', action['response_message'])
99
- else
100
- assert_equal('Item not shippable.', action["errors"][0]["message"])
101
- end
102
- end
103
-
104
- #reauth
105
- it "Sale reauth returns successful result" do
106
- action = Twocheckout::Sale.reauth({'sale_id' => 4786293822})
107
- action = JSON.parse(action)
108
- if action['response_message']
109
- assert_equal('Payment reauthorized.', action['response_message'])
110
- else
111
- assert_equal('Payment is already pending or deposited and cannot be reauthorized.', action["errors"][0]["message"])
112
- end
113
- end
114
- end
115
-
116
- describe Twocheckout::Product do
117
- before do
118
- Twocheckout.api_credentials=({'username' => 'APIuser1817037', 'password' => 'APIpass1817037'})
119
- action = Twocheckout::Product.create({'name' => "test product", 'price' => 1.00})
120
- action = JSON.parse(action)
121
- @product_id = action['product_id']
122
- end
123
-
124
- #create
125
- it "Product create returns successful result" do
126
- action = Twocheckout::Product.create({'name' => "test product", 'price' => 1.00})
127
- action = JSON.parse(action)
128
- assert_equal('Product successfully created', action['response_message'])
129
- end
130
-
131
- #retrieve list
132
- it "Product retrieve returns successful result" do
133
- action = Twocheckout::Product.retrieve()
134
- action = JSON.parse(action)
135
- assert_equal('Product list successfully retrieved.', action['response_message'])
136
- end
137
-
138
- #retrieve product
139
- it "Product retrieve returns successful result" do
140
- action = Twocheckout::Product.retrieve({'product_id' => @product_id})
141
- action = JSON.parse(action)
142
- assert_equal('Product detail information retrieved successfully', action['response_message'])
143
- end
144
-
145
- #update
146
- it "Product update returns successful result" do
147
- action = Twocheckout::Product.update({'product_id' => @product_id, 'name' => "test product"})
148
- action = JSON.parse(action)
149
- assert_equal('Product successfully updated', action['response_message'])
150
- end
151
-
152
- #delete
153
- it "Product delete returns successful result" do
154
- action = Twocheckout::Product.delete({'product_id' => @product_id})
155
- action = JSON.parse(action)
156
- assert_equal('Product successfully deleted.', action['response_message'])
157
- end
158
- end
159
-
160
- describe Twocheckout::Coupon do
161
- before do
162
- Twocheckout.api_credentials=({'username' => 'APIuser1817037', 'password' => 'APIpass1817037'})
163
- action = Twocheckout::Coupon.create({'date_expire' => "2099-12-01",
164
- 'type' => "shipping", 'minimum_purchase' => 1.00})
165
- action = JSON.parse(action)
166
- @coupon_code = action['coupon_code']
167
- end
168
-
169
- #create
170
- it "Coupon create returns successful result" do
171
- action = Twocheckout::Coupon.create({'date_expire' => "2099-12-01",
172
- 'type' => "shipping", 'minimum_purchase' => 1.00})
173
- action = JSON.parse(action)
174
- assert_equal('Coupon successfully created', action['response_message'])
175
- end
176
-
177
- #retrieve
178
- it "Coupon retrieve returns successful result" do
179
- action = Twocheckout::Coupon.retrieve()
180
- action = JSON.parse(action)
181
- assert_equal('Coupon information retrieved successfully.', action['response_message'])
182
- end
183
-
184
- #update
185
- it "Coupon update returns successful result" do
186
- action = Twocheckout::Coupon.update({'coupon_code' => @coupon_code, 'date_expire' => "2099-12-10"})
187
- action = JSON.parse(action)
188
- assert_equal('Coupon updated successfully', action['response_message'])
189
- end
190
-
191
- #delete
192
- it "Coupon delete returns successful result" do
193
- action = Twocheckout::Coupon.delete({'coupon_code' => @coupon_code})
194
- action = JSON.parse(action)
195
- assert_equal('Coupon successfully deleted.', action['response_message'])
196
- end
197
- end
198
-
199
- describe Twocheckout::Option do
200
- before do
201
- Twocheckout.api_credentials=({'username' => 'APIuser1817037', 'password' => 'APIpass1817037'})
202
- action = Twocheckout::Option.create({'option_name' => "test product", 'option_value_name' => "example",'option_value_surcharge' => 1.00})
203
- action = JSON.parse(action)
204
- @option_id = action['option_id']
205
- end
206
-
207
- #create
208
- it "Option create returns successful result" do
209
- action = Twocheckout::Option.create({'option_name' => "test product", 'option_value_name' => "example",'option_value_surcharge' => 1.00})
210
- action = JSON.parse(action)
211
- assert_equal('Option created successfully', action['response_message'])
212
- end
213
-
214
- #retrieve
215
- it "Option retrieve returns successful result" do
216
- action = Twocheckout::Option.retrieve()
217
- action = JSON.parse(action)
218
- assert_equal('Option information retrieved successfully.', action['response_message'])
219
- end
220
-
221
- #update
222
- it "Option update returns successful result" do
223
- action = Twocheckout::Option.update({'option_name' => "test option", 'option_id' => @option_id})
224
- action = JSON.parse(action)
225
- assert_equal('Option updated successfully', action['response_message'])
226
- end
227
-
228
- #delete
229
- it "Option delete returns successful result" do
230
- action = Twocheckout::Option.delete({'option_id' => @option_id})
231
- action = JSON.parse(action)
232
- assert_equal('Option deleted successfully', action['response_message'])
233
- end
234
- end
235
-
236
- describe Twocheckout::Return do
237
- before do
238
- @params = {'order_number' => '4789848870', 'total' => '0.01', 'key' => 'CDF3E502AA1597DD4401760783432337'}
239
- end
240
-
241
- #check
242
- it "Return check returns successful result" do
243
- action = Twocheckout::Return.request({ :credentials => {'sid' => '1817037', 'secret' => 'tango'}, :params => @params})
244
- action = JSON.parse(action)
245
- assert_equal('PASS', action['code'])
246
- end
247
- end
248
-
249
- describe Twocheckout::Ins do
250
- before do
251
- @params = {'sale_id' => '4789848870', 'invoice_id' => '4789848879', 'md5_hash' => '827220324C722873694758F38D8D3624'}
252
- end
253
-
254
- #check
255
- it "Return check returns successful result" do
256
- action = Twocheckout::Ins.request({ :credentials => {'sid' => '1817037', 'secret' => 'tango'}, :params => @params})
257
- action = JSON.parse(action)
258
- assert_equal('PASS', action['code'])
259
- end
260
- end
@@ -1,62 +0,0 @@
1
- require 'rest_client'
2
- require 'rubygems'
3
- require 'cgi'
4
- require 'json'
5
- require 'net/http'
6
- require 'base64'
7
- require 'digest/md5'
8
-
9
- require File.dirname(__FILE__) + '/twocheckout/api/sale.rb'
10
- require File.dirname(__FILE__) + '/twocheckout/api/company.rb'
11
- require File.dirname(__FILE__) + '/twocheckout/api/contact.rb'
12
- require File.dirname(__FILE__) + '/twocheckout/api/product.rb'
13
- require File.dirname(__FILE__) + '/twocheckout/api/option.rb'
14
- require File.dirname(__FILE__) + '/twocheckout/api/coupon.rb'
15
- require File.dirname(__FILE__) + '/twocheckout/charge.rb'
16
- require File.dirname(__FILE__) + '/twocheckout/return.rb'
17
- require File.dirname(__FILE__) + '/twocheckout/ins.rb'
18
- require File.dirname(__FILE__) + '/twocheckout/util.rb'
19
- require File.dirname(__FILE__) + '/twocheckout/message.rb'
20
-
21
- module Twocheckout
22
- @api_base = 'https://www.2checkout.com/api/'
23
- @api_credentials = nil
24
-
25
- def self.api_url(url='')
26
- @api_base + url
27
- end
28
-
29
- def self.api_credentials=(options = {})
30
- @api_credentials = options
31
- end
32
-
33
- def self.api_base=(api_base)
34
- @api_base = api_base
35
- end
36
-
37
- def self.request(method, url, params=nil)
38
-
39
- if method == :get
40
- @url = api_url(url) + '?' + params.map{|k,v| "#{k}=#{v}"}.join('&')
41
- params = nil
42
- elsif method == :post
43
- @url = api_url(url)
44
- else
45
-
46
- end
47
-
48
- opts = {
49
- :method => method,
50
- :url => @url,
51
- :headers => {:accept => :json, :content_type => :json},
52
- :user => @api_credentials['username'],
53
- :password => @api_credentials['password'],
54
- :payload => params
55
- }
56
- begin
57
- RestClient::Request.execute(opts)
58
- rescue => e
59
- TwocheckoutMessage.new(e.response).retrieve
60
- end
61
- end
62
- end
@@ -1,8 +0,0 @@
1
- module Twocheckout
2
- class Company
3
-
4
- def self.retrieve(params={})
5
- Twocheckout.request(:get, 'acct/detail_company_info', params)
6
- end
7
- end
8
- end
@@ -1,8 +0,0 @@
1
- module Twocheckout
2
- class Contact
3
-
4
- def self.retrieve(params={})
5
- Twocheckout.request(:get, 'acct/detail_contact_info', params)
6
- end
7
- end
8
- end
@@ -1,24 +0,0 @@
1
- module Twocheckout
2
- class Coupon
3
-
4
- def self.create(params={})
5
- Twocheckout.request(:post, 'products/create_coupon', params)
6
- end
7
-
8
- def self.retrieve(params={})
9
- if params.has_key?("coupon_code")
10
- Twocheckout.request(:get, 'products/detail_coupon', params)
11
- else
12
- Twocheckout.request(:get, 'products/list_coupons', params)
13
- end
14
- end
15
-
16
- def self.update(params={})
17
- Twocheckout.request(:post, 'products/update_coupon', params)
18
- end
19
-
20
- def self.delete(params={})
21
- Twocheckout.request(:post, 'products/delete_coupon', params)
22
- end
23
- end
24
- end
@@ -1,24 +0,0 @@
1
- module Twocheckout
2
- class Option
3
-
4
- def self.create(params={})
5
- Twocheckout.request(:post, 'products/create_option', params)
6
- end
7
-
8
- def self.retrieve(params={})
9
- if params.has_key?("option_id")
10
- Twocheckout.request(:get, 'products/detail_option', params)
11
- else
12
- Twocheckout.request(:get, 'products/list_options', params)
13
- end
14
- end
15
-
16
- def self.update(params={})
17
- Twocheckout.request(:post, 'products/update_option', params)
18
- end
19
-
20
- def self.delete(params={})
21
- Twocheckout.request(:post, 'products/delete_option', params)
22
- end
23
- end
24
- end
@@ -1,24 +0,0 @@
1
- module Twocheckout
2
- class Product
3
-
4
- def self.create(params={})
5
- Twocheckout.request(:post, 'products/create_product', params)
6
- end
7
-
8
- def self.retrieve(params={})
9
- if params.has_key?("product_id")
10
- Twocheckout.request(:get, 'products/detail_product', params)
11
- else
12
- Twocheckout.request(:get, 'products/list_products', params)
13
- end
14
- end
15
-
16
- def self.update(params={})
17
- Twocheckout.request(:post, 'products/update_product', params)
18
- end
19
-
20
- def self.delete(params={})
21
- Twocheckout.request(:post, 'products/delete_product', params)
22
- end
23
- end
24
- end
@@ -1,84 +0,0 @@
1
- module Twocheckout
2
- class Sale
3
-
4
- def self.retrieve(params={})
5
- if params.has_key?("sale_id") || params.has_key?("invoice_id")
6
- Twocheckout.request(:get, 'sales/detail_sale', params)
7
- else
8
- Twocheckout.request(:get, 'sales/list_sales', params)
9
- end
10
- end
11
-
12
- def self.refund(params={})
13
- if params.has_key?("lineitem_id")
14
- result = Twocheckout.request(:post, 'sales/refund_lineitem', params)
15
- elsif params.has_key?("sale_id") || params.has_key?("invoice_id")
16
- result = Twocheckout.request(:post, 'sales/refund_invoice', params)
17
- else
18
- message = {:errors => [{:code => "INVALID PARAMETER", :message => "You must pass a sale_id, invoice_id or lineitem_id."}]}
19
- result = TwocheckoutMessage.new(message).retrieve
20
- end
21
- result
22
- end
23
-
24
- def self.stop(params={})
25
- if params.has_key?("lineitem_id")
26
- result = Twocheckout.request(:post, 'sales/stop_lineitem_recurring', params)
27
- elsif params.has_key?("sale_id")
28
- @sale = Twocheckout.request(:get, 'sales/detail_sale', params)
29
- @sale = JSON.parse(@sale)
30
- if @sale.has_key?("errors")
31
- return @sale
32
- end
33
- @lineitems = Twocheckout::Util.active(@sale)
34
- if @lineitems.empty?
35
- message = {:errors => [{:code => "NOTICE", :message => "No Active recurring lineitems."}]}
36
- result = TwocheckoutMessage.new(message).retrieve
37
- else
38
- result = {}
39
- i=0
40
- @lineitems.each do |k,v|
41
- params={'lineitem_id' => v}
42
- response = Twocheckout.request(:post, 'sales/stop_lineitem_recurring', params)
43
- result[i] = response
44
- i+=1
45
- end
46
- end
47
- else
48
- message = {:errors => [{:code => "INVALID PARAMETER", :message => "You must pass a sale_id or lineitem_id."}]}
49
- result = TwocheckoutMessage.new(message).retrieve
50
- end
51
- result
52
- end
53
-
54
- def self.comment(params={})
55
- if params.has_key?("sale_id" && "sale_comment")
56
- result = Twocheckout.request(:post, 'sales/create_comment', params)
57
- else
58
- message = {:errors => [{:code => "INVALID PARAMETER", :message => "You must pass a sale_id and sale_comment."}]}
59
- result = TwocheckoutMessage.new(message).retrieve
60
- end
61
- result
62
- end
63
-
64
- def self.ship(params={})
65
- if params.has_key?("sale_id" && "tracking_number")
66
- result = Twocheckout.request(:post, 'sales/mark_shipped', params)
67
- else
68
- message = {:errors => [{:code => "INVALID PARAMETER", :message => "You must pass a sale_id and tracking_number."}]}
69
- result = TwocheckoutMessage.new(message).retrieve
70
- end
71
- result
72
- end
73
-
74
- def self.reauth(params={})
75
- if params.has_key?("sale_id") || params.has_key?("invoice_id")
76
- result = Twocheckout.request(:post, 'sales/reauth', params)
77
- else
78
- message = {:errors => [{:code => "INVALID PARAMETER", :message => "You must pass a sale_id or invoice_id."}]}
79
- result = TwocheckoutMessage.new(message).retrieve
80
- end
81
- result
82
- end
83
- end
84
- end
@@ -1,26 +0,0 @@
1
- module Twocheckout
2
- class Charge
3
-
4
- def self.form(params={})
5
- @form = "<form id=\"2checkout\" action=\"https://www.2checkout.com/checkout/spurchase\" method=\"post\">\n";
6
- params.each do |k,v|
7
- @form = @form + "<input type=\"hidden\" name=\"" + k + "\" value=\"" + v.to_s + "\" />\n"
8
- end
9
- @form + "<input type=\"submit\" value=\"Proceed to Checkout\" />\n</form>"
10
- end
11
-
12
- def self.submit(params={})
13
- @form = "<form id=\"2checkout\" action=\"https://www.2checkout.com/checkout/spurchase\" method=\"post\">\n";
14
- params.each do |k,v|
15
- @form = @form + "<input type=\"hidden\" name=\"" + k + "\" value=\"" + v.to_s + "\" />\n"
16
- end
17
- @form = @form + "</form>\n"
18
- @form = @form + "<script type=\"text/javascript\">document.getElementById('2checkout').submit();</script>"
19
- end
20
-
21
- def self.link(params={}, url="https://www.2checkout.com/checkout/spurchase?")
22
- @querystring = params.map{|k,v| "#{CGI.escape(k)}=#{CGI.escape(v)}"}.join("&")
23
- @purchase_url = url + @querystring
24
- end
25
- end
26
- end
@@ -1,28 +0,0 @@
1
- module Twocheckout
2
- class Ins
3
-
4
- # Checks against MD5 Hash
5
- def self.check(sale_id, sid, invoice_id, secret, key)
6
- Digest::MD5.hexdigest("#{sale_id}#{sid}#{invoice_id}#{secret}").upcase == key
7
- end
8
-
9
- # Parses Header Redirect Query String
10
- def self.request(options={})
11
- params = options[:params]
12
- credentials = options[:credentials]
13
- if params.is_a?(Hash)
14
- if check(params['sale_id'], credentials['sid'], params['invoice_id'], credentials['secret'], params['md5_hash'])
15
- message = {:code => "PASS", :message => "Hash Matched"}
16
- result = TwocheckoutMessage.new(message).retrieve
17
- else
18
- message = {:code => "FAIL", :message => "Hash Mismatch"}
19
- result = TwocheckoutMessage.new(message).retrieve
20
- end
21
- else
22
- message = {:errors => [{:code => "INVALID PARAMETER", :message => "Hash was not passed"}]}
23
- result = TwocheckoutMessage.new(message).retrieve
24
- end
25
- result
26
- end
27
- end
28
- end
@@ -1,18 +0,0 @@
1
- module Twocheckout
2
- class TwocheckoutMessage < StandardError
3
- attr_reader :message
4
-
5
- def initialize(message=nil)
6
- @message = message
7
- end
8
-
9
- def retrieve
10
- if @message.is_a?(Hash)
11
- @message = JSON.generate(@message)
12
- "#{@message}"
13
- else
14
- "#{@message}"
15
- end
16
- end
17
- end
18
- end
@@ -1,34 +0,0 @@
1
- module Twocheckout
2
- class Return
3
-
4
- # Checks against MD5 Hash
5
- def self.check(secret, sid, order_number, total, key)
6
- Digest::MD5.hexdigest("#{secret}#{sid}#{order_number}#{total}").upcase == key
7
- end
8
-
9
- # Parses Header Redirect Query String
10
- def self.request(options={})
11
- params = options[:params]
12
- credentials = options[:credentials]
13
- if params.is_a?(String)
14
- params = Twocheckout::Util.parse(params)
15
- end
16
- if params['demo'] == 'Y'
17
- params['order_number'] = 1
18
- end
19
- if params.is_a?(Hash)
20
- if check(credentials['secret'], credentials['sid'], params['order_number'], params['total'], params['key'])
21
- message = {:code => "PASS", :message => "Hash Matched"}
22
- result = TwocheckoutMessage.new(message).retrieve
23
- else
24
- message = {:code => "FAIL", :message => "Hash Mismatch"}
25
- result = TwocheckoutMessage.new(message).retrieve
26
- end
27
- else
28
- message = {:errors => [{:code => "INVALID PARAMETER", :message => "Hash was not passed"}]}
29
- result = TwocheckoutMessage.new(message).retrieve
30
- end
31
- result
32
- end
33
- end
34
- end
@@ -1,37 +0,0 @@
1
- module Twocheckout
2
- class Util
3
-
4
- # Parse Header Redirect
5
- def self.parse(querystring)
6
- params = querystring.split('&').inject({}) do |result, q|
7
- k,v = q.split('=')
8
- if !v.nil?
9
- result.merge({k => v})
10
- elsif !result.key?(k)
11
- result.merge({k => true})
12
- else
13
- result
14
- end
15
- end
16
- params
17
- end
18
-
19
- # Get active recurring lineitems
20
- def self.active(params)
21
- @invoice = params['sale']['invoices'].last['lineitems']
22
- @lineitems = {}
23
- i=0
24
- @invoice.each do |li|
25
- if li['billing']['recurring_status'] == 'active'
26
- li.each do |k,v|
27
- if k == "lineitem_id"
28
- @lineitems[i] = v
29
- i+=1
30
- end
31
- end
32
- end
33
- end
34
- @lineitems
35
- end
36
- end
37
- end
@@ -1,21 +0,0 @@
1
- # encoding: UTF-8
2
- $:.unshift(File.join(File.dirname(__FILE__), 'lib'))
3
-
4
- Gem::Specification.new do |s|
5
- s.platform = Gem::Platform::RUBY
6
- s.name = 'twocheckout'
7
- s.version = '0.0.1'
8
- s.summary = '2Checkout Ruby Library'
9
- s.description = '0.0.1'
10
- s.summary = '2Checkout Ruby Library'
11
- s.author = 'Craig Christenson'
12
- s.email = 'christensoncraig@gmail.com'
13
- s.homepage = 'https://github.com/craigchristenson'
14
- s.files = `git ls-files`.split("\n")
15
- s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
16
- s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
17
- s.add_dependency('rest-client', '~> 1.4')
18
- s.require_paths = %w{lib}
19
- s.requirements << 'none'
20
-
21
- end