connect-sdk-ruby 2.5.0 → 2.6.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
2
  SHA256:
3
- metadata.gz: 6a4c922daf1b8fd19c5997b498998956b60fcc927b4750a801c5a8ae19819334
4
- data.tar.gz: 183483a57dda0a54c7031b68e0f9aca7bbda18a3a5f24a22a341fc9899c3cc30
3
+ metadata.gz: 8094a6597c4cc5142282eabc7d7d3cdfdd63b69bbfbe1240e262be443f7e5ab9
4
+ data.tar.gz: 00b05237c065262e96b3c78c9438a98cb6a7efb7e9146395fe5f535b79c41e23
5
5
  SHA512:
6
- metadata.gz: b760a517add39302bec09e15183ab03ec10c84b9c418ec1ca8b063f9478a1f3fc7bb57de431d9e1f071a7721e6630efbdeb391e395e4a82ac63e1751d0227221
7
- data.tar.gz: 9efbf9b3a88f2b3cde0e0028b17f80b7561acbd0a394df6c3178d049f44405a0ec92af8e79686e8b30aa3394f564768eeafe85fd5e22c0261815b52b05679236
6
+ metadata.gz: 0d7efbc5741777936ac414b4a3c03508f30a97838efb5dc2241667ac6ffba56978bc6334b7eea88b84a1a3aace9141bd4aab94dcc8c92c0ba879409400fddd1f
7
+ data.tar.gz: 0f28f33c0d7cb4ad9b87dbb34e220f58794b7a07fca9a1f7d38f97cb39d14d33a5bbcec75243b36a0fd3d0fa08c1eafa03b7b02520010f124731263b377348a9
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |spec|
2
2
  spec.name = 'connect-sdk-ruby'
3
- spec.version = '2.5.0'
3
+ spec.version = '2.6.0'
4
4
  spec.authors = ['Ingenico ePayments']
5
5
  spec.email = ['github@epay.ingenico.com']
6
6
  spec.summary = %q{SDK to communicate with the Ingenico ePayments platform using the Ingenico Connect Server API}
@@ -3,20 +3,25 @@
3
3
  # https://epayments-api.developer-ingenico.com/s2sapi/v1/
4
4
  #
5
5
  require 'ingenico/connect/sdk/data_object'
6
+ require 'ingenico/connect/sdk/domain/definitions/in_auth'
6
7
 
7
8
  module Ingenico::Connect::SDK
8
9
  module Domain
9
10
  module Definitions
10
11
 
11
12
  # @attr [String] fraud_service_result
13
+ # @attr [Ingenico::Connect::SDK::Domain::Definitions::InAuth] in_auth
12
14
  class FraudResults < Ingenico::Connect::SDK::DataObject
13
15
 
14
16
  attr_accessor :fraud_service_result
15
17
 
18
+ attr_accessor :in_auth
19
+
16
20
  # @return (Hash)
17
21
  def to_h
18
22
  hash = super
19
23
  hash['fraudServiceResult'] = @fraud_service_result unless @fraud_service_result.nil?
24
+ hash['inAuth'] = @in_auth.to_h unless @in_auth.nil?
20
25
  hash
21
26
  end
22
27
 
@@ -25,6 +30,10 @@ module Ingenico::Connect::SDK
25
30
  if hash.has_key? 'fraudServiceResult'
26
31
  @fraud_service_result = hash['fraudServiceResult']
27
32
  end
33
+ if hash.has_key? 'inAuth'
34
+ raise TypeError, "value '%s' is not a Hash" % [hash['inAuth']] unless hash['inAuth'].is_a? Hash
35
+ @in_auth = Ingenico::Connect::SDK::Domain::Definitions::InAuth.new_from_hash(hash['inAuth'])
36
+ end
28
37
  end
29
38
  end
30
39
  end
