payson_api 0.0.4 → 0.0.5
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.
- data/.travis.yml +5 -0
- data/Guardfile +9 -0
- data/README.rdoc +19 -5
- data/Rakefile +24 -0
- data/lib/payson_api/client.rb +6 -0
- data/lib/payson_api/pay_data.rb +3 -1
- data/lib/payson_api/version.rb +1 -1
- data/payson_api.gemspec +0 -4
- data/test/fixtures/config.yml +2 -0
- data/test/fixtures/order.yml +28 -0
- data/test/integration/config_test.rb +14 -0
- data/test/integration/pay_data_test.rb +80 -0
- data/test/test_helper.rb +15 -0
- metadata +17 -5
data/.travis.yml
ADDED
data/Guardfile
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
guard 'test' do
|
2
|
+
watch(%r{^lib/(.+)\.rb$}) { "test" }
|
3
|
+
watch(%r{^lib/payson_api/(.+)\.rb$}) { "test" }
|
4
|
+
|
5
|
+
watch(%r{^test/unit/.+_test\.rb$}) { "test" }
|
6
|
+
watch(%r{^test/fixtures/(.+)\.yml$}) { "test" }
|
7
|
+
watch(%r{^test/integration/.+_test\.rb$}) { "test" }
|
8
|
+
watch('test/.+.rb') { "test" }
|
9
|
+
end
|
data/README.rdoc
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
= Payson API
|
2
2
|
|
3
|
-
A simple utility to handle requests against the Payson payment gateway.
|
3
|
+
A simple utility to handle requests against the Payson payment gateway API.
|
4
4
|
|
5
5
|
|
6
6
|
== Supported versions
|
7
7
|
|
8
|
-
* Ruby 1.9.3
|
8
|
+
* Ruby 1.8.7, 1.9.2, 1.9.3
|
9
9
|
|
10
10
|
|
11
11
|
== Install
|
@@ -21,11 +21,11 @@ Then bundle:
|
|
21
21
|
|
22
22
|
=== General configuration options
|
23
23
|
|
24
|
-
You can configure the following default values by overriding these values using the <tt>PaysonAPI.configure</tt> method
|
24
|
+
You can configure the following default values by overriding these values using the <tt>PaysonAPI.configure</tt> method:
|
25
25
|
|
26
26
|
PaysonAPI.configure do |config|
|
27
|
-
config.
|
28
|
-
config.
|
27
|
+
config.api_user_id = 'XXXX'
|
28
|
+
config.api_password = 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'
|
29
29
|
end
|
30
30
|
|
31
31
|
=== Initiating a payment
|
@@ -74,6 +74,20 @@ You can configure the following default values by overriding these values using
|
|
74
74
|
puts response.errors
|
75
75
|
end
|
76
76
|
|
77
|
+
|
78
|
+
== Todo
|
79
|
+
|
80
|
+
Implement the following requests:
|
81
|
+
|
82
|
+
* PaymentDetails - Get details on a payment.
|
83
|
+
* PaymentUpdate - Update a payment.
|
84
|
+
* Validate - Validate an IPN (Instant Payment Notification).
|
85
|
+
|
86
|
+
|
87
|
+
|
88
|
+
== Build Status {<img src="https://secure.travis-ci.org/stoffus/payson_api.png"/>}[http://travis-ci.org/stoffus/payson_api]
|
89
|
+
|
90
|
+
|
77
91
|
== Questions, Feedback
|
78
92
|
|
79
93
|
Feel free to message me on Github (stoffus).
|
data/Rakefile
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'bundler/gem_tasks'
|
2
|
+
|
3
|
+
task :default => ["test"]
|
4
|
+
|
5
|
+
task :test do
|
6
|
+
Rake::Task['test:unit'].execute
|
7
|
+
Rake::Task['test:integration'].execute
|
8
|
+
end
|
9
|
+
|
10
|
+
namespace :test do
|
11
|
+
desc "Run unit tests"
|
12
|
+
task :unit do
|
13
|
+
Dir["test/unit/*_test.rb"].each do |path|
|
14
|
+
system "ruby -Ilib -Itest #{path}"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
desc "Run integration tests"
|
19
|
+
task :integration do
|
20
|
+
Dir["test/integration/*_test.rb"].each do |path|
|
21
|
+
system "ruby -Ilib -Itest #{path}"
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
data/lib/payson_api/client.rb
CHANGED
@@ -8,6 +8,12 @@ module PaysonAPI
|
|
8
8
|
Response.new(response.body)
|
9
9
|
end
|
10
10
|
|
11
|
+
def self.payment_details(token)
|
12
|
+
action = '/%s/%s/' % [PAYSON_API_VERSION, PAYSON_API_PAYMENT_DETAILS_ACTION]
|
13
|
+
response = post(PAYSON_API_ENDPOINT + action, { :token => token })
|
14
|
+
Response.new(response.body)
|
15
|
+
end
|
16
|
+
|
11
17
|
private
|
12
18
|
|
13
19
|
def self.post(url, data)
|
data/lib/payson_api/pay_data.rb
CHANGED
@@ -16,7 +16,9 @@ class PayData
|
|
16
16
|
{}.tap do |hash|
|
17
17
|
hash['returnUrl'] = @return_url
|
18
18
|
hash['cancelUrl'] = @cancel_url
|
19
|
-
|
19
|
+
if @ipn_url && !@ipn_url.empty?
|
20
|
+
hash['ipnNotificationUrl'] = @ipn_url
|
21
|
+
end
|
20
22
|
hash['memo'] = @memo
|
21
23
|
hash['localeCode'] = LOCALES[@locale] if @locale
|
22
24
|
hash['currencyCode'] = CURRENCIES[@currency] if @currency
|
data/lib/payson_api/version.rb
CHANGED
data/payson_api.gemspec
CHANGED
@@ -0,0 +1,28 @@
|
|
1
|
+
:return_url: http://localhost/return
|
2
|
+
:cancel_url: http://localhost/cancel
|
3
|
+
:ipn_url:
|
4
|
+
:memo: Test
|
5
|
+
:receivers:
|
6
|
+
-
|
7
|
+
:email: mytest@domain.com
|
8
|
+
:amount: 123
|
9
|
+
-
|
10
|
+
:email: mytest2@domain2.com
|
11
|
+
:amount: 234
|
12
|
+
:sender:
|
13
|
+
:email: test_person@anotherdomain.com
|
14
|
+
:first_name: Test
|
15
|
+
:last_name: Person
|
16
|
+
:order_items:
|
17
|
+
-
|
18
|
+
:description: 'My order item description'
|
19
|
+
:unit_price: 1103
|
20
|
+
:quantity: 3
|
21
|
+
:tax: 0
|
22
|
+
:sku: 'MY-ITEM-1'
|
23
|
+
-
|
24
|
+
:description: 'Another order item description'
|
25
|
+
:unit_price: 242
|
26
|
+
:quantity: 2
|
27
|
+
:tax: 10
|
28
|
+
:sku: 'MY-ITEM-2'
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'test/unit'
|
4
|
+
require 'test_helper'
|
5
|
+
require 'payson_api'
|
6
|
+
|
7
|
+
class ConfigTest < Test::Unit::TestCase
|
8
|
+
include TestHelper
|
9
|
+
|
10
|
+
def test_ensure_expected_config
|
11
|
+
assert_equal CONFIG[:api_user_id], PaysonAPI.config.api_user_id
|
12
|
+
assert_equal CONFIG[:api_password], PaysonAPI.config.api_password
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,80 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'test/unit'
|
4
|
+
require 'test_helper'
|
5
|
+
require 'payson_api'
|
6
|
+
|
7
|
+
class PayDataTest < Test::Unit::TestCase
|
8
|
+
include TestHelper
|
9
|
+
ORDER = YAML.load_file('test/fixtures/order.yml')
|
10
|
+
|
11
|
+
def test_generated_hash_from_pay_data
|
12
|
+
sender = PaysonAPI::Sender.new(
|
13
|
+
ORDER[:sender][:email],
|
14
|
+
ORDER[:sender][:first_name],
|
15
|
+
ORDER[:sender][:last_name]
|
16
|
+
)
|
17
|
+
|
18
|
+
receivers = []
|
19
|
+
ORDER[:receivers].each do |receiver|
|
20
|
+
receivers << PaysonAPI::Receiver.new(
|
21
|
+
receiver[:email],
|
22
|
+
receiver[:amount]
|
23
|
+
)
|
24
|
+
end
|
25
|
+
|
26
|
+
pay_data = PaysonAPI::PayData.new(
|
27
|
+
ORDER[:return_url],
|
28
|
+
ORDER[:cancel_url],
|
29
|
+
ORDER[:ipn_url],
|
30
|
+
ORDER[:memo],
|
31
|
+
sender,
|
32
|
+
receivers
|
33
|
+
)
|
34
|
+
|
35
|
+
order_items = []
|
36
|
+
ORDER[:order_items].each do |order_item|
|
37
|
+
order_items << PaysonAPI::OrderItem.new(
|
38
|
+
order_item[:description],
|
39
|
+
order_item[:unit_price],
|
40
|
+
order_item[:quantity],
|
41
|
+
order_item[:tax],
|
42
|
+
order_item[:sku]
|
43
|
+
)
|
44
|
+
end
|
45
|
+
|
46
|
+
pay_data.order_items = order_items
|
47
|
+
pay_data_hash = pay_data.to_hash
|
48
|
+
|
49
|
+
assert_equal ORDER[:return_url], pay_data_hash['returnUrl']
|
50
|
+
assert_equal ORDER[:cancel_url], pay_data_hash['cancelUrl']
|
51
|
+
assert_equal ORDER[:ipn_url], pay_data_hash['ipnNotificationUrl']
|
52
|
+
assert_equal ORDER[:memo], pay_data_hash['memo']
|
53
|
+
|
54
|
+
# Ensure expected format of receiver list
|
55
|
+
receiver_format = PaysonAPI::Receiver::FORMAT_STRING
|
56
|
+
receivers.each_with_index do |receiver, index|
|
57
|
+
email = pay_data_hash[receiver_format % [index, 'email']]
|
58
|
+
amount = pay_data_hash[receiver_format % [index, 'amount']]
|
59
|
+
|
60
|
+
assert_equal receiver.email, email
|
61
|
+
assert_equal receiver.amount, amount
|
62
|
+
end
|
63
|
+
|
64
|
+
# Do same test for order items
|
65
|
+
order_item_format = PaysonAPI::OrderItem::FORMAT_STRING
|
66
|
+
order_items.each_with_index do |order_item, index|
|
67
|
+
description = pay_data_hash[order_item_format % [index, 'description']]
|
68
|
+
unit_price = pay_data_hash[order_item_format % [index, 'unitPrice']]
|
69
|
+
quantity = pay_data_hash[order_item_format % [index, 'quantity']]
|
70
|
+
tax = pay_data_hash[order_item_format % [index, 'taxPercentage']]
|
71
|
+
sku = pay_data_hash[order_item_format % [index, 'sku']]
|
72
|
+
|
73
|
+
assert_equal order_item.description, description
|
74
|
+
assert_equal order_item.unit_price, unit_price
|
75
|
+
assert_equal order_item.quantity, quantity
|
76
|
+
assert_equal order_item.tax, tax
|
77
|
+
assert_equal order_item.sku, sku
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
|
3
|
+
module TestHelper
|
4
|
+
CONFIG = YAML.load_file('test/fixtures/config.yml')
|
5
|
+
|
6
|
+
def setup
|
7
|
+
PaysonAPI.configure do |config|
|
8
|
+
config.api_user_id = CONFIG[:api_user_id]
|
9
|
+
config.api_password = CONFIG[:api_password]
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def teardown
|
14
|
+
end
|
15
|
+
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: payson_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 21
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 5
|
10
|
+
version: 0.0.5
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Christopher Svensson
|
@@ -42,8 +42,11 @@ extra_rdoc_files: []
|
|
42
42
|
|
43
43
|
files:
|
44
44
|
- .gitignore
|
45
|
+
- .travis.yml
|
45
46
|
- Gemfile
|
47
|
+
- Guardfile
|
46
48
|
- README.rdoc
|
49
|
+
- Rakefile
|
47
50
|
- lib/payson_api.rb
|
48
51
|
- lib/payson_api/client.rb
|
49
52
|
- lib/payson_api/config.rb
|
@@ -56,6 +59,11 @@ files:
|
|
56
59
|
- lib/payson_api/sender.rb
|
57
60
|
- lib/payson_api/version.rb
|
58
61
|
- payson_api.gemspec
|
62
|
+
- test/fixtures/config.yml
|
63
|
+
- test/fixtures/order.yml
|
64
|
+
- test/integration/config_test.rb
|
65
|
+
- test/integration/pay_data_test.rb
|
66
|
+
- test/test_helper.rb
|
59
67
|
homepage: https://github.com/stoffus/payson_api
|
60
68
|
licenses: []
|
61
69
|
|
@@ -89,5 +97,9 @@ rubygems_version: 1.8.15
|
|
89
97
|
signing_key:
|
90
98
|
specification_version: 3
|
91
99
|
summary: Client for Payson API
|
92
|
-
test_files:
|
93
|
-
|
100
|
+
test_files:
|
101
|
+
- test/fixtures/config.yml
|
102
|
+
- test/fixtures/order.yml
|
103
|
+
- test/integration/config_test.rb
|
104
|
+
- test/integration/pay_data_test.rb
|
105
|
+
- test/test_helper.rb
|