adyen-ruby-api-library 7.1.0 → 7.3.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e77636d4dad0702e8816c00de1f5cf37ab3d1c841f73b2b20f5e256275458e53
4
- data.tar.gz: fc410bcae06fc7a846e1a72edc39d34f838e2253e59c9e315839c9c299723b55
3
+ metadata.gz: c1300892927a3672dfbd9089c748994ba1f039f25ecc5af6e7ef1d115d775ec1
4
+ data.tar.gz: 10a3cec4cbbb95fb24675f189e4f40cb11cd75f787b46744c889241d1b51e2b7
5
5
  SHA512:
6
- metadata.gz: 6c79bf2bfd30680ad73ac71f18416436bdfcfeb110260c3f78456aac857acafeb52f915be43fa2f26f9570c1a6846ed02751dd4b147b574ea4ed35d0e6ce7d8f
7
- data.tar.gz: 2848c7cba6583e4ed195c71eaf8e736832bf8b55e713d3f9001d71cea4d129471f1da92a3c5d59e88f3c8c592fd8854039c9f7350955f0361bc059422a7289fc
6
+ metadata.gz: 131fa5d5a45b91f260e4e407a7512da5ae9e77857b22ecff4af3e0d8adfe34d9da8fe44b18cb30ee47b741318fb85656b679a3a71cf1608166de5345c0ec4a99
7
+ data.tar.gz: 56320c824a2a9d2ac463fe791a5617db494b23bc0bb014dbb3e74d33d3639f6e9610e8e7d4b83b6b9aa0c48642c869bff3fd957d3638da442144e5be4581a917
@@ -24,7 +24,7 @@ jobs:
24
24
 
25
25
  steps:
26
26
  - name: Checkout
27
- uses: actions/checkout@v3
27
+ uses: actions/checkout@v4
28
28
 
29
29
  - name: Initialize CodeQL
30
30
  uses: github/codeql-action/init@v2
@@ -12,7 +12,7 @@ jobs:
12
12
  ruby: [2.7, '3.0', 3.1, 3.2, head]
13
13
  runs-on: ${{ matrix.os }}
14
14
  steps:
15
- - uses: actions/checkout@v3
15
+ - uses: actions/checkout@v4
16
16
  - uses: ruby/setup-ruby@v1
17
17
  with:
18
18
  ruby-version: ${{ matrix.ruby }}
@@ -9,7 +9,7 @@ jobs:
9
9
  runs-on: ubuntu-latest
10
10
 
11
11
  steps:
12
- - uses: actions/checkout@v3
12
+ - uses: actions/checkout@v4
13
13
 
14
14
  - name: Release Gem on RubyGems
15
15
  if: contains(github.ref, 'refs/tags/v')
@@ -7,7 +7,7 @@ jobs:
7
7
  runs-on: ubuntu-latest
8
8
  name: Generate Services
9
9
  steps:
10
- - uses: actions/checkout@v3
10
+ - uses: actions/checkout@v4
11
11
  - run: make allServices
12
12
  - name: Set PR variables
13
13
  id: vars
data/README.md CHANGED
@@ -215,6 +215,18 @@ statusRequest =
215
215
  response = adyen.terminal_cloud_api.sync(statusRequest)