@@ -0,0 +1,60 @@
1
+ #
2
+ # This class was auto-generated from the API references found at
3
+ # https://epayments-api.developer-ingenico.com/s2sapi/v1/
4
+ #
5
+ require 'ingenico/connect/sdk/data_object'
6
+
7
+ module Ingenico::Connect::SDK
8
+ module Domain
9
+ module Definitions
10
+
11
+ # @attr [String] device_category
12
+ # @attr [String] device_id
13
+ # @attr [String] risk_score
14
+ # @attr [String] true_ip_address
15
+ # @attr [String] true_ip_address_country
16
+ class InAuth < Ingenico::Connect::SDK::DataObject
17
+
18
+ attr_accessor :device_category
19
+
20
+ attr_accessor :device_id
21
+
22
+ attr_accessor :risk_score
23
+
24
+ attr_accessor :true_ip_address
25
+
26
+ attr_accessor :true_ip_address_country
27
+
28
+ # @return (Hash)
29
+ def to_h
30
+ hash = super
31
+ hash['deviceCategory'] = @device_category unless @device_category.nil?
32
+ hash['deviceId'] = @device_id unless @device_id.nil?
33
+ hash['riskScore'] = @risk_score unless @risk_score.nil?
34
+ hash['trueIpAddress'] = @true_ip_address unless @true_ip_address.nil?
35
+ hash['trueIpAddressCountry'] = @true_ip_address_country unless @true_ip_address_country.nil?
36
+ hash
37
+ end
38
+
39
+ def from_hash(hash)
40
+ super
41
+ if hash.has_key? 'deviceCategory'
42
+ @device_category = hash['deviceCategory']
43
+ end
44
+ if hash.has_key? 'deviceId'
45
+ @device_id = hash['deviceId']
46
+ end
47
+ if hash.has_key? 'riskScore'
48
+ @risk_score = hash['riskScore']
49
+ end
50
+ if hash.has_key? 'trueIpAddress'
51
+ @true_ip_address = hash['trueIpAddress']
52
+ end
53
+ if hash.has_key? 'trueIpAddressCountry'
54
+ @true_ip_address_country = hash['trueIpAddressCountry']
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
60
+ end
@@ -2,13 +2,32 @@
2
2
  # This class was auto-generated from the API references found at
3
3
  # https://epayments-api.developer-ingenico.com/s2sapi/v1/
4
4
  #
5
+ require 'ingenico/connect/sdk/domain/definitions/fraud_results'
5
6
  require 'ingenico/connect/sdk/domain/payment/abstract_payment_method_specific_output'
6
7
 
7
8
  module Ingenico::Connect::SDK
8
9
  module Domain
9
10
  module Payment
10
11
 
12
+ # @attr [Ingenico::Connect::SDK::Domain::Definitions::FraudResults] fraud_results
11
13
  class BankTransferPaymentMethodSpecificOutput < Ingenico::Connect::SDK::Domain::Payment::AbstractPaymentMethodSpecificOutput
14
+
15
+ attr_accessor :fraud_results
16
+
17
+ # @return (Hash)
18
+ def to_h
19
+ hash = super
20
+ hash['fraudResults'] = @fraud_results.to_h unless @fraud_results.nil?
21
+ hash
22
+ end
23
+
24
+ def from_hash(hash)
25
+ super
26
+ if hash.has_key? 'fraudResults'
27
+ raise TypeError, "value '%s' is not a Hash" % [hash['fraudResults']] unless hash['fraudResults'].is_a? Hash
28
+ @fraud_results = Ingenico::Connect::SDK::Domain::Definitions::FraudResults.new_from_hash(hash['fraudResults'])
29
+ end
30
+ end
12
31
  end
13
32
  end
14
33
  end
@@ -2,13 +2,32 @@
2
2
  # This class was auto-generated from the API references found at
3
3
  # https://epayments-api.developer-ingenico.com/s2sapi/v1/
4
4
  #
5
+ require 'ingenico/connect/sdk/domain/definitions/fraud_results'
5
6
  require 'ingenico/connect/sdk/domain/payment/abstract_payment_method_specific_output'
6
7
 
7
8
  module Ingenico::Connect::SDK
8
9
  module Domain
9
10
  module Payment
10
11
 
12
+ # @attr [Ingenico::Connect::SDK::Domain::Definitions::FraudResults] fraud_results
11
13
  class CashPaymentMethodSpecificOutput < Ingenico::Connect::SDK::Domain::Payment::AbstractPaymentMethodSpecificOutput
