adyen-ruby-api-library 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +13 -0
- data/.travis.yml +14 -0
- data/Gemfile +12 -0
- data/LICENSE +21 -0
- data/README.md +140 -0
- data/Rakefile +6 -0
- data/adyen-ruby-api-library.gemspec +28 -0
- data/bin/console +13 -0
- data/bin/setup +8 -0
- data/docs/checkout.html +111 -0
- data/docs/index.html +50 -0
- data/docs/install-library.html +61 -0
- data/docs/javascripts/prism.js +5 -0
- data/docs/javascripts/scale.fix.js +17 -0
- data/docs/marketpay.html +169 -0
- data/docs/params.json +1 -0
- data/docs/payment.html +106 -0
- data/docs/payout.html +135 -0
- data/docs/recurring.html +113 -0
- data/docs/stylesheets/github-light.css +115 -0
- data/docs/stylesheets/prism.css +140 -0
- data/docs/stylesheets/styles.css +324 -0
- data/docs/using-library.html +67 -0
- data/lib/adyen-ruby-api-library.rb +21 -0
- data/lib/adyen/client.rb +174 -0
- data/lib/adyen/errors.rb +76 -0
- data/lib/adyen/services/checkout.rb +50 -0
- data/lib/adyen/services/checkout_utility.rb +16 -0
- data/lib/adyen/services/marketpay.rb +92 -0
- data/lib/adyen/services/payments.rb +23 -0
- data/lib/adyen/services/payouts.rb +21 -0
- data/lib/adyen/services/recurring.rb +19 -0
- data/lib/adyen/services/service.rb +19 -0
- data/lib/adyen/version.rb +4 -0
- data/spec/account_spec.rb +27 -0
- data/spec/checkout_spec.rb +94 -0
- data/spec/checkout_utility_spec.rb +27 -0
- data/spec/client_spec.rb +40 -0
- data/spec/fund_spec.rb +19 -0
- data/spec/mocks/requests/Account/close_account.json +3 -0
- data/spec/mocks/requests/Account/close_account_holder.json +3 -0
- data/spec/mocks/requests/Account/create_account.json +3 -0
- data/spec/mocks/requests/Account/create_account_holder.json +15 -0
- data/spec/mocks/requests/Account/delete_bank_accounts.json +6 -0
- data/spec/mocks/requests/Account/delete_shareholders.json +6 -0
- data/spec/mocks/requests/Account/get_account_holder.json +3 -0
- data/spec/mocks/requests/Account/get_uploaded_documents.json +4 -0
- data/spec/mocks/requests/Account/suspend_account_holder.json +3 -0
- data/spec/mocks/requests/Account/un_suspend_account_holder.json +3 -0
- data/spec/mocks/requests/Account/update_account.json +7 -0
- data/spec/mocks/requests/Account/update_account_holder.json +33 -0
- data/spec/mocks/requests/Account/update_account_holder_state.json +6 -0
- data/spec/mocks/requests/Account/upload_document.json +9 -0
- data/spec/mocks/requests/Checkout/payment-details.json +18 -0
- data/spec/mocks/requests/Checkout/payment-result.json +3 -0
- data/spec/mocks/requests/Checkout/payment_methods.json +3 -0
- data/spec/mocks/requests/Checkout/payment_session.json +15 -0
- data/spec/mocks/requests/Checkout/payments.json +17 -0
- data/spec/mocks/requests/Checkout/verify.json +3 -0
- data/spec/mocks/requests/CheckoutUtility/origin_keys.json +7 -0
- data/spec/mocks/requests/Fund/account_holder_balance.json +3 -0
- data/spec/mocks/requests/Fund/account_holder_transaction_list.json +16 -0
- data/spec/mocks/requests/Fund/payout_account_holder.json +10 -0
- data/spec/mocks/requests/Fund/refund_not_paid_out_transfers.json +4 -0
- data/spec/mocks/requests/Fund/setup_beneficiary.json +5 -0
- data/spec/mocks/requests/Fund/transfer_funds.json +9 -0
- data/spec/mocks/requests/Notification/create_notification_configuration.json +20 -0
- data/spec/mocks/requests/Notification/delete_notification_configurations.json +6 -0
- data/spec/mocks/requests/Notification/get_notification_configuration.json +3 -0
- data/spec/mocks/requests/Notification/get_notification_configuration_list.json +1 -0
- data/spec/mocks/requests/Notification/test_notification_configuration.json +4 -0
- data/spec/mocks/requests/Notification/update_notification_configuration.json +26 -0
- data/spec/mocks/requests/Payment/adjust_authorisation.json +12 -0
- data/spec/mocks/requests/Payment/authorise.json +28 -0
- data/spec/mocks/requests/Payment/authorise3d.json +6 -0
- data/spec/mocks/requests/Payment/cancel.json +4 -0
- data/spec/mocks/requests/Payment/cancel_or_refund.json +4 -0
- data/spec/mocks/requests/Payment/capture.json +8 -0
- data/spec/mocks/requests/Payment/refund.json +8 -0
- data/spec/mocks/requests/Payout/confirm_third_party.json +4 -0
- data/spec/mocks/requests/Payout/decline_third_party.json +4 -0
- data/spec/mocks/requests/Payout/store_detail.json +33 -0
- data/spec/mocks/requests/Payout/store_detail_and_submit_third_party.json +33 -0
- data/spec/mocks/requests/Payout/submit_third_party.json +22 -0
- data/spec/mocks/requests/Recurring/disable.json +5 -0
- data/spec/mocks/requests/Recurring/list_recurring_details.json +4 -0
- data/spec/mocks/requests/Recurring/store_token.json +15 -0
- data/spec/mocks/responses/Account/close_account.json +5 -0
- data/spec/mocks/responses/Account/close_account_holder.json +7 -0
- data/spec/mocks/responses/Account/create_account.json +7 -0
- data/spec/mocks/responses/Account/create_account_holder.json +116 -0
- data/spec/mocks/responses/Account/delete_bank_accounts.json +4 -0
- data/spec/mocks/responses/Account/delete_shareholders.json +4 -0
- data/spec/mocks/responses/Account/get_account_holder.json +71 -0
- data/spec/mocks/responses/Account/get_uploaded_documents.json +16 -0
- data/spec/mocks/responses/Account/suspend_account_holder.json +24 -0
- data/spec/mocks/responses/Account/un_suspend_account_holder.json +24 -0
- data/spec/mocks/responses/Account/update_account.json +9 -0
- data/spec/mocks/responses/Account/update_account_holder.json +95 -0
- data/spec/mocks/responses/Account/update_account_holder_state.json +27 -0
- data/spec/mocks/responses/Account/upload_document.json +77 -0
- data/spec/mocks/responses/Checkout/payment-details.json +14 -0
- data/spec/mocks/responses/Checkout/payment-result.json +4 -0
- data/spec/mocks/responses/Checkout/payment_methods.json +66 -0
- data/spec/mocks/responses/Checkout/payment_session.json +572 -0
- data/spec/mocks/responses/Checkout/payments.json +95 -0
- data/spec/mocks/responses/Checkout/verify.json +121 -0
- data/spec/mocks/responses/CheckoutUtility/origin_keys.json +7 -0
- data/spec/mocks/responses/Fund/account_holder_balance.json +47 -0
- data/spec/mocks/responses/Fund/account_holder_transaction_list.json +73 -0
- data/spec/mocks/responses/Fund/payout_account_holder.json +6 -0
- data/spec/mocks/responses/Fund/refund_not_paid_out_transfers.json +5 -0
- data/spec/mocks/responses/Fund/setup_beneficiary.json +5 -0
- data/spec/mocks/responses/Fund/transfer_funds.json +6 -0
- data/spec/mocks/responses/Notification/create_notification_configuration.json +41 -0
- data/spec/mocks/responses/Notification/delete_notification_configurations.json +23 -0
- data/spec/mocks/responses/Notification/get_notification_configuration.json +41 -0
- data/spec/mocks/responses/Notification/get_notification_configuration_list.json +65 -0
- data/spec/mocks/responses/Notification/test_notification_configuration.json +49 -0
- data/spec/mocks/responses/Notification/update_notification_configuration.json +47 -0
- data/spec/mocks/responses/Payment/adjust_authorisation.json +4 -0
- data/spec/mocks/responses/Payment/authorise.json +95 -0
- data/spec/mocks/responses/Payment/authorise3d.json +30 -0
- data/spec/mocks/responses/Payment/cancel.json +4 -0
- data/spec/mocks/responses/Payment/cancel_or_refund.json +4 -0
- data/spec/mocks/responses/Payment/capture.json +4 -0
- data/spec/mocks/responses/Payment/refund.json +4 -0
- data/spec/mocks/responses/Payout/confirm_third_party.json +4 -0
- data/spec/mocks/responses/Payout/decline_third_party.json +4 -0
- data/spec/mocks/responses/Payout/store_detail.json +5 -0
- data/spec/mocks/responses/Payout/store_detail_and_submit_third_party.json +8 -0
- data/spec/mocks/responses/Payout/submit_third_party.json +8 -0
- data/spec/mocks/responses/Recurring/disable.json +30 -0
- data/spec/mocks/responses/Recurring/list_recurring_details.json +62 -0
- data/spec/mocks/responses/Recurring/store_token.json +7 -0
- data/spec/notification_spec.rb +19 -0
- data/spec/payments_spec.rb +20 -0
- data/spec/payouts_spec.rb +18 -0
- data/spec/recurring_spec.rb +17 -0
- data/spec/spec_helper.rb +94 -0
- metadata +246 -0
@@ -0,0 +1,23 @@
|
|
1
|
+
require_relative 'service'
|
2
|
+
|
3
|
+
module Adyen
|
4
|
+
class Payments < Service
|
5
|
+
attr_accessor :version
|
6
|
+
DEFAULT_VERSION = 40
|
7
|
+
|
8
|
+
def initialize(client, version = DEFAULT_VERSION)
|
9
|
+
service = 'Payment'
|
10
|
+
method_names = [
|
11
|
+
:authorise,
|
12
|
+
:authorise3d,
|
13
|
+
:capture,
|
14
|
+
:cancel,
|
15
|
+
:refund,
|
16
|
+
:cancel_or_refund,
|
17
|
+
:adjust_authorisation
|
18
|
+
]
|
19
|
+
|
20
|
+
super(client, version, service, method_names)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require_relative 'service'
|
2
|
+
|
3
|
+
module Adyen
|
4
|
+
class Payouts < Service
|
5
|
+
attr_accessor :version
|
6
|
+
DEFAULT_VERSION = 30
|
7
|
+
|
8
|
+
def initialize(client, version = DEFAULT_VERSION)
|
9
|
+
service = 'Payout'
|
10
|
+
method_names = [
|
11
|
+
:store_detail,
|
12
|
+
:store_detail_and_submit_third_party,
|
13
|
+
:submit_third_party,
|
14
|
+
:confirm_third_party,
|
15
|
+
:decline_third_party
|
16
|
+
]
|
17
|
+
|
18
|
+
super(client, version, service, method_names)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require_relative 'service'
|
2
|
+
|
3
|
+
module Adyen
|
4
|
+
class Recurring < Service
|
5
|
+
attr_accessor :version
|
6
|
+
DEFAULT_VERSION = 25
|
7
|
+
|
8
|
+
def initialize(client, version = DEFAULT_VERSION)
|
9
|
+
service = 'Recurring'
|
10
|
+
method_names = [
|
11
|
+
:list_recurring_details,
|
12
|
+
:disable,
|
13
|
+
:store_token
|
14
|
+
]
|
15
|
+
|
16
|
+
super(client, version, service, method_names)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Adyen
|
2
|
+
class Service
|
3
|
+
attr_accessor :service, :version
|
4
|
+
|
5
|
+
def initialize(client, version, service, method_names)
|
6
|
+
@client = client
|
7
|
+
@version = version
|
8
|
+
@service = service
|
9
|
+
|
10
|
+
# dynamically create API methods
|
11
|
+
method_names.each do |method_name|
|
12
|
+
define_singleton_method method_name do |request|
|
13
|
+
action = method_name.to_s.to_camel_case
|
14
|
+
@client.call_adyen_api(@service, action, request, @version)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
RSpec.describe Adyen::Payments, service: "marketpay account service" do
|
4
|
+
# client instance to be used in dynamically generated tests
|
5
|
+
client = create_client(:basic)
|
6
|
+
|
7
|
+
# methods / values to test for
|
8
|
+
# format is defined in spec_helper
|
9
|
+
test_sets = [
|
10
|
+
["create_account_holder", "accountHolderCode", "TestAccountHolder781664"],
|
11
|
+
["get_account_holder", "pspReference", "8815263414367329"],
|
12
|
+
["update_account_holder", "pspReference", "9914762676580105"],
|
13
|
+
["update_account_holder_state", "pspReference", "8515090175978108"],
|
14
|
+
["suspend_account_holder", "pspReference", "9914762643560032"],
|
15
|
+
["un_suspend_account_holder", "pspReference", "9914762644860159"],
|
16
|
+
["close_account_holder", "pspReference", "9914713476670992"],
|
17
|
+
["create_account", "status", "Active"],
|
18
|
+
["update_account", "pspReference", "9914860311410009"],
|
19
|
+
["close_account", "status", "Closed"],
|
20
|
+
["upload_document", "pspReference", "9914762681460244"],
|
21
|
+
["get_uploaded_documents", "pspReference", "9914694369860322"],
|
22
|
+
["delete_bank_accounts", "pspReference", "9914694372670551"],
|
23
|
+
["delete_shareholders", "pspReference", "9914694372990637"]
|
24
|
+
]
|
25
|
+
|
26
|
+
generate_tests(client, "Account", test_sets, client.marketpay.account)
|
27
|
+
end
|
@@ -0,0 +1,94 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
require "json"
|
3
|
+
|
4
|
+
# rubocop:disable Metrics/BlockLength
|
5
|
+
|
6
|
+
RSpec.describe Adyen::Checkout, service: "checkout" do
|
7
|
+
before(:all) do
|
8
|
+
@shared_values = {
|
9
|
+
client: create_client(:api_key),
|
10
|
+
service: "Checkout",
|
11
|
+
}
|
12
|
+
end
|
13
|
+
|
14
|
+
# must be created manually because every field in the response is an array
|
15
|
+
it "makes a payment_methods call" do
|
16
|
+
parsed_body = create_test(@shared_values[:client], @shared_values[:service], "payment_methods", @shared_values[:client].checkout)
|
17
|
+
expect(parsed_body["paymentMethods"].class).
|
18
|
+
to be Array
|
19
|
+
end
|
20
|
+
|
21
|
+
# must be created manually due to payments/details format
|
22
|
+
it "makes a payments/details call" do
|
23
|
+
request_body = JSON.parse(json_from_file("mocks/requests/Checkout/payment-details.json"))
|
24
|
+
@shared_values[:client].add_application_info(request_body)
|
25
|
+
|
26
|
+
response_body = json_from_file("mocks/responses/Checkout/payment-details.json")
|
27
|
+
|
28
|
+
url = @shared_values[:client].service_url(@shared_values[:service], "payments/details", @shared_values[:client].checkout.version)
|
29
|
+
WebMock.stub_request(:post, url).
|
30
|
+
with(
|
31
|
+
body: request_body,
|
32
|
+
headers: {
|
33
|
+
"x-api-key" => @shared_values[:client].api_key
|
34
|
+
}
|
35
|
+
).
|
36
|
+
to_return(
|
37
|
+
body: response_body
|
38
|
+
)
|
39
|
+
response = @shared_values[:client].checkout.payments.details(request_body)
|
40
|
+
|
41
|
+
expect(response.status).
|
42
|
+
to eq(200)
|
43
|
+
expect(response.body).
|
44
|
+
to eq(response_body)
|
45
|
+
expect((parsed_body = JSON.parse(response.body)).class).
|
46
|
+
to be Hash
|
47
|
+
expect(parsed_body["resultCode"]).
|
48
|
+
to eq("RedirectShopper")
|
49
|
+
end
|
50
|
+
|
51
|
+
# must be created manually due to payments/result format
|
52
|
+
it "makes a payments/result call" do
|
53
|
+
request_body = JSON.parse(json_from_file("mocks/requests/Checkout/payment-result.json"))
|
54
|
+
@shared_values[:client].add_application_info(request_body)
|
55
|
+
|
56
|
+
response_body = json_from_file("mocks/responses/Checkout/payment-result.json")
|
57
|
+
|
58
|
+
url = @shared_values[:client].service_url(@shared_values[:service], "payments/result", @shared_values[:client].checkout.version)
|
59
|
+
WebMock.stub_request(:post, url).
|
60
|
+
with(
|
61
|
+
body: request_body,
|
62
|
+
headers: {
|
63
|
+
"x-api-key" => @shared_values[:client].api_key
|
64
|
+
}
|
65
|
+
).
|
66
|
+
to_return(
|
67
|
+
body: response_body
|
68
|
+
)
|
69
|
+
response = @shared_values[:client].checkout.payments.result(request_body)
|
70
|
+
|
71
|
+
expect(response.status).
|
72
|
+
to eq(200)
|
73
|
+
expect(response.body).
|
74
|
+
to eq(response_body)
|
75
|
+
expect((parsed_body = JSON.parse(response.body)).class).
|
76
|
+
to be Hash
|
77
|
+
expect(parsed_body["resultCode"]).
|
78
|
+
to eq("Authorised")
|
79
|
+
end
|
80
|
+
|
81
|
+
# create client for automated tests
|
82
|
+
client = create_client(:api_key)
|
83
|
+
|
84
|
+
# methods / fields to test on
|
85
|
+
# format is defined in spec_helper
|
86
|
+
test_sets = [
|
87
|
+
["payment_session", "publicKeyToken", "8115054323780109"],
|
88
|
+
["payments", "resultCode", "Authorised"]
|
89
|
+
]
|
90
|
+
|
91
|
+
generate_tests(client, "Checkout", test_sets, client.checkout)
|
92
|
+
end
|
93
|
+
|
94
|
+
# rubocop:enable Metrics/BlockLength
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
require "json"
|
3
|
+
|
4
|
+
# rubocop:disable Metrics/BlockLength
|
5
|
+
|
6
|
+
RSpec.describe Adyen::CheckoutUtility, service: "checkout utility" do
|
7
|
+
before(:all) do
|
8
|
+
@shared_values = {
|
9
|
+
client: create_client(:api_key),
|
10
|
+
service: "CheckoutUtility",
|
11
|
+
}
|
12
|
+
end
|
13
|
+
|
14
|
+
it "sets the correct service URL base" do
|
15
|
+
client = Adyen::Client.new(env: :test)
|
16
|
+
expect(client.service_url_base(@shared_values[:service])).to eq("https://checkout-test.adyen.com")
|
17
|
+
end
|
18
|
+
|
19
|
+
# must be created manually because every field in the response is an array
|
20
|
+
it "makes an origin_keys call" do
|
21
|
+
parsed_body = create_test(@shared_values[:client], @shared_values[:service], "origin_keys", @shared_values[:client].checkout_utility)
|
22
|
+
expect(parsed_body["originKeys"].class).
|
23
|
+
to be Hash
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
# rubocop:enable Metrics/BlockLength
|
data/spec/client_spec.rb
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
RSpec.describe Adyen do
|
4
|
+
before(:all) do
|
5
|
+
@shared_values = {
|
6
|
+
client: nil
|
7
|
+
}
|
8
|
+
end
|
9
|
+
|
10
|
+
it "creates Adyen client" do
|
11
|
+
@shared_values[:client] = Adyen::Client.new
|
12
|
+
expect(@shared_values[:client]).is_a? Adyen::Client
|
13
|
+
end
|
14
|
+
|
15
|
+
it "sets env to :mock" do
|
16
|
+
@shared_values[:client].env = :test
|
17
|
+
expect(@shared_values[:client].env).
|
18
|
+
to eq(:test)
|
19
|
+
end
|
20
|
+
|
21
|
+
it "sets the version number" do
|
22
|
+
@shared_values[:client].checkout.version = @shared_values[:version]
|
23
|
+
expect(@shared_values[:client].checkout.version).
|
24
|
+
to eq(@shared_values[:version])
|
25
|
+
end
|
26
|
+
|
27
|
+
it "fails payments call without WS user and password" do
|
28
|
+
expect{ @shared_values[:client].payments.authorise("{}") }.
|
29
|
+
to raise_error(Adyen::AuthenticationError)
|
30
|
+
@shared_values[:client].ws_user = @shared_values[:ws_user]
|
31
|
+
expect{ @shared_values[:client].payments.authorise("{}") }.
|
32
|
+
to raise_error(Adyen::AuthenticationError)
|
33
|
+
end
|
34
|
+
|
35
|
+
it "fails a checkout call without api key" do
|
36
|
+
expect{ @shared_values[:client].checkout.payment_methods("{}") }.
|
37
|
+
to raise_error(Adyen::AuthenticationError)
|
38
|
+
@shared_values[:client].api_key = "api_key"
|
39
|
+
end
|
40
|
+
end
|
data/spec/fund_spec.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
RSpec.describe Adyen::Payments, service: "marketpay fund service" do
|
4
|
+
# client instance to be used in dynamically generated tests
|
5
|
+
client = create_client(:basic)
|
6
|
+
|
7
|
+
# methods / values to test for
|
8
|
+
# format is defined in spec_helper
|
9
|
+
test_sets = [
|
10
|
+
["payout_account_holder", "pspReference", "9915090894325643"],
|
11
|
+
["account_holder_balance", "pspReference", "9914719436100053"],
|
12
|
+
["account_holder_transaction_list", "pspReference", "9914721175530029"],
|
13
|
+
["refund_not_paid_out_transfers", "pspReference", "9915090894215323"],
|
14
|
+
["setup_beneficiary", "pspReference", "9914860354282596"],
|
15
|
+
["transfer_funds", "pspReference", "9915090893984580"]
|
16
|
+
]
|
17
|
+
|
18
|
+
generate_tests(client, "Fund", test_sets, client.marketpay.fund)
|
19
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
{
|
2
|
+
"accountHolderCode": "GENERATE_CODE",
|
3
|
+
"accountHolderDetails": {
|
4
|
+
"email": "tim@green.com",
|
5
|
+
"individualDetails": {
|
6
|
+
"name": {
|
7
|
+
"firstName": "Tim",
|
8
|
+
"gender": "MALE",
|
9
|
+
"lastName": "Green"
|
10
|
+
}
|
11
|
+
}
|
12
|
+
},
|
13
|
+
"legalEntity": "Individual",
|
14
|
+
"description": "Test Account Holder"
|
15
|
+
}
|
@@ -0,0 +1,33 @@
|
|
1
|
+
{
|
2
|
+
"accountHolderCode": "CODE_OF_ACCOUNT_HOLDER",
|
3
|
+
"accountHolderDetails": {
|
4
|
+
"address": {
|
5
|
+
"city": "Amsterdam",
|
6
|
+
"country": "NL",
|
7
|
+
"postalCode": "12345",
|
8
|
+
"stateOrProvince": "NH",
|
9
|
+
"street": "Teststreet 1"
|
10
|
+
},
|
11
|
+
"bankAccountDetails": [],
|
12
|
+
"email": "test@adyen.com",
|
13
|
+
"individualDetails": {
|
14
|
+
"name": {
|
15
|
+
"firstName": "First name",
|
16
|
+
"gender": "MALE",
|
17
|
+
"lastName": "Last Name"
|
18
|
+
},
|
19
|
+
"personalData": {
|
20
|
+
"dateOfBirth": "1970-01-01",
|
21
|
+
"idNumber": "1234567890",
|
22
|
+
"nationality": "NL"
|
23
|
+
}
|
24
|
+
},
|
25
|
+
"merchantCategoryCode": "7999",
|
26
|
+
"phoneNumber": {
|
27
|
+
"phoneCountryCode": "NL",
|
28
|
+
"phoneNumber": "0612345678",
|
29
|
+
"phoneType": "Mobile"
|
30
|
+
},
|
31
|
+
"webAddress": "http://www.accountholderwebsite.com"
|
32
|
+
}
|
33
|
+
}
|
@@ -0,0 +1,18 @@
|
|
1
|
+
{
|
2
|
+
"amount": {
|
3
|
+
"currency": "USD",
|
4
|
+
"value": 1000
|
5
|
+
},
|
6
|
+
"paymentMethod": {
|
7
|
+
"type": "ideal",
|
8
|
+
"idealIssuer": 1155
|
9
|
+
},
|
10
|
+
"paymentData": "Hee57361f99ddcf4!ZW5jcnlwdGVkPUJRQUJBZ0JvNGhIUnFUcUxwMVYxY0JJb0R2Sk5lWmQzVDZZckdGSTNRU2hrRnFkUGhzSiUyQmY3ZzJJd1hTa2hVYXZlUUFIT1ExZnNQbzRYVzV4YUFydnplRFdNYTQ5ZHhnbDNHbzNGM2RHTnAlMkJvSGhzM1hIQXZZNHc4UjhGMDVWdHNWR0hSek1qeW1TT291MGp6TnlqUU80cWpDeGNQQlF4bVVyUU1CeDhBVU9COXlWRlRhaFNwM1N5RlprZ3FOZkpjcTdxMVhycFJ3SENkamdZJTJCd1lWcmtMeEN3MmpuYmQ4N2JwazRicE45QjNJYXp0bkszY05USW5qWnZXQTc3MmdMTVRaTjJWTHgyNm4lMkI5ZDA3akdxSkpsUG5xSndBdkFEdzh2OXd4aHRyTXhXbGFYemxJejNuc2NWY05zR3JDNUFZVExtaXRTazB2eVRKUXNqRlNKTXltTG1IdmppcXFmR3JrY0glMkJzWWpiQ1M5dTB3TlN4OFQlMkJJRTN6a2VuMGZ3Ylo4RHE2M21NdGZ3WURkRDNGbjJMUnJvT0oxN3pTTWRXSmtoUjdLTVo1OXRERE1VWlBEajNWWHRMY29MNUF0dWtLTlFQTEFENWdBOEppdmZCc0h5YlBPY25ZOVpzc291TTJQVjBLcWtldk0xMUdHZlgwYiUyQmdHcjB6NHQxOE9LM25weHVIdXJoNzV0T3oyJTJGUHRTSnBkT2lKOGo2Z0F1Q1JQdFh4ZHZBT0NMaldwQ210Smg2Wmw5VGYwZXdFREhFelN6NnQ3N2pleWpnOTFMaVRZQkhHMDBvSkJyWk0lMkJvOVliJTJCM0JYcFFQVzNwVThKSGdKbWJJUVFEenpCNyUyQnFiMHBRQ1FDam1xelJkSUx1UDQzOW82ZHFNS1hyMFhjSEpkNkNxMmtRaUxNNk1xcmJUYjZkMmhDNUFlcE1ZSEs5NVFzJTJCS1dzNU1FajdBRXA3SW10bGVTSTZJa0ZHTUVGQlFURXdNME5CTlRNM1JVRkZSRGczUXpJMFJFUTFNemt3T1VJNE1FRTNPRUU1TWpORk16Z3lNMFEyT0VSQlEwTTVORUk1UmtZNE16QTFSRU1pZll0MWhDUUREenpiSiUyRkV6NGJXdHdSNEQ0VjZ5JTJCWVVuTHNVc1NsbGZsJTJGV1Fka2ZmU0t5d1E2Z0RKY2tJUlBuelpvREhZSHUwVDdPd2gycHk5VyUyQjBmMXRISTJRYnZvdnBNR0tQRHdndSUyQkUlMkZaM0JvTm9xYTlEMiUyRmNrcTdSZ0RXMmdqMFpiYXplbk5oQ2hMaTJ3YjBlampMYzR6cHJhJTJGellmUkVVM0ZCSUJmdzBKeEtWVzU1NENxUEJvSGlIU3c2Sml5MlE3cnhjSjJSc3FiJTJCR25zTnRIYjN4c3NyMiUyQjRMTjYyZXZ3ciUyQiUyQk5ITEVLejVHSWxKMERJdG1JT1VWR1U1YlA4a2M1a0ZGR1JQYzNNODh4MCUyRlpVVG54bVlscVR1MDg0Mm1MUlh3WnJPaUoySlVXY3QlMkIzdDNlb1p6UG1jV0VZdkhZRG1OJTJCd2J0WXVRcmhIdWFrTVpCeGdRWjczeGd4WUZoaUZUMnYyQmFDT2pSZyUyQjBiMGJhZ3BEU1R1dVJQRFg2b0txa3ZYb0h2MFhqcGRHWUR4VmMlMkZ5SWxtMXp0WmNVcmo3Z1FqTkVvNjE1b2F3UmhxZTJyOXlTdTdCZ2FLQXJ4UjEzSDBRZzVIQlJJT0g5Zk92MnV6Vk5zNFZGMEYzcDhmJTJGdnBsMXlBcnZaRzFkWm5VYkZ1c092bVdIM2hyRDgwQVdzczRlJTJGYW5HMUxOaXhYSEVlUyUyRmEyQUxIcXp6THVHakZsRHZXZ2prQjNrU2t5S3d4ZVlQb284dk03cHFhTEFKV010T2ZtbnZUd1pqUVJUTnp1V0NSbjBwbHU3QVF2Q3hPZXMzRFg5ZTR3WDZBd1FhaXhIUjRQbXM2TnJxMVFuRkZLNHNrMW5kRGZqRTdEaXhGdlVpWlhUOHklMkZGcEFFMENPR0VhRCUyQmpGR1ZDYVI0NkVuMEo2RmJkOGFyQVYxaGJSNGZ5cFlaMFFuNFF6dE1MTWtpWW4xR0NQeWZyTjJxZEJ1aExmNFBqeUtSeFRLa2x6JTJGTmVvSnM1Smc2dVJiNVA0eiUyQiUyQkhlMUZqWFlUMXBXRzBnaDZtSDNvakttQyUyRmdOSTV3cHFlWDRpY2ZIb2t3RVB0VXAyTDFKYWNjd2xlZkU5dGlMZGZlQXJEbVZGJTJGRGp6UjE2S0JPNW1VMUR4R2dnd09DRDMzRkVqSCUyRjVERDklMkZwSW5IU0lSZFpmZDlRN2E1b1VwYmFFbFdhV2dxZjBEQ3RwWmluU2ZCWUZMNFBKeTAlMkZEdWd0VWZuWHdCVFNJV045c1lVYmFxODRMZXhkbVBHeFBwWUUyVHFaUWluVmRMTmtLbEJhQUpjUDV0JTJGTWQ4Nk5HM0lLVDZzalozJTJCVWxkMXRyNWIxVW8xbThCaSZ2ZXJzaW9uPTI=",
|
11
|
+
"details": {
|
12
|
+
"key": "returnUrlQueryString",
|
13
|
+
"type": "text"
|
14
|
+
},
|
15
|
+
"returnUrl": "",
|
16
|
+
"reference": "Merchant Reference",
|
17
|
+
"merchantAccount": "TestMerchant"
|
18
|
+
}
|