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,67 @@
|
|
1
|
+
<!doctype html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta charset="utf-8">
|
5
|
+
<meta http-equiv="X-UA-Compatible" content="chrome=1">
|
6
|
+
<title>Adyen-ruby-api-library by Adyen</title>
|
7
|
+
|
8
|
+
<link rel="stylesheet" href="stylesheets/styles.css">
|
9
|
+
<link rel="stylesheet" href="stylesheets/github-light.css">
|
10
|
+
<meta name="viewport" content="width=device-width">
|
11
|
+
|
12
|
+
<link rel="stylesheet" href="stylesheets/prism.css">
|
13
|
+
<script src="javascripts/prism.js"></script>
|
14
|
+
<!--[if lt IE 9]>
|
15
|
+
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
|
16
|
+
<![endif]-->
|
17
|
+
</head>
|
18
|
+
<body>
|
19
|
+
<div class="wrapper">
|
20
|
+
<header>
|
21
|
+
<h1>Adyen-ruby-api-library</h1>
|
22
|
+
<p>Adyen API Library for Ruby</p>
|
23
|
+
|
24
|
+
<p class="view"><a href="https://github.com/Adyen/adyen-ruby-api-library">View the Project on GitHub <small>Adyen/adyen-ruby-api-library</small></a></p>
|
25
|
+
|
26
|
+
|
27
|
+
<ul>
|
28
|
+
<li><a href="https://github.com/Adyen/adyen-ruby-api-library/zipball/master">Download <strong>ZIP File</strong></a></li>
|
29
|
+
<li><a href="https://github.com/Adyen/adyen-ruby-api-library/tarball/master">Download <strong>TAR Ball</strong></a></li>
|
30
|
+
<li><a href="https://github.com/Adyen/adyen-ruby-api-library">View On <strong>GitHub</strong></a></li>
|
31
|
+
</ul>
|
32
|
+
</header>
|
33
|
+
<section>
|
34
|
+
<h2>Using the library</h2>
|
35
|
+
<p>
|
36
|
+
Set up a client and set the credentials to the Adyen platform.
|
37
|
+
</p>
|
38
|
+
|
39
|
+
<pre><code class="ruby language-ruby">require 'adyen'
|
40
|
+
|
41
|
+
adyen = Adyen::Client.new</code></pre>
|
42
|
+
|
43
|
+
<p>
|
44
|
+
The example connects you to the Adyen test platform. If you want to use our live platform use:
|
45
|
+
<pre><code class="ruby">adyen.env = :live</code></pre>
|
46
|
+
</p>
|
47
|
+
|
48
|
+
<p>You can now use the following services:
|
49
|
+
<ul>
|
50
|
+
<li><a title="Checkout" href="checkout.html">Checkout</a></li>
|
51
|
+
<li><a title="Payment" href="payment.html">Payments</a></li>
|
52
|
+
<li><a title="Recurring" href="recurring.html">Recurring</a></li>
|
53
|
+
<li><a title="Payout" href="payout.html">Payouts</a></li>
|
54
|
+
<li><a title="Marketpay" href="marketpay.html">Marketpay</a></li>
|
55
|
+
</ul>
|
56
|
+
</p>
|
57
|
+
|
58
|
+
</section>
|
59
|
+
<footer>
|
60
|
+
<p>This project is maintained by <a href="https://github.com/Adyen">Adyen</a></p>
|
61
|
+
<p><small>Hosted on GitHub Pages — Theme by <a href="https://github.com/orderedlist">orderedlist</a></small></p>
|
62
|
+
</footer>
|
63
|
+
</div>
|
64
|
+
<script src="javascripts/scale.fix.js"></script>
|
65
|
+
|
66
|
+
</body>
|
67
|
+
</html>
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require_relative "adyen/version"
|
2
|
+
require_relative "adyen/client"
|
3
|
+
require_relative "adyen/errors"
|
4
|
+
require_relative "adyen/services/checkout"
|
5
|
+
require_relative "adyen/services/checkout_utility"
|
6
|
+
require_relative "adyen/services/payments"
|
7
|
+
require_relative "adyen/services/payouts"
|
8
|
+
require_relative "adyen/services/recurring"
|
9
|
+
require_relative "adyen/services/marketpay"
|
10
|
+
require_relative "adyen/services/service"
|
11
|
+
|
12
|
+
# add snake case to camel case converter to String
|
13
|
+
# to convert rubinic method names to Adyen API methods
|
14
|
+
#
|
15
|
+
# i.e. snake_case -> snakeCase
|
16
|
+
# note that the first letter is not capitalized as normal
|
17
|
+
class String
|
18
|
+
def to_camel_case
|
19
|
+
split("_").collect.with_index{ |x, i| i > 0 ? x.capitalize : x }.join
|
20
|
+
end
|
21
|
+
end
|
data/lib/adyen/client.rb
ADDED
@@ -0,0 +1,174 @@
|
|
1
|
+
require "faraday"
|
2
|
+
require "json"
|
3
|
+
require_relative "./errors"
|
4
|
+
|
5
|
+
module Adyen
|
6
|
+
class Client
|
7
|
+
attr_accessor :ws_user, :ws_password, :api_key, :client, :adapter, :live_url_prefix
|
8
|
+
attr_reader :env
|
9
|
+
|
10
|
+
def initialize(ws_user: nil, ws_password: nil, api_key: nil, env: :live, adapter: nil, mock_port: 3001, live_url_prefix: nil)
|
11
|
+
@ws_user = ws_user
|
12
|
+
@ws_password = ws_password
|
13
|
+
@api_key = api_key
|
14
|
+
@env = env
|
15
|
+
@adapter = adapter || Faraday.default_adapter
|
16
|
+
@mock_port = mock_port
|
17
|
+
@live_url_prefix = live_url_prefix
|
18
|
+
end
|
19
|
+
|
20
|
+
# make sure that env can only be :live, :test, or :mock
|
21
|
+
def env=(value)
|
22
|
+
raise ArgumentError, "Invalid value for Client.env: '#{value}'' - must be one of [:live, :test, :mock]" unless [:live, :test, :mock].include? value
|
23
|
+
@env = value
|
24
|
+
end
|
25
|
+
|
26
|
+
# remove 'https' from live_url_prefix if necessary
|
27
|
+
def live_url_prefix=(value)
|
28
|
+
if not value["https://"].nil?
|
29
|
+
value["https://"] = ""
|
30
|
+
end
|
31
|
+
@live_url_prefix = value
|
32
|
+
end
|
33
|
+
|
34
|
+
# base URL for API given service and @env
|
35
|
+
def service_url_base(service)
|
36
|
+
raise ArgumentError, "Please set Client.live_url_prefix to the portion of your merchant-specific URL prior to '-[service]-live.adyenpayments.com'" if @live_url_prefix.nil? and @env == :live
|
37
|
+
if @env == :mock
|
38
|
+
"http://localhost:#{@mock_port}"
|
39
|
+
else
|
40
|
+
case service
|
41
|
+
when "Checkout"
|
42
|
+
url = "https://checkout-#{@env}.adyen.com/checkout"
|
43
|
+
when "CheckoutUtility"
|
44
|
+
url = "https://checkout-#{@env}.adyen.com"
|
45
|
+
when "Account", "Fund", "Notification"
|
46
|
+
url = "https://cal-#{@env}.adyen.com/cal/services"
|
47
|
+
when "Recurring", "Payment", "Payout"
|
48
|
+
url = "https://pal-#{@env}.adyen.com/pal/servlet"
|
49
|
+
else
|
50
|
+
raise ArgumentError, "Invalid service specified"
|
51
|
+
end
|
52
|
+
|
53
|
+
if @env == :live
|
54
|
+
url.insert(8, "#{@live_url_prefix}-")
|
55
|
+
url["adyen.com"] = "adyenpayments.com"
|
56
|
+
end
|
57
|
+
|
58
|
+
return url
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
# construct full URL from service and endpoint
|
63
|
+
def service_url(service, action, version)
|
64
|
+
if service == "Checkout"
|
65
|
+
"#{service_url_base(service)}/v#{version}/#{action}"
|
66
|
+
else
|
67
|
+
"#{service_url_base(service)}/#{service}/v#{version}/#{action}"
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
# send request to adyen API
|
72
|
+
def call_adyen_api(service, action, request_data, version)
|
73
|
+
# get URL for requested endpoint
|
74
|
+
url = service_url(service, action, version)
|
75
|
+
|
76
|
+
# make sure right authentication has been provided
|
77
|
+
# will use api_key if present, otherwise ws_user and ws_password
|
78
|
+
if @api_key.nil?
|
79
|
+
if service == "PaymentSetupAndVerification"
|
80
|
+
raise Adyen::AuthenticationError.new("Checkout service requires API-key", request_data), "Checkout service requires API-key"
|
81
|
+
elsif @ws_password.nil? || @ws_user.nil?
|
82
|
+
raise Adyen::AuthenticationError.new("No authentication found - please set api_key or ws_user and ws_password", request_data), "No authentication found - please set api_key or ws_user and ws_password"
|
83
|
+
else
|
84
|
+
auth_type = "basic"
|
85
|
+
end
|
86
|
+
else
|
87
|
+
auth_type = "api-key"
|
88
|
+
end
|
89
|
+
|
90
|
+
# initialize Faraday connection object
|
91
|
+
conn = Faraday.new(url: url) do |faraday|
|
92
|
+
faraday.adapter @adapter
|
93
|
+
faraday.headers["Content-Type"] = "application/json"
|
94
|
+
faraday.headers["User-Agent"] = Adyen::NAME + "/" + Adyen::VERSION
|
95
|
+
|
96
|
+
# set auth type based on service
|
97
|
+
case auth_type
|
98
|
+
when "basic"
|
99
|
+
faraday.basic_auth(@ws_user, @ws_password)
|
100
|
+
when "api-key"
|
101
|
+
faraday.headers["x-api-key"] = @api_key
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
# if json string convert to hash needed to add applicationInfo
|
106
|
+
if request_data.is_a?(String)
|
107
|
+
request_data = JSON.parse(request_data)
|
108
|
+
end
|
109
|
+
|
110
|
+
# add apllication only on checkout service
|
111
|
+
if service == 'Checkout' || service == 'CheckoutUtility'
|
112
|
+
add_application_info(request_data)
|
113
|
+
end
|
114
|
+
|
115
|
+
# convert to json
|
116
|
+
request_data = request_data.to_json
|
117
|
+
|
118
|
+
# post request to Adyen
|
119
|
+
begin
|
120
|
+
response = conn.post do |req|
|
121
|
+
req.body = request_data
|
122
|
+
end # handle client errors
|
123
|
+
rescue Faraday::ConnectionFailed => connection_error
|
124
|
+
raise connection_error, "Connection to #{url} failed"
|
125
|
+
end
|
126
|
+
|
127
|
+
# check for API errors
|
128
|
+
case response.status
|
129
|
+
when 401
|
130
|
+
raise Adyen::AuthenticationError.new("Invalid webservice username / password", request_data)
|
131
|
+
when 403
|
132
|
+
raise Adyen::PermissionError.new("Invalid Checkout API key", request_data)
|
133
|
+
end
|
134
|
+
|
135
|
+
response
|
136
|
+
end
|
137
|
+
|
138
|
+
def add_application_info(request_data)
|
139
|
+
external_platform = {
|
140
|
+
:adyenLibrary => {
|
141
|
+
:name => Adyen::NAME,
|
142
|
+
:version => Adyen::VERSION.to_s
|
143
|
+
}
|
144
|
+
}
|
145
|
+
|
146
|
+
request_data[:applicationInfo] = external_platform
|
147
|
+
end
|
148
|
+
|
149
|
+
# services
|
150
|
+
def checkout
|
151
|
+
@checkout ||= Adyen::Checkout.new(self)
|
152
|
+
end
|
153
|
+
|
154
|
+
def checkout_utility
|
155
|
+
@checkout_utility ||= Adyen::CheckoutUtility.new(self)
|
156
|
+
end
|
157
|
+
|
158
|
+
def payments
|
159
|
+
@payments ||= Adyen::Payments.new(self)
|
160
|
+
end
|
161
|
+
|
162
|
+
def payouts
|
163
|
+
@payouts ||= Adyen::Payouts.new(self)
|
164
|
+
end
|
165
|
+
|
166
|
+
def recurring
|
167
|
+
@recurring ||= Adyen::Recurring.new(self)
|
168
|
+
end
|
169
|
+
|
170
|
+
def marketpay
|
171
|
+
@marketpay ||= Adyen::Marketpay::Marketpay.new(self)
|
172
|
+
end
|
173
|
+
end
|
174
|
+
end
|
data/lib/adyen/errors.rb
ADDED
@@ -0,0 +1,76 @@
|
|
1
|
+
module Adyen
|
2
|
+
class AdyenError < StandardError
|
3
|
+
attr_reader :code, :response, :request
|
4
|
+
|
5
|
+
def initialize(request = nil, response = nil, msg = nil, code = nil)
|
6
|
+
@code = code
|
7
|
+
@response = response
|
8
|
+
@request = request
|
9
|
+
@msg = msg
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
class AuthenticationError < AdyenError
|
14
|
+
def initialize(msg, request)
|
15
|
+
@code = 401
|
16
|
+
@response = nil
|
17
|
+
@request = request
|
18
|
+
@msg = msg
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
class PermissionError < AdyenError
|
23
|
+
def initialize(msg, request)
|
24
|
+
@code = 403
|
25
|
+
@response = nil
|
26
|
+
@request = request
|
27
|
+
@msg = msg
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
class FormatError < AdyenError
|
32
|
+
def initialize(msg, request, response)
|
33
|
+
@code = 422
|
34
|
+
@response = response
|
35
|
+
@request = request
|
36
|
+
@msg = msg
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
class ServerError < AdyenError
|
41
|
+
def initialize(msg, request, response)
|
42
|
+
@code = 500
|
43
|
+
@response = response
|
44
|
+
@request = request
|
45
|
+
@msg = msg
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
class ConfigurationError < AdyenError
|
50
|
+
def initialize(msg, request)
|
51
|
+
@code = 905
|
52
|
+
@response = nil
|
53
|
+
@request = request
|
54
|
+
@msg = msg
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
class ValidationError < AdyenError
|
59
|
+
def initialize(msg, request)
|
60
|
+
@code = nil
|
61
|
+
@response = nil
|
62
|
+
@request = request
|
63
|
+
@msg = msg
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
# catchall for errors which don't have more specific classes
|
68
|
+
class APIError < AdyenError
|
69
|
+
def initialize(msg, request, response, code)
|
70
|
+
@code = code
|
71
|
+
@response = response
|
72
|
+
@request = request
|
73
|
+
@msg = msg
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
require_relative 'service'
|
2
|
+
|
3
|
+
module Adyen
|
4
|
+
class Checkout < Service
|
5
|
+
DEFAULT_VERSION = 40
|
6
|
+
|
7
|
+
def initialize(client, version = DEFAULT_VERSION)
|
8
|
+
service = 'Checkout'
|
9
|
+
method_names = [
|
10
|
+
:payment_methods,
|
11
|
+
:payment_session
|
12
|
+
]
|
13
|
+
|
14
|
+
super(client, version, service, method_names)
|
15
|
+
end
|
16
|
+
|
17
|
+
# This method can't be dynamically defined because
|
18
|
+
# it needs to be both a method and a class
|
19
|
+
# to enable payments() and payments.detail(),
|
20
|
+
# which is accomplished via an argument length checker
|
21
|
+
# and the CheckoutDetail class below
|
22
|
+
def payments(*args)
|
23
|
+
case args.size
|
24
|
+
when 0
|
25
|
+
Adyen::CheckoutDetail.new(@client, @version)
|
26
|
+
when 1
|
27
|
+
action = 'payments'
|
28
|
+
@client.call_adyen_api(@service, action, args[0], @version)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
class CheckoutDetail < Service
|
34
|
+
def initialize(client, version = DEFAULT_VERSION)
|
35
|
+
@service = 'Checkout'
|
36
|
+
@client = client
|
37
|
+
@version = version
|
38
|
+
end
|
39
|
+
|
40
|
+
def details(request)
|
41
|
+
action = "payments/details"
|
42
|
+
@client.call_adyen_api(@service, action, request, @version)
|
43
|
+
end
|
44
|
+
|
45
|
+
def result(request)
|
46
|
+
action = "payments/result"
|
47
|
+
@client.call_adyen_api(@service, action, request, @version)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require_relative 'service'
|
2
|
+
|
3
|
+
module Adyen
|
4
|
+
class CheckoutUtility < Service
|
5
|
+
DEFAULT_VERSION = 1
|
6
|
+
|
7
|
+
def initialize(client, version = DEFAULT_VERSION)
|
8
|
+
service = 'CheckoutUtility'
|
9
|
+
method_names = [
|
10
|
+
:origin_keys
|
11
|
+
]
|
12
|
+
|
13
|
+
super(client, version, service, method_names)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,92 @@
|
|
1
|
+
require_relative 'service'
|
2
|
+
|
3
|
+
module Adyen
|
4
|
+
module Marketpay
|
5
|
+
class Marketpay
|
6
|
+
attr_accessor :service
|
7
|
+
|
8
|
+
def initialize(client)
|
9
|
+
@client = client
|
10
|
+
@service = ""
|
11
|
+
end
|
12
|
+
|
13
|
+
def account
|
14
|
+
@account ||= Adyen::Marketpay::Account.new(@client)
|
15
|
+
end
|
16
|
+
|
17
|
+
def fund
|
18
|
+
@fund ||= Adyen::Marketpay::Fund.new(@client)
|
19
|
+
end
|
20
|
+
|
21
|
+
def notification
|
22
|
+
@notification ||= Adyen::Marketpay::Notification.new(@client)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
class Account < Service
|
27
|
+
attr_accessor :version
|
28
|
+
DEFAULT_VERSION = 4
|
29
|
+
|
30
|
+
def initialize(client, version = DEFAULT_VERSION)
|
31
|
+
service = 'Account'
|
32
|
+
method_names = [
|
33
|
+
:create_account_holder,
|
34
|
+
:update_account_holder,
|
35
|
+
:create_account,
|
36
|
+
:update_account,
|
37
|
+
:upload_document,
|
38
|
+
:get_uploaded_documents,
|
39
|
+
:get_account_holder,
|
40
|
+
:update_account_holder_state,
|
41
|
+
:delete_bank_accounts,
|
42
|
+
:delete_shareholders,
|
43
|
+
:close_account,
|
44
|
+
:close_account_holder,
|
45
|
+
:get_tier_configuration,
|
46
|
+
:suspend_account_holder,
|
47
|
+
:un_suspend_account_holder
|
48
|
+
]
|
49
|
+
|
50
|
+
super(client, version, service, method_names)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
class Fund < Service
|
55
|
+
attr_accessor :version
|
56
|
+
DEFAULT_VERSION = 3
|
57
|
+
|
58
|
+
def initialize(client, version = DEFAULT_VERSION)
|
59
|
+
service = 'Fund'
|
60
|
+
method_names = [
|
61
|
+
:payout_account_holder,
|
62
|
+
:account_holder_balance,
|
63
|
+
:account_holder_transaction_list,
|
64
|
+
:refund_not_paid_out_transfers,
|
65
|
+
:setup_beneficiary,
|
66
|
+
:transfer_funds
|
67
|
+
]
|
68
|
+
|
69
|
+
super(client, version, service, method_names)
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
class Notification < Service
|
74
|
+
attr_accessor :version
|
75
|
+
DEFAULT_VERSION = 1
|
76
|
+
|
77
|
+
def initialize(client, version = DEFAULT_VERSION)
|
78
|
+
service = 'Notification'
|
79
|
+
method_names = [
|
80
|
+
:create_notification_configuration,
|
81
|
+
:update_notification_configuration,
|
82
|
+
:get_notification_configuration,
|
83
|
+
:delete_notification_configurations,
|
84
|
+
:get_notification_configuration_list,
|
85
|
+
:test_notification_configuration
|
86
|
+
]
|
87
|
+
|
88
|
+
super(client, version, service, method_names)
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|