14
+
15
+ attr_accessor :fraud_results
16
+
17
+ # @return (Hash)
18
+ def to_h
19
+ hash = super
20
+ hash['fraudResults'] = @fraud_results.to_h unless @fraud_results.nil?
21
+ hash
22
+ end
23
+
24
+ def from_hash(hash)
25
+ super
26
+ if hash.has_key? 'fraudResults'
27
+ raise TypeError, "value '%s' is not a Hash" % [hash['fraudResults']] unless hash['fraudResults'].is_a? Hash
28
+ @fraud_results = Ingenico::Connect::SDK::Domain::Definitions::FraudResults.new_from_hash(hash['fraudResults'])
29
+ end
30
+ end
12
31
  end
13
32
  end
14
33
  end
@@ -2,13 +2,32 @@
2
2
  # This class was auto-generated from the API references found at
3
3
  # https://epayments-api.developer-ingenico.com/s2sapi/v1/
4
4
  #
5
+ require 'ingenico/connect/sdk/domain/definitions/fraud_results'
5
6
  require 'ingenico/connect/sdk/domain/payment/abstract_payment_method_specific_output'
6
7
 
7
8
  module Ingenico::Connect::SDK
8
9
  module Domain
9
10
  module Payment
10
11
 
12
+ # @attr [Ingenico::Connect::SDK::Domain::Definitions::FraudResults] fraud_results
11
13
  class InvoicePaymentMethodSpecificOutput < Ingenico::Connect::SDK::Domain::Payment::AbstractPaymentMethodSpecificOutput
14
+
15
+ attr_accessor :fraud_results
16
+
17
+ # @return (Hash)
18
+ def to_h
19
+ hash = super
20
+ hash['fraudResults'] = @fraud_results.to_h unless @fraud_results.nil?
21
+ hash
22
+ end
23
+
24
+ def from_hash(hash)
25
+ super
26
+ if hash.has_key? 'fraudResults'
27
+ raise TypeError, "value '%s' is not a Hash" % [hash['fraudResults']] unless hash['fraudResults'].is_a? Hash
28
+ @fraud_results = Ingenico::Connect::SDK::Domain::Definitions::FraudResults.new_from_hash(hash['fraudResults'])
29
+ end
30
+ end
12
31
  end
13
32
  end
14
33
  end
@@ -8,6 +8,7 @@ require 'ingenico/connect/sdk/domain/payment/redirect_payment_product816_specifi
8
8
  require 'ingenico/connect/sdk/domain/payment/redirect_payment_product840_specific_input'
9
9
  require 'ingenico/connect/sdk/domain/payment/redirect_payment_product861_specific_input'
10
10
  require 'ingenico/connect/sdk/domain/payment/redirect_payment_product863_specific_input'
11
+ require 'ingenico/connect/sdk/domain/payment/redirect_payment_product869_specific_input'
11
12
  require 'ingenico/connect/sdk/domain/payment/redirect_payment_product882_specific_input'
12
13
  require 'ingenico/connect/sdk/domain/payment/redirection_data'
13
14
 
@@ -21,6 +22,7 @@ module Ingenico::Connect::SDK
21
22
  # @attr [Ingenico::Connect::SDK::Domain::Payment::RedirectPaymentProduct840SpecificInput] payment_product840_specific_input
22
23
  # @attr [Ingenico::Connect::SDK::Domain::Payment::RedirectPaymentProduct861SpecificInput] payment_product861_specific_input
23
24
  # @attr [Ingenico::Connect::SDK::Domain::Payment::RedirectPaymentProduct863SpecificInput] payment_product863_specific_input
25
+ # @attr [Ingenico::Connect::SDK::Domain::Payment::RedirectPaymentProduct869SpecificInput] payment_product869_specific_input
24
26
  # @attr [Ingenico::Connect::SDK::Domain::Payment::RedirectPaymentProduct882SpecificInput] payment_product882_specific_input
25
27
  # @attr [Ingenico::Connect::SDK::Domain::Payment::RedirectionData] redirection_data
26
28
  # @attr [String] return_url
@@ -38,6 +40,8 @@ module Ingenico::Connect::SDK
38
40
 
