adyen-ruby-api-library 2.0.0 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA256:
3
- metadata.gz: 75219812a204d42ae5bfb963e9cc7dda45f13c7b0193836f6334ab65307b2b55
4
- data.tar.gz: '0869e11b8beebd712e22166ef4f309bf30f35c0346e848d4beabe7213813eac8'
2
+ SHA1:
3
+ metadata.gz: 231b46c2247176df71d2d893aff31a84e8db8e30
4
+ data.tar.gz: 097565c20054e485ed2765a6dec518067517608a
5
5
  SHA512:
6
- metadata.gz: 752b39ed6e1a26cb6c66dfca461cecb478f33bbd680c3aa65545e3a27bf9b6d05664888d30bb38c060fd622b203c345499a0b90f0ebcd397cb7d08355601e291
7
- data.tar.gz: 771ffa63e29d3a68fba69c47807163c6f08486169279eaaa17e4cdb5084476fff1a8e972e79682190daf3ddb170a7db3d156122314baba2d693c233eee2d4dc0
6
+ metadata.gz: 357904495d8ec8afab0a4aef8151cf8d976572a4827c62070fb6737a9dda6f041892974688c6cd2412af6d1b9339adaaafb6799af9ffab93487be9903c6b16bc
7
+ data.tar.gz: 8132cc3af9c35ac41c4e5431ca783ba4c7f1fe05be5f9e30b62f65b85203c827617f8a460162dd071ef153fbb5f97c1ccd89f86886205c86bb75dd4106a2f596
data/README.md CHANGED
@@ -64,6 +64,11 @@ response = adyen.checkout.payments({
64
64
  })
