payson_api 0.4.2 → 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/MIT-LICENSE +16 -17
- data/README.md +228 -0
- data/lib/payson_api.rb +55 -22
- data/lib/payson_api/v1/client.rb +80 -0
- data/lib/payson_api/v1/config.rb +63 -0
- data/lib/payson_api/v1/envelope.rb +27 -0
- data/lib/payson_api/v1/errors/unknown_currency_error.rb +13 -0
- data/lib/payson_api/v1/errors/unknown_fees_payer_error.rb +13 -0
- data/lib/payson_api/v1/errors/unknown_funding_constraint_error.rb +13 -0
- data/lib/payson_api/v1/errors/unknown_guarantee_offering_error.rb +13 -0
- data/lib/payson_api/v1/errors/unknown_locale_error.rb +13 -0
- data/lib/payson_api/v1/errors/unknown_payment_action_error.rb +13 -0
- data/lib/payson_api/v1/funding.rb +38 -0
- data/lib/payson_api/v1/order_item.rb +43 -0
- data/lib/payson_api/v1/receiver.rb +46 -0
- data/lib/payson_api/v1/remote_error.rb +36 -0
- data/lib/payson_api/v1/requests/ipn.rb +19 -0
- data/lib/payson_api/v1/requests/payment.rb +68 -0
- data/lib/payson_api/v1/requests/payment_details.rb +19 -0
- data/lib/payson_api/v1/requests/payment_update.rb +27 -0
- data/lib/payson_api/v1/responses/ipn.rb +43 -0
- data/lib/payson_api/v1/responses/payment.rb +25 -0
- data/lib/payson_api/v1/responses/payment_details.rb +50 -0
- data/lib/payson_api/v1/responses/payment_update.rb +20 -0
- data/lib/payson_api/v1/responses/validate.rb +19 -0
- data/lib/payson_api/v1/sender.rb +28 -0
- data/lib/payson_api/v1/shipping_address.rb +34 -0
- data/lib/payson_api/v2/client.rb +67 -0
- data/lib/payson_api/v2/config.rb +51 -0
- data/lib/payson_api/v2/errors/unauthorized_error.rb +10 -0
- data/lib/payson_api/v2/errors/validation_error.rb +16 -0
- data/lib/payson_api/v2/models/account.rb +23 -0
- data/lib/payson_api/v2/models/checkout.rb +28 -0
- data/lib/payson_api/v2/models/customer.rb +27 -0
- data/lib/payson_api/v2/models/merchant.rb +24 -0
- data/lib/payson_api/v2/models/order.rb +32 -0
- data/lib/payson_api/v2/models/order_item.rb +33 -0
- data/lib/payson_api/v2/requests/create_checkout.rb +26 -0
- data/lib/payson_api/v2/requests/customer.rb +23 -0
- data/lib/payson_api/v2/requests/list_checkouts.rb +23 -0
- data/lib/payson_api/v2/requests/merchant.rb +25 -0
- data/lib/payson_api/v2/requests/order.rb +22 -0
- data/lib/payson_api/v2/requests/order_item.rb +27 -0
- data/lib/payson_api/v2/requests/update_checkout.rb +25 -0
- data/lib/payson_api/version.rb +3 -1
- metadata +70 -53
- data/.gitignore +0 -7
- data/.travis.yml +0 -5
- data/Gemfile +0 -2
- data/Guardfile +0 -9
- data/README.rdoc +0 -155
- data/Rakefile +0 -24
- data/lib/payson_api/client.rb +0 -79
- data/lib/payson_api/config.rb +0 -50
- data/lib/payson_api/envelope.rb +0 -21
- data/lib/payson_api/funding.rb +0 -34
- data/lib/payson_api/order_item.rb +0 -52
- data/lib/payson_api/receiver.rb +0 -52
- data/lib/payson_api/remote_error.rb +0 -31
- data/lib/payson_api/request/ipn.rb +0 -15
- data/lib/payson_api/request/payment.rb +0 -68
- data/lib/payson_api/request/payment_details.rb +0 -15
- data/lib/payson_api/request/payment_update.rb +0 -22
- data/lib/payson_api/response/ipn.rb +0 -36
- data/lib/payson_api/response/payment.rb +0 -22
- data/lib/payson_api/response/payment_details.rb +0 -43
- data/lib/payson_api/response/payment_update.rb +0 -16
- data/lib/payson_api/response/validate.rb +0 -15
- data/lib/payson_api/sender.rb +0 -29
- data/lib/payson_api/shipping_address.rb +0 -36
- data/payson_api.gemspec +0 -23
- data/test/fixtures/config.yml +0 -2
- data/test/fixtures/payment_data.yml +0 -37
- data/test/integration/config_test.rb +0 -15
- data/test/integration/payment_details_test.rb +0 -21
- data/test/integration/payment_test.rb +0 -65
- data/test/test_helper.rb +0 -76
data/test/fixtures/config.yml
DELETED
@@ -1,37 +0,0 @@
|
|
1
|
-
:return_url: http://localhost/return
|
2
|
-
:cancel_url: http://localhost/cancel
|
3
|
-
:ipn_url: http://localhost/ipn
|
4
|
-
:memo: Test
|
5
|
-
:receivers:
|
6
|
-
-
|
7
|
-
:email: test-shopper@payson.se
|
8
|
-
:amount: 123
|
9
|
-
:first_name: Test
|
10
|
-
:last_name: Shopper
|
11
|
-
:primary: true
|
12
|
-
:sender:
|
13
|
-
:email: test-sender@payson.se
|
14
|
-
:first_name: Test
|
15
|
-
:last_name: Sender
|
16
|
-
:order_items:
|
17
|
-
-
|
18
|
-
:description: 'My order item description'
|
19
|
-
:unit_price: 1000 * 0.8
|
20
|
-
:quantity: 3
|
21
|
-
:tax: 0.25
|
22
|
-
:sku: 'MY-ITEM-1'
|
23
|
-
-
|
24
|
-
:description: 'Another order item description'
|
25
|
-
:unit_price: 1500 * 0.8
|
26
|
-
:quantity: 2
|
27
|
-
:tax: 0.25
|
28
|
-
:sku: 'MY-ITEM-2'
|
29
|
-
:fundings:
|
30
|
-
-
|
31
|
-
:constraint: CREDITCARD
|
32
|
-
-
|
33
|
-
:constraint: BANK
|
34
|
-
:fees_payer: EACHRECEIVER
|
35
|
-
:guarantee_offered: NO
|
36
|
-
:locale: SV
|
37
|
-
:currency: SEK
|
@@ -1,15 +0,0 @@
|
|
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
|
-
assert PaysonAPI.test?
|
14
|
-
end
|
15
|
-
end
|
@@ -1,21 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
require 'test/unit'
|
4
|
-
require 'test_helper'
|
5
|
-
require 'payson_api'
|
6
|
-
|
7
|
-
class PaymentDetailsTest < Test::Unit::TestCase
|
8
|
-
include TestHelper
|
9
|
-
|
10
|
-
def test_payment_details_request
|
11
|
-
token = initiate_payment.token
|
12
|
-
|
13
|
-
payment_details = PaysonAPI::Request::PaymentDetails.new(token)
|
14
|
-
response = PaysonAPI::Client.get_payment_details(payment_details)
|
15
|
-
|
16
|
-
assert response.success?
|
17
|
-
assert_equal token, response.token
|
18
|
-
assert_equal PAYMENT_DATA[:sender][:email], URI.unescape(response.sender_email)
|
19
|
-
assert_equal PAYMENT_DATA[:currency], response.currency
|
20
|
-
end
|
21
|
-
end
|
@@ -1,65 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
require 'test/unit'
|
4
|
-
require 'test_helper'
|
5
|
-
require 'payson_api'
|
6
|
-
|
7
|
-
class PaymentTest < Test::Unit::TestCase
|
8
|
-
include TestHelper
|
9
|
-
|
10
|
-
def test_payment_initiation
|
11
|
-
response = initiate_payment
|
12
|
-
|
13
|
-
assert response.success?
|
14
|
-
assert response.forward_url =~ /test-www/
|
15
|
-
end
|
16
|
-
|
17
|
-
def test_generated_hash_from_payment_data
|
18
|
-
setup_payment_hash(include_order_items = true)
|
19
|
-
|
20
|
-
assert_equal PAYMENT_DATA[:return_url], @payment_hash['returnUrl']
|
21
|
-
assert_equal PAYMENT_DATA[:cancel_url], @payment_hash['cancelUrl']
|
22
|
-
assert_equal PAYMENT_DATA[:ipn_url], @payment_hash['ipnNotificationUrl']
|
23
|
-
assert_equal PAYMENT_DATA[:memo], @payment_hash['memo']
|
24
|
-
assert_equal PAYMENT_DATA[:locale], @payment_hash['localeCode']
|
25
|
-
|
26
|
-
# Ensure expected format of receiver list
|
27
|
-
receiver_format = PaysonAPI::Receiver::FORMAT_STRING
|
28
|
-
@receivers.each_with_index do |receiver, index|
|
29
|
-
email = @payment_hash[receiver_format % [index, 'email']]
|
30
|
-
amount = @payment_hash[receiver_format % [index, 'amount']]
|
31
|
-
first_name = @payment_hash[receiver_format % [index, 'firstName']]
|
32
|
-
last_name = @payment_hash[receiver_format % [index, 'lastName']]
|
33
|
-
primary = @payment_hash[receiver_format % [index, 'primary']]
|
34
|
-
|
35
|
-
assert_equal receiver.email, email
|
36
|
-
assert_equal receiver.amount, amount
|
37
|
-
assert_equal receiver.first_name, first_name
|
38
|
-
assert_equal receiver.last_name, last_name
|
39
|
-
assert_equal receiver.primary, primary
|
40
|
-
end
|
41
|
-
|
42
|
-
# Do same test for order items
|
43
|
-
order_item_format = PaysonAPI::OrderItem::FORMAT_STRING
|
44
|
-
@order_items.each_with_index do |order_item, index|
|
45
|
-
description = @payment_hash[order_item_format % [index, 'description']]
|
46
|
-
unit_price = @payment_hash[order_item_format % [index, 'unitPrice']]
|
47
|
-
quantity = @payment_hash[order_item_format % [index, 'quantity']]
|
48
|
-
tax = @payment_hash[order_item_format % [index, 'taxPercentage']]
|
49
|
-
sku = @payment_hash[order_item_format % [index, 'sku']]
|
50
|
-
|
51
|
-
assert_equal order_item.description, description
|
52
|
-
assert_equal order_item.unit_price, unit_price
|
53
|
-
assert_equal order_item.quantity, quantity
|
54
|
-
assert_equal order_item.tax, tax
|
55
|
-
assert_equal order_item.sku, sku
|
56
|
-
end
|
57
|
-
|
58
|
-
# Ensure expected format of fundings list
|
59
|
-
funding_format = PaysonAPI::Funding::FORMAT_STRING
|
60
|
-
@fundings.each_with_index do |funding, index|
|
61
|
-
constraint = @payment_hash[funding_format % [index, 'constraint']]
|
62
|
-
assert_equal funding.constraint, constraint
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
data/test/test_helper.rb
DELETED
@@ -1,76 +0,0 @@
|
|
1
|
-
require 'yaml'
|
2
|
-
|
3
|
-
module TestHelper
|
4
|
-
CONFIG = YAML.load_file('test/fixtures/config.yml')
|
5
|
-
PAYMENT_DATA = YAML.load_file('test/fixtures/payment_data.yml')
|
6
|
-
|
7
|
-
def setup
|
8
|
-
PaysonAPI.configure do |config|
|
9
|
-
config.api_user_id = CONFIG[:api_user_id]
|
10
|
-
config.api_password = CONFIG[:api_password]
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
def setup_payment_hash(include_order_items = false)
|
15
|
-
@sender = PaysonAPI::Sender.new(
|
16
|
-
PAYMENT_DATA[:sender][:email],
|
17
|
-
PAYMENT_DATA[:sender][:first_name],
|
18
|
-
PAYMENT_DATA[:sender][:last_name]
|
19
|
-
)
|
20
|
-
|
21
|
-
@receivers = []
|
22
|
-
PAYMENT_DATA[:receivers].each do |receiver|
|
23
|
-
@receivers << PaysonAPI::Receiver.new(
|
24
|
-
receiver[:email],
|
25
|
-
receiver[:amount],
|
26
|
-
receiver[:first_name],
|
27
|
-
receiver[:last_name],
|
28
|
-
receiver[:primary]
|
29
|
-
)
|
30
|
-
end
|
31
|
-
|
32
|
-
@payment = PaysonAPI::Request::Payment.new(
|
33
|
-
PAYMENT_DATA[:return_url],
|
34
|
-
PAYMENT_DATA[:cancel_url],
|
35
|
-
PAYMENT_DATA[:ipn_url],
|
36
|
-
PAYMENT_DATA[:memo],
|
37
|
-
@sender,
|
38
|
-
@receivers
|
39
|
-
)
|
40
|
-
|
41
|
-
@order_items = []
|
42
|
-
PAYMENT_DATA[:order_items].each do |order_item|
|
43
|
-
@order_items << PaysonAPI::OrderItem.new(
|
44
|
-
order_item[:description],
|
45
|
-
order_item[:unit_price],
|
46
|
-
order_item[:quantity],
|
47
|
-
order_item[:tax],
|
48
|
-
order_item[:sku]
|
49
|
-
)
|
50
|
-
end
|
51
|
-
|
52
|
-
@fundings = []
|
53
|
-
PAYMENT_DATA[:fundings].each do |funding|
|
54
|
-
@fundings << PaysonAPI::Funding.new(
|
55
|
-
funding[:constraint]
|
56
|
-
)
|
57
|
-
end
|
58
|
-
|
59
|
-
@payment.order_items = @order_items if include_order_items
|
60
|
-
@payment.fundings = @fundings
|
61
|
-
@payment.fees_payer = PAYMENT_DATA[:fees_payer]
|
62
|
-
@payment.locale = PAYMENT_DATA[:locale]
|
63
|
-
@payment.guarantee_offered = PAYMENT_DATA[:guarantee_offered]
|
64
|
-
@payment.currency = PAYMENT_DATA[:currency]
|
65
|
-
|
66
|
-
@payment_hash = @payment.to_hash
|
67
|
-
end
|
68
|
-
|
69
|
-
def initiate_payment
|
70
|
-
setup_payment_hash
|
71
|
-
PaysonAPI::Client.initiate_payment(@payment_hash)
|
72
|
-
end
|
73
|
-
|
74
|
-
def teardown
|
75
|
-
end
|
76
|
-
end
|