39
41
  attr_accessor :payment_product863_specific_input
40
42
 
43
+ attr_accessor :payment_product869_specific_input
44
+
41
45
  attr_accessor :payment_product882_specific_input
42
46
 
43
47
  attr_accessor :redirection_data
@@ -55,6 +59,7 @@ module Ingenico::Connect::SDK
55
59
  hash['paymentProduct840SpecificInput'] = @payment_product840_specific_input.to_h unless @payment_product840_specific_input.nil?
56
60
  hash['paymentProduct861SpecificInput'] = @payment_product861_specific_input.to_h unless @payment_product861_specific_input.nil?
57
61
  hash['paymentProduct863SpecificInput'] = @payment_product863_specific_input.to_h unless @payment_product863_specific_input.nil?
62
+ hash['paymentProduct869SpecificInput'] = @payment_product869_specific_input.to_h unless @payment_product869_specific_input.nil?
58
63
  hash['paymentProduct882SpecificInput'] = @payment_product882_specific_input.to_h unless @payment_product882_specific_input.nil?
59
64
  hash['redirectionData'] = @redirection_data.to_h unless @redirection_data.nil?
60
65
  hash['returnUrl'] = @return_url unless @return_url.nil?
@@ -86,6 +91,10 @@ module Ingenico::Connect::SDK
86
91
  raise TypeError, "value '%s' is not a Hash" % [hash['paymentProduct863SpecificInput']] unless hash['paymentProduct863SpecificInput'].is_a? Hash
87
92
  @payment_product863_specific_input = Ingenico::Connect::SDK::Domain::Payment::RedirectPaymentProduct863SpecificInput.new_from_hash(hash['paymentProduct863SpecificInput'])
88
93
  end
94
+ if hash.has_key? 'paymentProduct869SpecificInput'
95
+ raise TypeError, "value '%s' is not a Hash" % [hash['paymentProduct869SpecificInput']] unless hash['paymentProduct869SpecificInput'].is_a? Hash
96
+ @payment_product869_specific_input = Ingenico::Connect::SDK::Domain::Payment::RedirectPaymentProduct869SpecificInput.new_from_hash(hash['paymentProduct869SpecificInput'])
97
+ end
89
98
  if hash.has_key? 'paymentProduct882SpecificInput'
90
99
  raise TypeError, "value '%s' is not a Hash" % [hash['paymentProduct882SpecificInput']] unless hash['paymentProduct882SpecificInput'].is_a? Hash
91
100
  @payment_product882_specific_input = Ingenico::Connect::SDK::Domain::Payment::RedirectPaymentProduct882SpecificInput.new_from_hash(hash['paymentProduct882SpecificInput'])
@@ -0,0 +1,46 @@
1
+ #
2
+ # This class was auto-generated from the API references found at
3
+ # https://epayments-api.developer-ingenico.com/s2sapi/v1/
4
+ #
5
+ require 'ingenico/connect/sdk/data_object'
6
+
7
+ module Ingenico::Connect::SDK
8
+ module Domain
9
+ module Payment
10
+
11
+ # @attr [String] issuer_id
12
+ # @attr [String] resident_id_name
13
+ # @attr [String] resident_id_number
14
+ class RedirectPaymentProduct869SpecificInput < Ingenico::Connect::SDK::DataObject
15
+
16
+ attr_accessor :issuer_id
17
+
18
+ attr_accessor :resident_id_name
19
+
20
+ attr_accessor :resident_id_number
21
+
22
+ # @return (Hash)
23
+ def to_h
24
+ hash = super
25
+ hash['issuerId'] = @issuer_id unless @issuer_id.nil?
26
+ hash['residentIdName'] = @resident_id_name unless @resident_id_name.nil?
27
+ hash['residentIdNumber'] = @resident_id_number unless @resident_id_number.nil?
28
+ hash
29
+ end
30
+
31
+ def from_hash(hash)
32
+ super
33
+ if hash.has_key? 'issuerId'
34
+ @issuer_id = hash['issuerId']
35
+ end
36
+ if hash.has_key? 'residentIdName'
37
+ @resident_id_name = hash['residentIdName']
38
+ end
39
+ if hash.has_key? 'residentIdNumber'
40
+ @resident_id_number = hash['residentIdNumber']
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
@@ -195,7 +195,7 @@ module Ingenico::Connect::SDK
195
195
  def build_property_pattern(pn)
