payson_api 0.4.2 → 1.0.1

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.
Files changed (78) hide show
  1. checksums.yaml +5 -5
  2. data/MIT-LICENSE +16 -17
  3. data/README.md +228 -0
  4. data/lib/payson_api.rb +55 -22
  5. data/lib/payson_api/v1/client.rb +80 -0
  6. data/lib/payson_api/v1/config.rb +63 -0
  7. data/lib/payson_api/v1/envelope.rb +27 -0
  8. data/lib/payson_api/v1/errors/unknown_currency_error.rb +13 -0
  9. data/lib/payson_api/v1/errors/unknown_fees_payer_error.rb +13 -0
  10. data/lib/payson_api/v1/errors/unknown_funding_constraint_error.rb +13 -0
  11. data/lib/payson_api/v1/errors/unknown_guarantee_offering_error.rb +13 -0
  12. data/lib/payson_api/v1/errors/unknown_locale_error.rb +13 -0
  13. data/lib/payson_api/v1/errors/unknown_payment_action_error.rb +13 -0
  14. data/lib/payson_api/v1/funding.rb +38 -0
  15. data/lib/payson_api/v1/order_item.rb +43 -0
  16. data/lib/payson_api/v1/receiver.rb +46 -0
  17. data/lib/payson_api/v1/remote_error.rb +36 -0
  18. data/lib/payson_api/v1/requests/ipn.rb +19 -0
  19. data/lib/payson_api/v1/requests/payment.rb +68 -0
  20. data/lib/payson_api/v1/requests/payment_details.rb +19 -0
  21. data/lib/payson_api/v1/requests/payment_update.rb +27 -0
  22. data/lib/payson_api/v1/responses/ipn.rb +43 -0
  23. data/lib/payson_api/v1/responses/payment.rb +25 -0
  24. data/lib/payson_api/v1/responses/payment_details.rb +50 -0
  25. data/lib/payson_api/v1/responses/payment_update.rb +20 -0
  26. data/lib/payson_api/v1/responses/validate.rb +19 -0
  27. data/lib/payson_api/v1/sender.rb +28 -0
  28. data/lib/payson_api/v1/shipping_address.rb +34 -0
  29. data/lib/payson_api/v2/client.rb +67 -0
  30. data/lib/payson_api/v2/config.rb +51 -0
  31. data/lib/payson_api/v2/errors/unauthorized_error.rb +10 -0
  32. data/lib/payson_api/v2/errors/validation_error.rb +16 -0
  33. data/lib/payson_api/v2/models/account.rb +23 -0
  34. data/lib/payson_api/v2/models/checkout.rb +28 -0
  35. data/lib/payson_api/v2/models/customer.rb +27 -0
  36. data/lib/payson_api/v2/models/merchant.rb +24 -0
  37. data/lib/payson_api/v2/models/order.rb +32 -0
  38. data/lib/payson_api/v2/models/order_item.rb +33 -0
  39. data/lib/payson_api/v2/requests/create_checkout.rb +26 -0
  40. data/lib/payson_api/v2/requests/customer.rb +23 -0
  41. data/lib/payson_api/v2/requests/list_checkouts.rb +23 -0
  42. data/lib/payson_api/v2/requests/merchant.rb +25 -0
  43. data/lib/payson_api/v2/requests/order.rb +22 -0
  44. data/lib/payson_api/v2/requests/order_item.rb +27 -0
  45. data/lib/payson_api/v2/requests/update_checkout.rb +25 -0
  46. data/lib/payson_api/version.rb +3 -1
  47. metadata +70 -53
  48. data/.gitignore +0 -7
  49. data/.travis.yml +0 -5
  50. data/Gemfile +0 -2
  51. data/Guardfile +0 -9
  52. data/README.rdoc +0 -155
  53. data/Rakefile +0 -24
  54. data/lib/payson_api/client.rb +0 -79
  55. data/lib/payson_api/config.rb +0 -50
  56. data/lib/payson_api/envelope.rb +0 -21
  57. data/lib/payson_api/funding.rb +0 -34
  58. data/lib/payson_api/order_item.rb +0 -52
  59. data/lib/payson_api/receiver.rb +0 -52
  60. data/lib/payson_api/remote_error.rb +0 -31
  61. data/lib/payson_api/request/ipn.rb +0 -15
  62. data/lib/payson_api/request/payment.rb +0 -68
  63. data/lib/payson_api/request/payment_details.rb +0 -15
  64. data/lib/payson_api/request/payment_update.rb +0 -22
  65. data/lib/payson_api/response/ipn.rb +0 -36
  66. data/lib/payson_api/response/payment.rb +0 -22
  67. data/lib/payson_api/response/payment_details.rb +0 -43
  68. data/lib/payson_api/response/payment_update.rb +0 -16
  69. data/lib/payson_api/response/validate.rb +0 -15
  70. data/lib/payson_api/sender.rb +0 -29
  71. data/lib/payson_api/shipping_address.rb +0 -36
  72. data/payson_api.gemspec +0 -23
  73. data/test/fixtures/config.yml +0 -2
  74. data/test/fixtures/payment_data.yml +0 -37
  75. data/test/integration/config_test.rb +0 -15
  76. data/test/integration/payment_details_test.rb +0 -21
  77. data/test/integration/payment_test.rb +0 -65
  78. data/test/test_helper.rb +0 -76
@@ -1,2 +0,0 @@
1
- :api_user_id: '4'
2
- :api_password: '2acab30d-fe50-426f-90d7-8c60a7eb31d4'
@@ -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