216
216
  ```
217
217
 
218
+ ## OAuth usage (for Partners)
219
+ If you are using our OAuth service to make API requests on your customer's behalf, and you already got your Access Token as explained in the [OAuth Integration Guide](https://docs.adyen.com/development-resources/oauth/integration/#page-introduction), you can setup your Client like in the following example:
220
+
221
+ ~~~~ruby
222
+ adyen = Adyen::Client.new
223
+
224
+ adyen.oauth_token = "oauth_token"
225
+
226
+ ~~~~
227
+
228
+ The APIs available to use through OAuth in this library depend on the [OAuth Scopes](https://docs.adyen.com/development-resources/oauth/scopes/) defined when [Registering your OAuth client](https://docs.adyen.com/development-resources/oauth/integration/#step-1-register-your-client).
229
+
218
230
  ## Feedback
219
231
  We value your input! Help us enhance our API Libraries and improve the integration experience by providing your feedback. Please take a moment to fill out [our feedback form](https://forms.gle/A4EERrR6CWgKWe5r9) to share your thoughts, suggestions or ideas.
220
232
 
data/lib/adyen/client.rb CHANGED
@@ -12,16 +12,18 @@ require_relative './result'
12
12
 
13
13
  module Adyen
14
14
  class Client
15
- attr_accessor :ws_user, :ws_password, :api_key, :client, :adapter
16
- attr_reader :env, :connection_options
15
+ attr_accessor :ws_user, :ws_password, :api_key, :oauth_token, :client, :adapter
16
+ attr_reader :env, :connection_options, :adapter_options
17
17
 
18
- def initialize(ws_user: nil, ws_password: nil, api_key: nil, env: :live, adapter: nil, mock_port: 3001,
19
- live_url_prefix: nil, mock_service_url_base: nil, connection_options: nil)
18
+ def initialize(ws_user: nil, ws_password: nil, api_key: nil, oauth_token: nil, env: :live, adapter: nil, mock_port: 3001,
19
+ live_url_prefix: nil, mock_service_url_base: nil, connection_options: nil, adapter_options: nil)
20
20
  @ws_user = ws_user
21
21
  @ws_password = ws_password
22
22
  @api_key = api_key
23
+ @oauth_token = oauth_token
23
24
  @env = env
24
25
  @adapter = adapter || Faraday.default_adapter
26
+ @adapter_options = adapter_options || Faraday.default_adapter_options
25
27
  @mock_service_url_base = mock_service_url_base || "http://localhost:#{mock_port}"
26
28
  @live_url_prefix = live_url_prefix
27
29
  @connection_options = connection_options || Faraday::ConnectionOptions.new
@@ -113,44 +115,16 @@ module Adyen
113
115
  # get URL for requested endpoint
114
116
  url = service_url(service, action.is_a?(String) ? action : action.fetch(:url), version)
115
117
 
116
- # make sure right authentication has been provided
117
- # will use api_key if present, otherwise ws_user and ws_password
118
- if @api_key.nil?
119
- if service == 'PaymentSetupAndVerification'
120
- raise Adyen::AuthenticationError.new('Checkout service requires API-key', request_data),
121
- 'Checkout service requires API-key'
122
- elsif @ws_password.nil? || @ws_user.nil?
123
- raise Adyen::AuthenticationError.new(
124
- 'No authentication found - please set api_key or ws_user and ws_password',
125
- request_data
126
- ),
127
- 'No authentication found - please set api_key or ws_user and ws_password'
128
- else
129
- auth_type = 'basic'
130
- end
131
- else
132
- auth_type = 'api-key'
133
- end
118
+ auth_type = auth_type(service, request_data)
134
119
 
135
120
  # initialize Faraday connection object
136
121
  conn = Faraday.new(url, @connection_options) do |faraday|
137
- faraday.adapter @adapter
122
+ faraday.adapter @adapter, **@adapter_options
138
123
  faraday.headers['Content-Type'] = 'application/json'
139
124
  faraday.headers['User-Agent'] = "#{Adyen::NAME}/#{Adyen::VERSION}"
140
125
 
141
- # set auth type based on service
142
- case auth_type
143
- when 'basic'
144
- if Gem::Version.new(Faraday::VERSION) >= Gem::Version.new('2.0')
145
- # for faraday 2.0 and higher
146
- faraday.request :authorization, :basic, @ws_user, @ws_password
147
- else
148
- # for faraday 1.x
149
- faraday.basic_auth(@ws_user, @ws_password)
150
- end
151
- when 'api-key'
152
- faraday.headers['x-api-key'] = @api_key
153
- end
126
+ # set header based on auth_type and service
127
+ auth_header(auth_type, faraday)
154
128
 
155
129
  # add optional headers if specified in request
156
130
  # will overwrite default headers if overlapping
@@ -298,6 +272,49 @@ module Adyen
298
272
  def terminal_cloud_api
299
273
  @terminal_cloud_api ||= Adyen::TerminalCloudAPI.new(self)
300
274
  end
275
+
276
+ private
277
+
278
+ def auth_header(auth_type, faraday)
279
+ case auth_type
280
+ when "basic"
281
+ if Gem::Version.new(Faraday::VERSION) >= Gem::Version.new('2.0')
282
+ # for faraday 2.0 and higher
283
+ faraday.request :authorization, :basic, @ws_user, @ws_password
284
+ else
285
+ # for faraday 1.x
286
+ faraday.basic_auth(@ws_user, @ws_password)
287
+ end
288
+ when "api-key"
289
+ faraday.headers["x-api-key"] = @api_key
290
+ when "oauth"
291
+ faraday.headers["Authorization"] = "Bearer #{@oauth_token}"
292
+ end
293
+ end
294
+
295
+ def auth_type(service, request_data)
296
+ # make sure valid authentication has been provided
297
+ validate_auth_type(service, request_data)
298
+ # Will prioritize authentication methods in this order:
299
+ # api-key, oauth, basic
300
+ return "api-key" unless @api_key.nil?
301
+ return "oauth" unless @oauth_token.nil?
302
+ "basic"
303
+ end
304
+
305
+ def validate_auth_type(service, request_data)
306
+ # ensure authentication has been provided
307
+ if @api_key.nil? && @oauth_token.nil? && (@ws_password.nil? || @ws_user.nil?)
308
+ raise Adyen::AuthenticationError.new(
309
+ 'No authentication found - please set api_key, oauth_token, or ws_user and ws_password',
310
+ request_data
311
+ )
312
+ end
313
+ if service == "PaymentSetupAndVerification" && @api_key.nil? && @oauth_token.nil? && @ws_password.nil? && @ws_user.nil?
314
+ raise Adyen::AuthenticationError.new('Checkout service requires API-key or oauth_token', request_data),
315
+ 'Checkout service requires API-key or oauth_token'
316
+ end
317
+ end
301
318
  end
302
319
  end
303
320
  # rubocop:enable all
@@ -0,0 +1,20 @@
1
+ require_relative '../service'
2
+ module Adyen
3
+ class TransferRoutesApi < Service
4
+ attr_accessor :service, :version
5
+
6
+ def initialize(client, version = DEFAULT_VERSION)
7
+ super(client, version, 'BalancePlatform')
8
+ end
9
+
10
+ def calculate_transfer_routes(request, headers: {})
11
+ endpoint = '/transferRoutes/calculate'.gsub(/{.+?}/, '%s')
12
+ endpoint = endpoint.gsub(%r{^/}, '')
13
+ endpoint = format(endpoint)
14
+
15
+ action = { method: 'post', url: endpoint }
16
+ @client.call_adyen_api(@service, action, request, headers, @version)
17
+ end
18
+
19
+ end
20
+ end
@@ -8,6 +8,7 @@ require_relative 'balancePlatform/payment_instrument_groups_api'
8
8
  require_relative 'balancePlatform/payment_instruments_api'
9
9
  require_relative 'balancePlatform/platform_api'
10
10
  require_relative 'balancePlatform/transaction_rules_api'
11
+ require_relative 'balancePlatform/transfer_routes_api'
11
12
 
12
13
  module Adyen
13
14
  class BalancePlatform
@@ -60,5 +61,9 @@ module Adyen
60
61
  @transaction_rules_api ||= Adyen::TransactionRulesApi.new(@client, @version)
61
62
  end
62
63
 
64
+ def transfer_routes_api
65
+ @transfer_routes_api ||= Adyen::TransferRoutesApi.new(@client, @version)
66
+ end
67
+
63
68
  end
64
69
  end
@@ -0,0 +1,38 @@
1
+ require_relative '../service'
2
+ module Adyen
3
+ class AndroidFilesCompanyLevelApi < Service
4
+ attr_accessor :service, :version
5
+
6
+ def initialize(client, version = DEFAULT_VERSION)
7
+ super(client, version, 'Management')
8
+ end
9
+
10
+ def list_android_apps(company_id, headers: {}, query_params: {})
11
+ endpoint = '/companies/{companyId}/androidApps'.gsub(/{.+?}/, '%s')
12
+ endpoint = endpoint.gsub(%r{^/}, '')
13
+ endpoint = format(endpoint, company_id)
14
+ endpoint += create_query_string(query_params)
15
+ action = { method: 'get', url: endpoint }
16
+ @client.call_adyen_api(@service, action, {}, headers, @version)
17
+ end
18
+
19
+ def get_android_app(company_id, id, headers: {})
20
+ endpoint = '/companies/{companyId}/androidApps/{id}'.gsub(/{.+?}/, '%s')
21
+ endpoint = endpoint.gsub(%r{^/}, '')
22
+ endpoint = format(endpoint, company_id, id)
23
+
24
+ action = { method: 'get', url: endpoint }
25
+ @client.call_adyen_api(@service, action, {}, headers, @version)
26
+ end
27
+
28
+ def list_android_certificates(company_id, headers: {}, query_params: {})
29
+ endpoint = '/companies/{companyId}/androidCertificates'.gsub(/{.+?}/, '%s')
30
+ endpoint = endpoint.gsub(%r{^/}, '')
31
+ endpoint = format(endpoint, company_id)
32
+ endpoint += create_query_string(query_params)
33
+ action = { method: 'get', url: endpoint }
34
+ @client.call_adyen_api(@service, action, {}, headers, @version)
35
+ end
36
+
37
+ end
38
+ end
@@ -7,24 +7,6 @@ module Adyen
7
7
  super(client, version, 'Management')
8
8
  end
9
9
 
10
- def list_android_apps(company_id, headers: {}, query_params: {})
11
- endpoint = '/companies/{companyId}/androidApps'.gsub(/{.+?}/, '%s')
12
- endpoint = endpoint.gsub(%r{^/}, '')
13
- endpoint = format(endpoint, company_id)
14
- endpoint += create_query_string(query_params)
15
- action = { method: 'get', url: endpoint }
16
- @client.call_adyen_api(@service, action, {}, headers, @version)
17
- end
18
-
19
- def list_android_certificates(company_id, headers: {}, query_params: {})
20
- endpoint = '/companies/{companyId}/androidCertificates'.gsub(/{.+?}/, '%s')
21
- endpoint = endpoint.gsub(%r{^/}, '')
22
- endpoint = format(endpoint, company_id)
23
- endpoint += create_query_string(query_params)
24
- action = { method: 'get', url: endpoint }
25
- @client.call_adyen_api(@service, action, {}, headers, @version)
26
- end
27
-
28
10
  def list_terminal_actions(company_id, headers: {}, query_params: {})
29
11
  endpoint = '/companies/{companyId}/terminalActions'.gsub(/{.+?}/, '%s')
30
12
  endpoint = endpoint.gsub(%r{^/}, '')
@@ -7,6 +7,7 @@ require_relative 'management/account_merchant_level_api'
7
7
  require_relative 'management/account_store_level_api'
8
8
  require_relative 'management/allowed_origins_company_level_api'
9
9
  require_relative 'management/allowed_origins_merchant_level_api'
10
+ require_relative 'management/android_files_company_level_api'
10
11
  require_relative 'management/client_key_company_level_api'
11
12
  require_relative 'management/client_key_merchant_level_api'
12
13
  require_relative 'management/my_api_credential_api'
@@ -74,6 +75,10 @@ module Adyen
74
75
  @allowed_origins_merchant_level_api ||= Adyen::AllowedOriginsMerchantLevelApi.new(@client, @version)
75
76
  end
76
77
 
78
+ def android_files_company_level_api
79
+ @android_files_company_level_api ||= Adyen::AndroidFilesCompanyLevelApi.new(@client, @version)
80
+ end
81
+
77
82
  def client_key_company_level_api
78
83
  @client_key_company_level_api ||= Adyen::ClientKeyCompanyLevelApi.new(@client, @version)
79
84
  end
data/lib/adyen/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  module Adyen
2
2
  NAME = 'adyen-ruby-api-library'.freeze
3
- VERSION = '7.1.0'.freeze
3
+ VERSION = '7.3.0'.freeze
4
4
  end
@@ -0,0 +1,621 @@
1
+ require "spec_helper"
2
+ require "json"
3
+
4
+ # rubocop:disable Metrics/BlockLength
5
+ RSpec.describe "Adyen::Checkout OAuth authentication", service: "checkout" do
6
+ before(:all) do
7
+ @shared_values = {
8
+ client: create_client(:oauth),
9
+ service: "Checkout",
10
+ }
11
+ @auth_header = { "Authorization": "Bearer #{@shared_values[:client].oauth_token}" }
12
+ end
13
+
14
+ # must be created manually because every field in the response is an array
15
+ it "makes a payment_methods call", focus: true do
16
+ request_body = JSON.parse(json_from_file("mocks/requests/Checkout/payment_methods.json"))
17
+
18
+ response_body = json_from_file("mocks/responses/Checkout/payment_methods.json")
19
+
20
+ url = @shared_values[:client].service_url(@shared_values[:service], "paymentMethods", @shared_values[:client].checkout.version)
21
+ WebMock.stub_request(:post, url).
22
+ with(
23
+ body: request_body,
24
+ headers: @auth_header
25
+ ).
26
+ to_return(
27
+ body: response_body
28
+ )
29
+
30
+ result = @shared_values[:client].checkout.payments_api.payment_methods(request_body)
31
+ response_hash = result.response
32
+
33
+ expect(result.status).
34
+ to eq(200)
35
+ expect(response_hash).
36
+ to eq(JSON.parse(response_body))
37
+ expect(response_hash).
38
+ to be_a Adyen::HashWithAccessors
39
+ expect(response_hash).
40
+ to be_a_kind_of Hash
41
+ end
42
+
43
+ it "makes a paymentMethods/balance call" do
44
+ request_body = JSON.parse(json_from_file("mocks/requests/Checkout/payment_methods_balance.json"))
45
+
46
+ response_body = json_from_file("mocks/responses/Checkout/payment_methods_balance.json")
47
+
48
+ url = @shared_values[:client].service_url(@shared_values[:service], "paymentMethods/balance", @shared_values[:client].checkout.version)
49
+ WebMock.stub_request(:post, url).
50
+ with(
51
+ body: request_body,
52
+ headers: @auth_header
53
+ ).
54
+ to_return(
55
+ body: response_body
56
+ )
57
+
58
+ result = @shared_values[:client].checkout.orders_api.get_balance_of_gift_card(request_body)
59
+ # result.response is already a Ruby hash (rather than an unparsed JSON string)
60
+ response_hash = result.response
61
+
62
+ expect(result.status).
63
+ to eq(200)
64
+ expect(response_hash).
65
+ to eq(JSON.parse(response_body))
66
+ expect(response_hash).
67
+ to be_a Adyen::HashWithAccessors
68
+ expect(response_hash).
69
+ to be_a_kind_of Hash
70
+ expect(response_hash["balance"]).
71
+ to eq("100")
72
+ end
73
+
74
+ # must be created manually due to payments/details format
75
+ it "makes a payments/details call" do
76
+ request_body = JSON.parse(json_from_file("mocks/requests/Checkout/payment-details.json"))
77
+
78
+ response_body = json_from_file("mocks/responses/Checkout/payment-details.json")
79
+
80
+ url = @shared_values[:client].service_url(@shared_values[:service], "payments/details", @shared_values[:client].checkout.version)
81
+ WebMock.stub_request(:post, url).
82
+ with(
83
+ body: request_body,
84
+ headers: @auth_header
85
+ ).
86
+ to_return(
87
+ body: response_body
88
+ )
89
+
90
+ result = @shared_values[:client].checkout.payments_api.payments_details(request_body)
91
+ # result.response is already a Ruby hash (rather than an unparsed JSON string)
92
+ response_hash = result.response
93
+
94
+ expect(result.status).
95
+ to eq(200)
96
+ expect(response_hash).
97
+ to eq(JSON.parse(response_body))
98
+ expect(response_hash).
99
+ to be_a Adyen::HashWithAccessors
100
+ expect(response_hash).
101
+ to be_a_kind_of Hash
102
+ expect(response_hash["resultCode"]).
103
+ to eq("RedirectShopper")
104
+ expect(response_hash.resultCode).
105
+ to eq("RedirectShopper")
106
+ end
107
+
108
+ # must be created manually due to payments/result format
109
+ it "makes a payments/result call" do
110
+ request_body = JSON.parse(json_from_file("mocks/requests/Checkout/payment-result.json"))
111
+
112
+ response_body = json_from_file("mocks/responses/Checkout/payment-result.json")
113
+
114
+ url = @shared_values[:client].service_url(@shared_values[:service], "payments/result", @shared_values[:client].checkout.version)
115
+ WebMock.stub_request(:post, url).
116
+ with(
117
+ body: request_body,
118
+ headers: @auth_header
119
+ ).
120
+ to_return(
121
+ body: response_body
122
+ )
123
+
124
+ result = @shared_values[:client].checkout.classic_checkout_sdk_api.verify_payment_result(request_body)
125
+ response_hash = result.response
126
+
127
+ expect(result.status).
128
+ to eq(200)
129
+ expect(response_hash).
130
+ to eq(JSON.parse(response_body))
131
+ expect(response_hash).
132
+ to be_a Adyen::HashWithAccessors
133
+ expect(response_hash).
134
+ to be_a_kind_of Hash
135
+ expect(response_hash["resultCode"]).
136
+ to eq("Authorised")
137
+ expect(response_hash.resultCode).
138
+ to eq("Authorised")
139
+ end
140
+
141
+ # must be created manually due to paymentsLinks format
142
+ it "makes a paymentLinks call" do
143
+ request_body = JSON.parse(json_from_file("mocks/requests/Checkout/payment_links.json"))
144
+
145
+ response_body = json_from_file("mocks/responses/Checkout/payment_links.json")
146
+
147
+ url = @shared_values[:client].service_url(@shared_values[:service], "paymentLinks", @shared_values[:client].checkout.version)
148
+ WebMock.stub_request(:post, url).
149
+ with(
150
+ body: request_body,
151
+ headers: @auth_header
152
+ ).
153
+ to_return(
154
+ body: response_body
155
+ )
156
+
157
+ result = @shared_values[:client].checkout.payment_links_api.payment_links(request_body)
158
+ response_hash = result.response
159
+
160
+ expect(result.status).
161
+ to eq(200)
162
+ expect(response_hash).
163
+ to eq(JSON.parse(response_body))
164
+ expect(response_hash).
165
+ to be_a Adyen::HashWithAccessors
166
+ expect(response_hash).
167
+ to be_a_kind_of Hash
168
+ end
169
+
170
+ # must be created manually due to paymentsLinks/{linkId} format
171
+ it "makes a get paymentLinks/{linkId} call" do
172
+ response_body = json_from_file("mocks/responses/Checkout/get-payment-link.json")
173
+
174
+ url = @shared_values[:client].service_url(@shared_values[:service], "paymentLinks/1", @shared_values[:client].checkout.version)
175
+ WebMock.stub_request(:get, url).
176
+ with(
177
+ headers: @auth_header
178
+ ).
179
+ to_return(
180
+ body: response_body
181
+ )
182
+
183
+ result = @shared_values[:client].checkout.payment_links_api.get_payment_link("1")
184
+ response_hash = result.response
185
+
186
+ expect(result.status).
187
+ to eq(200)
188
+ expect(response_hash).
189
+ to eq(JSON.parse(response_body))
190
+ expect(response_hash).
191
+ to be_a Adyen::HashWithAccessors
192
+ expect(response_hash).
193
+ to be_a_kind_of Hash
194
+ expect(response_hash["status"]).
195
+ to eq("active")
196
+ expect(response_hash.id).
197
+ to eq("MockId")
198
+ end
199
+
200
+ # must be created manually due to paymentsLinks/{linkId} format
201
+ it "makes a patch paymentLinks/{linkId} call" do
202
+ request_body = {
203
+ :status => "expired",
204
+ }
205
+
206
+ response_body = json_from_file("mocks/responses/Checkout/update-payment-link.json")
207
+
208
+ url = @shared_values[:client].service_url(@shared_values[:service], "paymentLinks/1", @shared_values[:client].checkout.version)
209
+ WebMock.stub_request(:patch, url).
210
+ with(
211
+ body: request_body,
212
+ headers: @auth_header
213
+ ).
214
+ to_return(
215
+ body: response_body
216
+ )
217
+
218
+ result = @shared_values[:client].checkout.payment_links_api.update_payment_link(request_body, "1")
219
+ response_hash = result.response
220
+
221
+ expect(result.status).
222
+ to eq(200)
223
+ expect(response_hash).
224
+ to eq(JSON.parse(response_body))
225
+ expect(response_hash).
226
+ to be_a Adyen::HashWithAccessors
227
+ expect(response_hash).
228
+ to be_a_kind_of Hash
229
+ expect(response_hash["status"]).
230
+ to eq("expired")
231
+ expect(response_hash.id).
232
+ to eq("MockId")
233
+ end
234
+
235
+ it "makes an orders call" do
236
+ request_body = JSON.parse(json_from_file("mocks/requests/Checkout/orders.json"))
237
+
238
+ response_body = json_from_file("mocks/responses/Checkout/orders.json")
239
+
240
+ url = @shared_values[:client].service_url(@shared_values[:service], "orders", @shared_values[:client].checkout.version)
241
+ WebMock.stub_request(:post, url).
242
+ with(
243
+ body: request_body,
244
+ headers: @auth_header
245
+ ).
246
+ to_return(
247
+ body: response_body
248
+ )
249
+
250
+ result = @shared_values[:client].checkout.orders_api.orders(request_body)
251
+ response_hash = result.response
252
+
253
+ expect(result.status).
254
+ to eq(200)
255
+ expect(response_hash).
256
+ to eq(JSON.parse(response_body))
257
+ expect(response_hash).
258
+ to be_a Adyen::HashWithAccessors
259
+ expect(response_hash).
260
+ to be_a_kind_of Hash
261
+ expect(response_hash["remainingAmount"]["value"]).
262
+ to eq(100)
263
+ end
264
+
265
+ it "makes an orders/cancel call" do
266
+ request_body = JSON.parse(json_from_file("mocks/requests/Checkout/orders_cancel.json"))
267
+
268
+ response_body = json_from_file("mocks/responses/Checkout/orders_cancel.json")
269
+
270
+ url = @shared_values[:client].service_url(@shared_values[:service], "orders/cancel", @shared_values[:client].checkout.version)
271
+ WebMock.stub_request(:post, url).
272
+ with(
273
+ body: request_body,
274
+ headers: @auth_header
275
+ ).
276
+ to_return(
277
+ body: response_body
278
+ )
279
+
280
+ result = @shared_values[:client].checkout.orders_api.cancel_order(request_body)
281
+ response_hash = result.response
282
+
283
+ expect(result.status).
284
+ to eq(200)
285
+ expect(response_hash).
286
+ to eq(JSON.parse(response_body))
287
+ expect(response_hash).
288
+ to be_a Adyen::HashWithAccessors
289
+ expect(response_hash).
290
+ to be_a_kind_of Hash
291
+ expect(response_hash["resultCode"]).
292
+ to eq("cancelled")
293
+ end
294
+
295
+ it "makes an applePay/sessions call" do
296
+ request_body = JSON.parse(json_from_file("mocks/requests/Checkout/apple_pay_sessions.json"))
297
+
298
+ response_body = json_from_file("mocks/responses/Checkout/apple_pay_sessions.json")
299
+
300
+ url = @shared_values[:client].service_url(@shared_values[:service], "applePay/sessions", @shared_values[:client].checkout.version)
301
+ WebMock.stub_request(:post, url).
302
+ with(
303
+ body: request_body,
304
+ headers: @auth_header
305
+ ).
306
+ to_return(
307
+ body: response_body
308
+ )
309
+
310
+ result = @shared_values[:client].checkout.utility_api.get_apple_pay_session(request_body)
311
+ response_hash = result.response
312
+
313
+ expect(result.status).
314
+ to eq(200)
315
+ expect(response_hash).
316
+ to eq(JSON.parse(response_body))
317
+ expect(response_hash).
318
+ to be_a Adyen::HashWithAccessors
319
+ expect(response_hash).
320
+ to be_a_kind_of Hash
321
+ expect(response_hash["data"]).
322
+ to eq("LARGE_BLOB_HERE")
323
+ end
324
+
325
+ it "makes a sessions call" do
326
+ request_body = JSON.parse(json_from_file("mocks/requests/Checkout/sessions.json"))
327
+
328
+ response_body = json_from_file("mocks/responses/Checkout/sessions-success.json")
329
+
330
+ url = @shared_values[:client].service_url(@shared_values[:service], "sessions", @shared_values[:client].checkout.version)
331
+ WebMock.stub_request(:post, url).
332
+ with(
333
+ body: request_body,
334
+ headers: @auth_header
335
+ )
336
+ .to_return(body: response_body, status: 201)
337
+
338
+ result = @shared_values[:client].checkout.payments_api.sessions(request_body)
339
+ response_hash = result.response
340
+
341
+ expect(result.status).
342
+ to eq(201)
343
+ expect(response_hash).
344
+ to eq(JSON.parse(response_body))
345
+ expect(response_hash).
346
+ to be_a Adyen::HashWithAccessors
347
+ expect(response_hash).
348
+ to be_a_kind_of Hash
349
+ end
350
+
351
+ it "makes a capture call" do
352
+ request_body = JSON.parse(json_from_file("mocks/requests/Checkout/capture.json"))
353
+
354
+ response_body = json_from_file("mocks/responses/Checkout/capture.json")
355
+
356
+ url = @shared_values[:client].service_url(@shared_values[:service], "payments/12345/captures", @shared_values[:client].checkout.version)
357
+ WebMock.stub_request(:post, url).
358
+ with(
359
+ body: request_body,
360
+ headers: @auth_header
361
+ )
362
+ .to_return(body: response_body, status: 201)
363
+
364
+ result = @shared_values[:client].checkout.modifications_api.capture_authorised_payment(request_body, "12345")
365
+ response_hash = result.response
366
+
367
+ expect(result.status).
368
+ to eq(201)
369
+ expect(response_hash).
370
+ to eq(JSON.parse(response_body))
371
+ expect(response_hash).
372
+ to be_a Adyen::HashWithAccessors
373
+ expect(response_hash).
374
+ to be_a_kind_of Hash
375
+ expect(response_hash.reference).
376
+ to eq("123456789")
377
+ expect(response_hash.pspReference).
378
+ to eq("12345")
379
+ end
380
+
381
+ it "makes a psp specific cancel call" do
382
+ request_body = JSON.parse(json_from_file("mocks/requests/Checkout/psp_cancel.json"))
383
+
384
+ response_body = json_from_file("mocks/responses/Checkout/psp_cancel.json")
385
+
386
+ url = @shared_values[:client].service_url(@shared_values[:service], "payments/12345/cancels", @shared_values[:client].checkout.version)
387
+ WebMock.stub_request(:post, url).
388
+ with(
389
+ body: request_body,
390
+ headers: @auth_header
391
+ )
392
+ .to_return(body: response_body, status: 201)
393
+
394
+ result = @shared_values[:client].checkout.modifications_api.cancel_authorised_payment_by_psp_reference(request_body, "12345")
395
+ response_hash = result.response
396
+
397
+ expect(result.status).
398
+ to eq(201)
399
+ expect(response_hash).
400
+ to eq(JSON.parse(response_body))
401
+ expect(response_hash).
402
+ to be_a Adyen::HashWithAccessors
403
+ expect(response_hash).
404
+ to be_a_kind_of Hash
405
+ expect(response_hash.reference).
406
+ to eq("123456789")
407
+ expect(response_hash.pspReference).
408
+ to eq("12345")
409
+ end
410
+
411
+ it "makes a psp specific refunds call" do
412
+ request_body = JSON.parse(json_from_file("mocks/requests/Checkout/refund.json"))
413
+
414
+ response_body = json_from_file("mocks/responses/Checkout/refund.json")
415
+
416
+ url = @shared_values[:client].service_url(@shared_values[:service], "payments/12345/refunds", @shared_values[:client].checkout.version)
417
+ WebMock.stub_request(:post, url).
418
+ with(
419
+ body: request_body,
420
+ headers: @auth_header
421
+ )
422
+ .to_return(body: response_body, status: 201)
423
+
424
+ result = @shared_values[:client].checkout.modifications_api.refund_captured_payment(request_body, "12345")
425
+ response_hash = result.response
426
+
427
+ expect(result.status).
428
+ to eq(201)
429
+ expect(response_hash).
430
+ to eq(JSON.parse(response_body))
431
+ expect(response_hash).
432
+ to be_a Adyen::HashWithAccessors
433
+ expect(response_hash).
434
+ to be_a_kind_of Hash
435
+ expect(response_hash.reference).
436
+ to eq("123456789")
437
+ expect(response_hash.pspReference).
438
+ to eq("12345")
439
+ end
440
+
441
+ it "makes a psp specific reversals call" do
442
+ request_body = JSON.parse(json_from_file("mocks/requests/Checkout/psp_cancel.json"))
443
+
444
+ response_body = json_from_file("mocks/responses/Checkout/psp_cancel.json")
445
+
446
+ url = @shared_values[:client].service_url(@shared_values[:service], "payments/12345/reversals", @shared_values[:client].checkout.version)
447
+ WebMock.stub_request(:post, url).
448
+ with(
449
+ body: request_body,
450
+ headers: @auth_header
451
+ )
452
+ .to_return(body: response_body, status: 201)
453
+
454
+ result = @shared_values[:client].checkout.modifications_api.refund_or_cancel_payment(request_body, "12345")
455
+ response_hash = result.response
456
+
457
+ expect(result.status).
458
+ to eq(201)
459
+ expect(response_hash).
460
+ to eq(JSON.parse(response_body))
461
+ expect(response_hash).
462
+ to be_a Adyen::HashWithAccessors
463
+ expect(response_hash).
464
+ to be_a_kind_of Hash
465
+ expect(response_hash.reference).
466
+ to eq("123456789")
467
+ expect(response_hash.pspReference).
468
+ to eq("12345")
469
+ end
470
+
471
+ it "makes a psp specific amountUpdates call" do
472
+ request_body = JSON.parse(json_from_file("mocks/requests/Checkout/amount_updates.json"))
473
+
474
+ response_body = json_from_file("mocks/responses/Checkout/amount_updates.json")
475
+
476
+ url = @shared_values[:client].service_url(@shared_values[:service], "payments/12345/amountUpdates", @shared_values[:client].checkout.version)
477
+ WebMock.stub_request(:post, url).
478
+ with(
479
+ body: request_body,
480
+ headers: @auth_header
481
+ )
482
+ .to_return(body: response_body, status: 201)
483
+
484
+ result = @shared_values[:client].checkout.modifications_api.update_authorised_amount(request_body, "12345")
485
+ response_hash = result.response
486
+
487
+ expect(result.status).
488
+ to eq(201)
489
+ expect(response_hash).
490
+ to eq(JSON.parse(response_body))
491
+ expect(response_hash).
492
+ to be_a Adyen::HashWithAccessors
493
+ expect(response_hash).
494
+ to be_a_kind_of Hash
495
+ expect(response_hash.reference).
496
+ to eq("123456789")
497
+ expect(response_hash.pspReference).
498
+ to eq("12345")
499
+ end
500
+
501
+ it "makes a generic cancel call" do
502
+ request_body = JSON.parse(json_from_file("mocks/requests/Checkout/generic_cancel.json"))
503
+
504
+ response_body = json_from_file("mocks/responses/Checkout/generic_cancel.json")
505
+
506
+ url = @shared_values[:client].service_url(@shared_values[:service], "cancels", @shared_values[:client].checkout.version)
507
+ WebMock.stub_request(:post, url).
508
+ with(
509
+ body: request_body,
510
+ headers: @auth_header
511
+ )
512
+ .to_return(body: response_body, status: 201)
513
+
514
+ result = @shared_values[:client].checkout.modifications_api.cancel_authorised_payment(request_body)
515
+ response_hash = result.response
516
+
517
+ expect(result.status).
518
+ to eq(201)
519
+ expect(response_hash).
520
+ to eq(JSON.parse(response_body))
521
+ expect(response_hash).
522
+ to be_a Adyen::HashWithAccessors
523
+ expect(response_hash).
524
+ to be_a_kind_of Hash
525
+ expect(response_hash.reference).
526
+ to eq("123456789")
527
+ expect(response_hash.pspReference).
528
+ to eq("12345")
529
+ end
530
+
531
+ it "makes a get storedPaymentMethods call" do
532
+ response_body = json_from_file("mocks/responses/Checkout/stored_payment_methods.json")
533
+
534
+ url = @shared_values[:client].service_url(@shared_values[:service], "storedPaymentMethods?merchantAccount=TestMerchantAccount&shopperReference=test-1234", @shared_values[:client].checkout.version)
535
+ WebMock.stub_request(:get, url).
536
+ with(
537
+ headers: @auth_header
538
+ ).
539
+ to_return(
540
+ body: response_body
541
+ )
542
+
543
+ result = @shared_values[:client].checkout.recurring_api.get_tokens_for_stored_payment_details(query_params: {"merchantAccount" => "TestMerchantAccount", "shopperReference" => "test-1234"})
544
+ response_hash = result.response
545
+
546
+ expect(result.status).
547
+ to eq(200)
548
+ expect(response_hash).
549
+ to eq(JSON.parse(response_body))
550
+ expect(response_hash).
551
+ to be_a Adyen::HashWithAccessors
552
+ expect(response_hash).
553
+ to be_a_kind_of Hash
554
+ expect(response_hash["shopperReference"]).
555
+ to eq("test-1234")
556
+ end
557
+
558
+ it "makes a delete storedPaymentMethods call" do
559
+
560
+ url = @shared_values[:client].service_url(@shared_values[:service], "storedPaymentMethods/RL8FW7WZM6KXWD82?merchantAccount=TestMerchantAccount&shopperReference=test-1234", @shared_values[:client].checkout.version)
561
+ WebMock.stub_request(:delete, url).
562
+ with(
563
+ headers: @auth_header
564
+ ).
565
+ to_return(
566
+ body: "{}"
567
+ )
568
+
569
+ result = @shared_values[:client].checkout.recurring_api.delete_token_for_stored_payment_details("RL8FW7WZM6KXWD82", query_params:{"merchantAccount" => "TestMerchantAccount", "shopperReference" => "test-1234"})
570
+ response_hash = result.response
571
+
572
+ expect(result.status).
573
+ to eq(200)
574
+ end
575
+
576
+ it "tests sending the application headers" do
577
+ response_body = json_from_file("mocks/responses/Checkout/stored_payment_methods.json")
578
+
579
+ url = @shared_values[:client].service_url(@shared_values[:service], "storedPaymentMethods?merchantAccount=TestMerchantAccount&shopperReference=test-1234", @shared_values[:client].checkout.version)
580
+ WebMock.stub_request(:get, url).
581
+ with(
582
+ headers: @auth_header
583
+ ).
584
+ to_return(
585
+ body: response_body
586
+ )
587
+
588
+ result = @shared_values[:client].checkout.recurring_api.get_tokens_for_stored_payment_details(query_params:{"merchantAccount" => "TestMerchantAccount", "shopperReference" => "test-1234"})
589
+ expect(
590
+ a_request(:get, "http://localhost:3001/v70/storedPaymentMethods?merchantAccount=TestMerchantAccount&shopperReference=test-1234")
591
+ .with(headers: {
592
+ 'Accept' => '*/*',
593
+ 'Accept-Encoding' => 'gzip;q=1.0,deflate;q=0.6,identity;q=0.3',
594
+ 'Adyen-Library-Name' => 'adyen-ruby-api-library',
595
+ 'Adyen-Library-Version' => Adyen::VERSION,
596
+ 'Content-Type' => 'application/json',
597
+ 'User-Agent' => 'adyen-ruby-api-library/' + Adyen::VERSION,
598
+ 'Authorization'=>'Bearer oauth_token'
599
+ })
600
+ ).to have_been_made.once
601
+ end
602
+
603
+ # must be created manually because every field in the response is an array
604
+ it "makes a LIVE paymentMethods call" do
605
+ request_body = JSON.parse(json_from_file("mocks/requests/Checkout/payment_methods.json"))
606
+
607
+ response_body = json_from_file("mocks/responses/Checkout/payment_methods.json")
608
+
609
+ adyen = Adyen::Client.new
610
+ adyen.api_key = 'AF5XXXXXXXXXXXXXXXXXXXX'
611
+ adyen.env = :live
612
+ adyen.live_url_prefix = "prefix"
613
+ url = adyen.service_url("Checkout", "paymentMethods", @shared_values[:client].checkout.version)
614
+
615
+ expect(url).
616
+ to eq("https://prefix-checkout-live.adyenpayments.com/checkout/v70/paymentMethods")
617
+
618
+ end
619
+ end
620
+
621
+ # rubocop:enable Metrics/BlockLength
data/spec/client_spec.rb CHANGED
@@ -1,9 +1,9 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  RSpec.describe Adyen do
4
- before(:all) do
4
+ before(:each) do
5
5
  @shared_values = {
6
- client: nil
6
+ client: Adyen::Client.new(env: :test)
7
7
  }
8
8
  end
9
9
 
@@ -32,6 +32,11 @@ RSpec.describe Adyen do
32
32
  .to raise_error(Adyen::AuthenticationError)
33
33
  end
34
34
 
35
+ it "fails a checkout call without oauth token" do
36
+ expect{ @shared_values[:client].checkout.payments_api.payment_methods("{}") }.
37
+ to raise_error(Adyen::AuthenticationError)
38
+ end
39
+
35
40
  it 'fails a checkout call without api key' do
36
41
  expect { @shared_values[:client].checkout.payments_api.payment_methods('{}') }
37
42
  .to raise_error(Adyen::AuthenticationError)
@@ -125,52 +130,52 @@ RSpec.describe Adyen do
125
130
  client.checkout.payments_api.payments_details(request_body)
126
131
  end
127
132
 
128
- it "checks the creation of checkout url" do
133
+ it "checks the creation of checkout url" do
129
134
  client = Adyen::Client.new(api_key: "api_key", env: :test)
130
135
  expect(client.service_url("Checkout", "paymentMethods", "70")).
131
136
  to eq("https://checkout-test.adyen.com/v70/paymentMethods")
132
- end
137
+ end
133
138
 
134
- it "checks the creation of checkout url" do
139
+ it "checks the creation of checkout url" do
135
140
  client = Adyen::Client.new(api_key: "api_key", env: :live, live_url_prefix: "YourLiveUrlPrefix")
136
141
  expect(client.service_url("Checkout", "paymentMethods", "70")).
137
142
  to eq("https://YourLiveUrlPrefix-checkout-live.adyenpayments.com/checkout/v70/paymentMethods")
138
- end
139
- it "checks the creation of lem url" do
143
+ end
144
+ it "checks the creation of lem url" do
140
145
  client = Adyen::Client.new(api_key: "api_key", env: :live)
141
146
  expect(client.service_url("LegalEntityManagement", "businessLines", "3")).
142
147
  to eq("https://kyc-live.adyen.com/lem/v3/businessLines")
143
- end
148
+ end
144
149
 
145
- it "checks the creation of balancePlatform url" do
150
+ it "checks the creation of balancePlatform url" do
146
151
  client = Adyen::Client.new(api_key: "api_key", env: :live)
147
152
  expect(client.service_url("BalancePlatform", "legalEntities", "1")).
148
153
  to eq("https://balanceplatform-api-live.adyen.com/bcl/v1/legalEntities")
149
- end
154
+ end
150
155
 
151
- it "checks the creation of balancePlatform url" do
156
+ it "checks the creation of balancePlatform url" do
152
157
  client = Adyen::Client.new(api_key: "api_key", env: :test)
153
158
  expect(client.service_url("BalancePlatform", "legalEntities", "1")).
154
159
  to eq("https://balanceplatform-api-test.adyen.com/bcl/v1/legalEntities")
155
- end
160
+ end
156
161
 
157
- it "checks the creation of transfers url" do
162
+ it "checks the creation of transfers url" do
158
163
  client = Adyen::Client.new(api_key: "api_key", env: :test)
159
164
  expect(client.service_url("Transfers", "transactions", "1")).
160
165
  to eq("https://balanceplatform-api-test.adyen.com/btl/v1/transactions")
161
- end
166
+ end
162
167
 
163
- it "checks the creation of management url" do
168
+ it "checks the creation of management url" do
164
169
  client = Adyen::Client.new(api_key: "api_key", env: :test)
165
170
  expect(client.service_url("Management", "companies", "1")).
166
171
  to eq("https://management-test.adyen.com/v1/companies")
167
- end
172
+ end
168
173
 
169
- it "checks the creation of binLookup url" do
174
+ it "checks the creation of binLookup url" do
170
175
  client = Adyen::Client.new(api_key: "api_key", env: :test)
171
176
  expect(client.service_url("BinLookup", "getCostEstimate", "54")).
172
177
  to eq("https://pal-test.adyen.com/pal/servlet/BinLookup/v54/getCostEstimate")
173
- end
178
+ end
174
179
 
175
180
  it "check the creation of storedValue url" do
176
181
  client = Adyen::Client.new(api_key: "api_key", env: :test)
@@ -253,6 +258,6 @@ RSpec.describe Adyen do
253
258
  client = Adyen::Client.new(api_key: 'api_key', env: :test)
254
259
  expect(client.service_url('TerminalCloudAPI', 'connectedTerminals', nil))
255
260
  .to eq('https://terminal-api-test.adyen.com/connectedTerminals')
256
-
261
+
257
262
  end
258
263
  end
@@ -0,0 +1,62 @@
1
+ require "spec_helper"
2
+ require "json"
3
+
4
+ # rubocop:disable Metrics/BlockLength
5
+
6
+ RSpec.describe "Adyen::Management OAuth Authentication", service: "Management" do
7
+ before(:all) do
8
+ @shared_values = {
9
+ client: create_client(:oauth),
10
+ service: "Management",
11
+ }
12
+ @auth_header = { "Authorization": "Bearer #{@shared_values[:client].oauth_token}" }
13
+ end
14
+
15
+ # must be created manually because every field in the response is an array
16
+ it "makes a companies GET call" do
17
+ response_body = json_from_file("mocks/responses/Management/get_companies.json")
18
+
19
+ url = @shared_values[:client].service_url(@shared_values[:service], "companies", @shared_values[:client].management.version)
20
+ WebMock.stub_request(:get, url).
21
+ with(
22
+ headers: @auth_header
23
+ ).
24
+ to_return(
25
+ body: response_body
26
+ )
27
+
28
+ result = @shared_values[:client].management.account_company_level_api.list_company_accounts()
29
+ response_hash = result.response
30
+
31
+ expect(result.status).
32
+ to eq(200)
33
+ expect(response_hash).
34
+ to eq(JSON.parse(response_body))
35
+ expect(response_hash).
36
+ to be_a Adyen::HashWithAccessors
37
+ expect(response_hash).
38
+ to be_a_kind_of Hash
39
+ end
40
+
41
+ it "makes a create_store POST call" do
42
+ request_body = JSON.parse(json_from_file("mocks/responses/LegalEntityManagement/create_business_line.json"))
43
+
44
+ response_body = json_from_file("mocks/responses/LegalEntityManagement/create_business_line.json")
45
+
46
+ url = @shared_values[:client].service_url(@shared_values[:service], "merchants/merchantID/stores", @shared_values[:client].management.version)
47
+ WebMock.stub_request(:post, url).
48
+ with(
49
+ body: request_body,
50
+ headers: @auth_header
51
+ ).
52
+ to_return(
53
+ body: response_body
54
+ )
55
+
56
+ result = @shared_values[:client].management.account_store_level_api.create_store_by_merchant_id(request_body, 'merchantID')
57
+ response_hash = result.response
58
+
59
+ expect(result.status).
60
+ to eq(200)
61
+ end
62
+ end
data/spec/spec_helper.rb CHANGED
@@ -29,6 +29,8 @@ def create_test(client, service, method_name, parent_object)
29
29
  # authentication headers
30
30
  if !client.api_key.nil?
31
31
  headers['x-api-key'] = client.api_key
32
+ elsif !client.oauth_token.nil?
33
+ headers["Authorization"] = "Bearer #{client.oauth_token}"
32
34
  elsif !client.ws_user.nil? && !client.ws_password.nil?
33
35
  auth_header = "Basic #{Base64.encode64("#{client.ws_user}:#{client.ws_password}")}"
34
36
  headers['Authorization'] = auth_header.strip
@@ -79,13 +81,15 @@ def generate_tests(client, service, test_sets, parent_object)
79
81
  end
80
82
 
81
83
  # create and return a client for testing
82
- # auth_type must be one of [:basic, :api_key]
84
+ # auth_type must be one of [:basic, :api_key, :oauth]
83
85
  def create_client(auth_type)
84
86
  client = Adyen::Client.new
85
87
  client.env = :mock
86
88
  if auth_type == :basic
87
89
  client.ws_user = 'user'
88
90
  client.ws_password = 'password'
91
+ elsif auth_type == :oauth
92
+ client.oauth_token = 'oauth_token'
89
93
  elsif auth_type == :api_key
90
94
  client.api_key = 'api_key'
91
95
  else
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: adyen-ruby-api-library
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.1.0
4
+ version: 7.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adyen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-08-28 00:00:00.000000000 Z
11
+ date: 2023-09-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -131,6 +131,7 @@ files:
131
131
  - lib/adyen/services/balancePlatform/payment_instruments_api.rb
132
132
  - lib/adyen/services/balancePlatform/platform_api.rb
133
133
  - lib/adyen/services/balancePlatform/transaction_rules_api.rb
134
+ - lib/adyen/services/balancePlatform/transfer_routes_api.rb
134
135
  - lib/adyen/services/binLookup.rb
135
136
  - lib/adyen/services/checkout.rb
136
137
  - lib/adyen/services/checkout/classic_checkout_sdk_api.rb
@@ -156,6 +157,7 @@ files:
156
157
  - lib/adyen/services/management/account_store_level_api.rb
157
158
  - lib/adyen/services/management/allowed_origins_company_level_api.rb
158
159
  - lib/adyen/services/management/allowed_origins_merchant_level_api.rb
160
+ - lib/adyen/services/management/android_files_company_level_api.rb
159
161
  - lib/adyen/services/management/api_credentials_company_level_api.rb
160
162
  - lib/adyen/services/management/api_credentials_merchant_level_api.rb
161
163
  - lib/adyen/services/management/api_key_company_level_api.rb
@@ -201,6 +203,7 @@ files:
201
203
  - spec/balance_control_spec.rb
202
204
  - spec/balance_platform_spec.rb
203
205
  - spec/bin_lookup_spec.rb
206
+ - spec/checkout-oauth_spec.rb
204
207
  - spec/checkout_spec.rb
205
208
  - spec/client_spec.rb
206
209
  - spec/data_protection_spec.rb
@@ -210,6 +213,7 @@ files:
210
213
  - spec/hash_with_accessors_spec.rb
211
214
  - spec/hop_spec.rb
212
215
  - spec/lem_spec.rb
216
+ - spec/management-oauth_spec.rb
213
217
  - spec/management_spec.rb
214
218
  - spec/mocks/requests/Account/check_account_holder.json
215
219
  - spec/mocks/requests/Account/close_account.json