196
196
  return /$^/ if pn.empty? # no possible match
197
197
  # Regex to create:
198
- # (["'])(X|Y|Z)\1\s*:\s*(?:(["'])(.*?)(?<!\\)\3|([^"'\s]\S*))
198
+ # (["'])(X|Y|Z)\1\s*:\s*(?:(["'])(.*?)(?<!\\)\3|([^"'\s\[\{]\S*))
199
199
  # Groups:
200
200
  # 1: opening " or ' for the property name
201
201
  # 2: property name
@@ -206,7 +206,7 @@ module Ingenico::Connect::SDK
206
206
  # the value. What this does not allow currently is having values end
207
207
  # with a \ (which would be escaped to \\).
208
208
  regex = pn.inject("([\"'])(") { |r, p| "#{r}#{Regexp.quote(p)}|"}.chop <<
209
- ")\\1\\s*:\\s*(?:([\"'])(.*?)(?<!\\\\)\\3|([^\"'\\s]\\S*))"
209
+ ")\\1\\s*:\\s*(?:([\"'])(.*?)(?<!\\\\)\\3|([^\"'\\s\\[\\{]\\S*))"
210
210
  /#{regex}/m # dotall mode
211
211
  end
212
212
 
@@ -7,7 +7,7 @@ module Ingenico::Connect::SDK
7
7
  #
8
8
  # @attr_reader [Array<Ingenico::Connect::SDK::RequestHeader>] meta_data_headers List of headers that should be used in all requests.
9
9
  class MetaDataProvider
10
- @@SDK_VERSION = '2.5.0'
10
+ @@SDK_VERSION = '2.6.0'
11
11
  @@SERVER_META_INFO_HEADER = 'X-GCS-ServerMetaInfo'
12
12
  @@PROHIBITED_HEADERS = [@@SERVER_META_INFO_HEADER, 'X-GCS-Idempotence-Key',
13
13
  'Date', 'Content-Type', 'Authorization'].sort!.freeze
@@ -0,0 +1,5 @@
1
+ {
2
+ "value": *****
3
+ "value": {
4
+ }
5
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "value": true,
3
+ "value": {
4
+ }
5
+ }
@@ -46,7 +46,7 @@ describe LoggingUtil do
46
46
 
47
47
  it 'works with card' do
48
48
  expect(
49
- test_obfuscate_body_with_matches("bodyWithCardOriginal.json",
49
+ test_obfuscate_body_with_matches("bodyWithCardOriginal.json",
50
50
  "bodyWithCardObfuscated.json")
51
51
  ).to be(true)
52
52
  end
@@ -60,7 +60,7 @@ describe LoggingUtil do
60
60
 
61
61
  it 'works with bin' do
62
62
  expect(
63
- test_obfuscate_body_with_matches("bodyWithBinOriginal.json",
63
+ test_obfuscate_body_with_matches("bodyWithBinOriginal.json",
64
64
  "bodyWithBinObfuscated.json")
65
65
  ).to be(true)
66
66
  end
@@ -70,6 +70,13 @@ describe LoggingUtil do
70
70
  test_obfuscate_body_with_no_matches("bodyNoObfuscation.json")
71
71
  ).to be(true)
72
72
  end
73
+
74
+ it 'works with object' do
75
+ expect(
76
+ test_obfuscate_body_with_matches("bodyWithObjectOriginal.json",
77
+ "bodyWithObjectObfuscated.json")
78
+ ).to be(true)
79
+ end
73
80
  end
74
81
 
75
82
  context '.obfuscate_header()' do
@@ -82,7 +89,7 @@ describe LoggingUtil do
82
89
 
83
90
  expect(
84
91
  test_obfuscate_header_with_match("authorization",
85
- "Basic QWxhZGRpbjpPcGVuU2VzYW1l",
92
+ "Basic QWxhZGRpbjpPcGVuU2VzYW1l",
86
93
  "********")
87
94
  ).to be(true)
88
95
 
@@ -91,7 +98,7 @@ describe LoggingUtil do
91
98
  "Basic QWxhZGRpbjpPcGVuU2VzYW1l",
92
99
  "********")