65
65
  ```
66
66
 
67
+ ### Change API Version
68
+ ```ruby
69
+ adyen.checkout.version = 49
70
+ ```
71
+
67
72
  ## List of supported methods
68
73
 
69
74
  **checkout:**
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require_relative "../lib/adyen.rb"
3
+ require_relative "../lib/adyen-ruby-api-library.rb"
4
4
 
5
5
  # You can add fixtures and/or initialization code here to make experimenting
6
6
  # with your gem easier. You can also use a different console, if you like.
@@ -88,7 +88,7 @@ adyen.ws_passord = "super_secure_password123"</code></pre></p>
88
88
  "shopperReference" : "&lt;ShopperReference&gt;",
89
89
  "dateOfBirth" : "1990-01-01",
90
90
  "entityType" : "Company",
91
- "nationality" : "NL",
91
+ "nationality" : "NL"
92
92
  }')</code></pre>
93
93
 
94
94
  <h3 id="submitapayout">Submit a payout</h3>
@@ -102,12 +102,13 @@ module Adyen
102
102
  end
103
103
  end
104
104
 
105
- # if json string convert to hash needed to add applicationInfo
105
+ # if json string convert to hash
106
+ # needed to add applicationInfo
106
107
  if request_data.is_a?(String)
107
108
  request_data = JSON.parse(request_data)
108
109
  end
109
110
 
110
- # add apllication only on checkout service
111
+ # add application only on checkout service
111
112
  if service == 'Checkout' || service == 'CheckoutUtility'
112
113
  add_application_info(request_data)
113
114
  end
@@ -127,14 +128,15 @@ module Adyen
127
128
  # check for API errors
128
129
  case response.status
129
130
  when 401
130
- raise Adyen::AuthenticationError.new("Invalid webservice username / password", request_data)
131
+ raise Adyen::AuthenticationError.new("Invalid API authentication; https://docs.adyen.com/user-management/how-to-get-the-api-key", request_data)
131
132
  when 403
132
- raise Adyen::PermissionError.new("Invalid Checkout API key", request_data)
133
+ raise Adyen::PermissionError.new("Missing user permissions; https://docs.adyen.com/user-management/user-roles", request_data)
133
134
  end
134
135
 
135
136
  response
136
137
  end
137
138
 
139
+ # add application_info for analytics
138
140
  def add_application_info(request_data)
139
141
  external_platform = {
140
142
  :adyenLibrary => {
@@ -1,8 +1,16 @@
1
1
  module Adyen
2
2
  class AdyenError < StandardError
3
- attr_reader :code, :response, :request
3
+ attr_reader :code, :response, :request, :msg
4
4
 
5
5
  def initialize(request = nil, response = nil, msg = nil, code = nil)
6
+ attributes = {
7
+ code: code,
8
+ request: request,
9
+ response: response,
10
+ msg: msg
11
+ }.select { |_k, v| v }.map { |k, v| "#{k}:#{v}" }.join(', ')
12
+ message = "#{self.class.name} #{attributes}"
13
+ super(message)
6
14
  @code = code
7
15
  @response = response
8
16
  @request = request
@@ -12,65 +20,44 @@ module Adyen
12
20
 
13
21
  class AuthenticationError < AdyenError
14
22
  def initialize(msg, request)
15
- @code = 401
16
- @response = nil
17
- @request = request
18
- @msg = msg
23
+ super(request, nil, msg, 401)
19
24
  end
20
25
  end
21
26
 
22
27
  class PermissionError < AdyenError
23
28
  def initialize(msg, request)
24
- @code = 403
25
- @response = nil
26
- @request = request
27
- @msg = msg
29
+ super(request, nil, msg, 403)
28
30
  end
29
31
  end
30
32
 
31
33
  class FormatError < AdyenError
32
34
  def initialize(msg, request, response)
33
- @code = 422
34
- @response = response
35
- @request = request
36
- @msg = msg
35
+ super(request, response, msg, 422)
37
36
  end
38
37
  end
39
38
 
40
39
  class ServerError < AdyenError
41
40
  def initialize(msg, request, response)
42
- @code = 500
43
- @response = response
44
- @request = request
45
- @msg = msg
41
+ super(request, response, msg, 500)
46
42
  end
47
43
  end
48
44
 
49
45
  class ConfigurationError < AdyenError
50
46
  def initialize(msg, request)
51
- @code = 905
52
- @response = nil
53
- @request = request
54
- @msg = msg
47
+ super(request, nil, msg, 905)
55
48
  end
56
49
  end
57
50
 
58
51
  class ValidationError < AdyenError
59
52
  def initialize(msg, request)
60
- @code = nil
61
- @response = nil
62
- @request = request
63
- @msg = msg
53
+ super(request, nil, msg, nil)
64
54
  end
65
55
  end
66
56
 
67
57
  # catchall for errors which don't have more specific classes
68
58
  class APIError < AdyenError
69
59
  def initialize(msg, request, response, code)
70
- @code = code
71
- @response = response
72
- @request = request
73
- @msg = msg
60
+ super(request, response, msg, code)
74
61
  end
75
62
  end
76
63
  end
@@ -2,7 +2,7 @@ require_relative 'service'
2
2
 
3
3
  module Adyen
4
4
  class Checkout < Service
5
- DEFAULT_VERSION = 41
5
+ DEFAULT_VERSION = 49
6
6
 
7
7
  def initialize(client, version = DEFAULT_VERSION)
8
8
  service = 'Checkout'
@@ -72,7 +72,7 @@ module Adyen
72
72
 
73
73
  class Notification < Service
74
74
  attr_accessor :version
75
- DEFAULT_VERSION = 1
75
+ DEFAULT_VERSION = 5
76
76
 
77
77
  def initialize(client, version = DEFAULT_VERSION)
78
78
  service = 'Notification'
@@ -3,13 +3,14 @@ require_relative 'service'
3
3
  module Adyen
4
4
  class Payments < Service
5
5
  attr_accessor :version
6
- DEFAULT_VERSION = 40
6
+ DEFAULT_VERSION = 49
7
7
 
8
8
  def initialize(client, version = DEFAULT_VERSION)
9
9
  service = 'Payment'
10
10
  method_names = [
11
11
  :authorise,
12
12
  :authorise3d,
13
+ :authorise3ds2,
13
14
  :capture,
14
15
  :cancel,
15
16
  :refund,
@@ -3,7 +3,7 @@ require_relative 'service'
3
3
  module Adyen
4
4
  class Recurring < Service
5
5
  attr_accessor :version
6
- DEFAULT_VERSION = 25
6
+ DEFAULT_VERSION = 30
7
7
 
8
8
  def initialize(client, version = DEFAULT_VERSION)
9
9
  service = 'Recurring'
@@ -1,4 +1,4 @@
1
1
  module Adyen
2
2
  NAME = "adyen-ruby-api-library"
3
- VERSION = "2.0.0".freeze
3
+ VERSION = "3.0.0".freeze
4
4
  end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ RSpec.describe Adyen::AdyenError do
6
+ describe '#to_s' do
7
+ it 'describes using the error properties' do
8
+ expect(Adyen::AdyenError.new('request', 'response', 'message', 'code').to_s).to eq('Adyen::AdyenError code:code, request:request, response:response, msg:message')
9
+ end
10
+ it 'skips the null properties' do
11
+ expect(Adyen::AdyenError.new('request', nil, nil, 'code').to_s).to eq('Adyen::AdyenError code:code, request:request')
12
+ end
13
+ it 'uses the proper error class name' do
14
+ expect(Adyen::PermissionError.new('a message', 'a request').to_s).to eq('Adyen::PermissionError code:403, request:a request, msg:a message')
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,7 @@
1
+ {
2
+ "merchantAccount":"TestMerchant",
3
+ "threeDS2RequestData":{
4
+ "threeDSCompInd":"Y"
5
+ },
6
+ "threeDS2Token":"BQABAQBPCQZ98WKh3v7qGnBlUMGClVzDolIjs8w/8L64WIAqaOGZipbZod7n+E="
7
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "additionalData":{
3
+ "threeds2.threeDS2ResponseData.dsReferenceNumber":"ADYEN-DS-SIMULATOR",
4
+ "threeds2.threeDS2ResponseData.transStatus":"C",
5
+ "threeds2.threeDS2ResponseData.acsChallengeMandated":"Y",
6
+ "threeds2.threeDS2ResponseData.acsURL":"http:\/\/localhost:8080\/threeds2simulator\/services\/ThreeDS2Simulator\/v1\/handle\/eb9c6eb3-57b3-400d-bf2f-4e72bd69dcec",
7
+ "threeds2.threeDS2ResponseData.threeDSServerTransID":"c9200190-5ffe-11e8-954f-2677777ae710",
8
+ "threeds2.threeDS2ResponseData.authenticationType":"01",
9
+ "threeds2.threeDS2ResponseData.dsTransID":"73aab3ce-eb39-49e8-8e9b-46fb77a472f1",
10
+ "threeds2.threeDS2ResponseData.messageVersion":"2.1.0",
11
+ "threeds2.threeDS2Token":"BQABAQBPCQZ98WKh3v7qGnBlUMGClVzDolIjs8w/8L64WIAqaOGZipbZod7n+E=...",
12
+ "threeds2.threeDS2ResponseData.acsTransID":"eb9c6eb3-57b3-400d-bf2f-4e72b779dcec",
13
+ "threeds2.threeDS2ResponseData.acsReferenceNumber":"ADYEN-ACS-SIMULATOR"
14
+ },
15
+ "pspReference":"9935272408577755",
16
+ "resultCode":"ChallengeShopper"
17
+ }
@@ -10,6 +10,7 @@ RSpec.describe Adyen::Payments, service: "payments service" do
10
10
  ["authorise", "resultCode", "Authorised"],
11
11
  ["adjust_authorisation", "response", "[adjustAuthorisation-received]"],
12
12
  ["authorise3d", "resultCode", "Authorised"],
13
+ ["authorise3ds2", "resultCode", "ChallengeShopper"],
13
14
  ["cancel", "response", "[cancel-received]"],
14
15
  ["cancel_or_refund", "response", "[cancelOrRefund-received]"],
15
16
  ["capture", "response", "[capture-received]"],
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: 2.0.0
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adyen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-02-26 00:00:00.000000000 Z
11
+ date: 2019-08-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -114,6 +114,7 @@ files:
114
114
  - spec/checkout_spec.rb
115
115
  - spec/checkout_utility_spec.rb
116
116
  - spec/client_spec.rb
117
+ - spec/errors_spec.rb
117
118
  - spec/fund_spec.rb
118
119
  - spec/mocks/requests/Account/close_account.json
119
120
  - spec/mocks/requests/Account/close_account_holder.json
@@ -151,6 +152,7 @@ files:
151
152
  - spec/mocks/requests/Payment/adjust_authorisation.json
152
153
  - spec/mocks/requests/Payment/authorise.json
153
154
  - spec/mocks/requests/Payment/authorise3d.json
155
+ - spec/mocks/requests/Payment/authorise3ds2.json
154
156
  - spec/mocks/requests/Payment/cancel.json
155
157
  - spec/mocks/requests/Payment/cancel_or_refund.json
156
158
  - spec/mocks/requests/Payment/capture.json
@@ -199,6 +201,7 @@ files:
199
201
  - spec/mocks/responses/Payment/adjust_authorisation.json
200
202
  - spec/mocks/responses/Payment/authorise.json
201
203
  - spec/mocks/responses/Payment/authorise3d.json
204
+ - spec/mocks/responses/Payment/authorise3ds2.json
202
205
  - spec/mocks/responses/Payment/cancel.json
203
206
  - spec/mocks/responses/Payment/cancel_or_refund.json
204
207
  - spec/mocks/responses/Payment/capture.json
@@ -239,7 +242,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
239
242
  version: '0'
240
243
  requirements: []
241
244
  rubyforge_project:
242
- rubygems_version: 2.7.8
245
+ rubygems_version: 2.2.0
243
246
  signing_key:
244
247
  specification_version: 4
245
248
  summary: Official Adyen Ruby API Library