93
100
  ).to be(true)
94
-
101
+
95
102
  expect(
96
103
  test_obfuscate_header_with_match("X-GCS-Authentication-Token",
97
104
  "foobar", "********")
@@ -108,12 +115,12 @@ describe LoggingUtil do
108
115
  ).to be(true)
109
116
 
110
117
  expect(
111
- test_obfuscate_header_with_match("X-GCS-CallerPassword", "foobar",
118
+ test_obfuscate_header_with_match("X-GCS-CallerPassword", "foobar",
112
119
  "********")
113
120
  ).to be(true)
114
121
 
115
122
  expect(
116
- test_obfuscate_header_with_match("x-gcs-callerpassword", "foobar",
123
+ test_obfuscate_header_with_match("x-gcs-callerpassword", "foobar",
117
124
  "********")
118
125
  ).to be(true)
119
126
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: connect-sdk-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.5.0
4
+ version: 2.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ingenico ePayments
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-09-30 00:00:00.000000000 Z
11
+ date: 2020-02-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httpclient
@@ -236,6 +236,7 @@ files:
236
236
  - lib/ingenico/connect/sdk/domain/definitions/fraud_results.rb
237
237
  - lib/ingenico/connect/sdk/domain/definitions/fraud_results_retail_decisions.rb
238
238
  - lib/ingenico/connect/sdk/domain/definitions/fraugster_results.rb
239
+ - lib/ingenico/connect/sdk/domain/definitions/in_auth.rb
239
240
  - lib/ingenico/connect/sdk/domain/definitions/key_value_pair.rb
240
241
  - lib/ingenico/connect/sdk/domain/definitions/order_status_output.rb
241
242
  - lib/ingenico/connect/sdk/domain/definitions/payment_product_filter.rb
@@ -406,6 +407,7 @@ files:
406
407
  - lib/ingenico/connect/sdk/domain/payment/redirect_payment_product840_specific_input_base.rb
407
408
  - lib/ingenico/connect/sdk/domain/payment/redirect_payment_product861_specific_input.rb
408
409
  - lib/ingenico/connect/sdk/domain/payment/redirect_payment_product863_specific_input.rb
410
+ - lib/ingenico/connect/sdk/domain/payment/redirect_payment_product869_specific_input.rb
409
411
  - lib/ingenico/connect/sdk/domain/payment/redirect_payment_product882_specific_input.rb
410
412
  - lib/ingenico/connect/sdk/domain/payment/redirection_data.rb
411
413
  - lib/ingenico/connect/sdk/domain/payment/refund_bank_method_specific_output.rb
@@ -638,6 +640,8 @@ files:
638
640
  - spec/fixtures/resources/logging/bodyWithCardOriginal.json
639
641
  - spec/fixtures/resources/logging/bodyWithIbanObfuscated.json
640
642
  - spec/fixtures/resources/logging/bodyWithIbanOriginal.json
643
+ - spec/fixtures/resources/logging/bodyWithObjectObfuscated.json
644
+ - spec/fixtures/resources/logging/bodyWithObjectOriginal.json
641
645
  - spec/fixtures/resources/payment/duplicate_request.json
642
646
  - spec/fixtures/resources/payment/invalid_authorization.json
643
647
  - spec/fixtures/resources/payment/invalid_request.json
@@ -729,6 +733,8 @@ test_files:
729
733
  - spec/fixtures/resources/logging/bodyWithCardOriginal.json
730
734
  - spec/fixtures/resources/logging/bodyWithIbanObfuscated.json
731
735
  - spec/fixtures/resources/logging/bodyWithIbanOriginal.json
736
+ - spec/fixtures/resources/logging/bodyWithObjectObfuscated.json
737
+ - spec/fixtures/resources/logging/bodyWithObjectOriginal.json
732
738
  - spec/fixtures/resources/payment/duplicate_request.json
733
739
  - spec/fixtures/resources/payment/invalid_authorization.json
734
740
  - spec/fixtures/resources/payment/invalid_request.json