connect-sdk-ruby 2.8.0 → 2.13.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.
Files changed (23) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +4 -4
  3. data/connect-sdk-ruby.gemspec +2 -2
  4. data/examples/merchant/payments/create_payment_example.rb +5 -0
  5. data/examples/merchant/products/create_payment_product_session_example.rb +33 -0
  6. data/lib/ingenico/connect/sdk/domain/capture/capture_output.rb +7 -0
  7. data/lib/ingenico/connect/sdk/domain/hostedcheckout/mobile_payment_method_specific_input_hosted_checkout.rb +9 -0
  8. data/lib/ingenico/connect/sdk/domain/hostedcheckout/mobile_payment_product302_specific_input_hosted_checkout.rb +32 -0
  9. data/lib/ingenico/connect/sdk/domain/payment/abstract_three_d_secure.rb +9 -0
  10. data/lib/ingenico/connect/sdk/domain/payment/external_cardholder_authentication_data.rb +23 -0
  11. data/lib/ingenico/connect/sdk/domain/payment/payment_output.rb +7 -0
  12. data/lib/ingenico/connect/sdk/domain/payment/three_d_secure_results.rb +30 -0
  13. data/lib/ingenico/connect/sdk/domain/product/create_payment_product_session_request.rb +34 -0
  14. data/lib/ingenico/connect/sdk/domain/product/create_payment_product_session_response.rb +34 -0
  15. data/lib/ingenico/connect/sdk/domain/product/mobile_payment_product_session302_specific_input.rb +46 -0
  16. data/lib/ingenico/connect/sdk/domain/product/mobile_payment_product_session302_specific_output.rb +32 -0
  17. data/lib/ingenico/connect/sdk/domain/product/payment_product.rb +7 -0
  18. data/lib/ingenico/connect/sdk/logging/logging_util.rb +1 -1
  19. data/lib/ingenico/connect/sdk/merchant/products/products_client.rb +33 -0
  20. data/lib/ingenico/connect/sdk/meta_data_provider.rb +1 -1
  21. data/spec/fixtures/resources/logging/bodyWithObjectObfuscated.json +2 -2
  22. data/spec/fixtures/resources/logging/bodyWithObjectOriginal.json +1 -1
  23. metadata +17 -6
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f485cc722658719c5210de579a671c54cff378907adc818d3126da50339ef013
4
- data.tar.gz: 4502eee51dc8326e826d3c710fe0771b2c813e2d6550136c224c24318be7072e
3
+ metadata.gz: 61e9fff492d85eff48736fa104cf91edeffd109bd9a5a035d04db076e822e21f
4
+ data.tar.gz: 237f4cd283409d86a383988e1912ce082a8bfed72bbbce0568b0162afe699550
5
5
  SHA512:
6
- metadata.gz: 79fd16223994f5759c6d8bf17ec1865b4175846b95820cb45b7b35285cf679c12b81d044a0c9db2e505565e08835da004f46970037efc71a587119a9e9de3a8b
7
- data.tar.gz: b2ac36a30aa3980289f6af652202ecc949e4c921d4aa5d99b722c13a229726d0268a466f141e10facf6600230adc483855b68075c8bb35b235b42e5aa4c6e62d
6
+ metadata.gz: cce1aac68f75eaabadb3bf34aec3079306ae1598fe82a2f97ac7b88f92e77bb159b1f126fe29602f1185fa9186b5d1d3e447e72789c94a437aea10ef013896cd
7
+ data.tar.gz: e736d979e10ac6877ba01784fc8516340f664a6b7a3a81f0df70a814c1cd3f08f92d475e811dd4f9ff340367f5fa5a38d53353aa0312967654972e89fa096f87
data/README.md CHANGED
@@ -27,9 +27,9 @@ Note that the source code of the unit tests, integration tests and the examples
27
27
 
28
28
  ## Requirements
29
29
 
30
- Ruby 2.2 or higher is required. Ruby 2.1.10 is also supported but is not suggested because official support has ended and security maintenance will end soon.
30
+ Ruby 2.3 or higher is required.
31
31
  As for JRuby, version 9.0.0.0 and higher are supported.
32
- In addition, the following package is required:
32
+ In addition, the following packages are required:
33
33
 
34
34
  * [httpclient](https://github.com/nahi/httpclient) 2.8 or higher
35
35
  * [concurrent-ruby](https://github.com/ruby-concurrency/concurrent-ruby) 1.0 or higher
@@ -91,7 +91,7 @@ In addition, to run the proxy integration tests, the proxy URI, username and pas
91
91
 
92
92
  In order to run the unit and integration tests, some additional dependencies are required:
93
93
 
94
- * [rake](https://ruby.github.io/rake/) 10.4 or higher
94
+ * [rake](https://ruby.github.io/rake/) 12.3.3 or higher
95
95
  * [rspec](https://github.com/rspec/rspec) 3.5 or higher
96
96
  * [webmock](https://github.com/bblimke/webmock) 2.1 or higher
97
97
  * [sinatra](https://github.com/sinatra/sinatra) 1.4 or higher
@@ -126,7 +126,7 @@ The following commands can now be executed from the root directory of the SDK fo
126
126
 
127
127
  Documentation can be generated with YARD. YARD can be installed as a gem. The gems required to generate documentation are:
128
128
 
129
- * [rake](https://ruby.github.io/rake/) 10.4 or higher
129
+ * [rake](https://ruby.github.io/rake/) 12.3.3 or higher
130
130
  * [yard](https://github.com/lsegal/yard) 0.9.5 or higher
131
131
 
132
132
  They can be installed using the following command:
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |spec|
2
2
  spec.name = 'connect-sdk-ruby'
3
- spec.version = '2.8.0'
3
+ spec.version = '2.13.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}
@@ -24,6 +24,6 @@ Gem::Specification.new do |spec|
24
24
  spec.add_development_dependency 'rspec', '~> 3.5'
25
25
  spec.add_development_dependency 'webmock', '~> 2.1'
26
26
  spec.add_development_dependency 'sinatra', '~> 1.4'
27
- spec.add_development_dependency 'rake', '~> 10.4'
27
+ spec.add_development_dependency 'rake', '~> 12.3', '>= 12.3.3'
28
28
  # spec.metadata['yard.run'] = 'yri' # compiles yard doc on install
29
29
  end
@@ -39,10 +39,15 @@ def example
39
39
  card.cvv = '123'
40
40
  card.expiry_date = '1220'
41
41
 
42
+ authentication_amount = Definitions::AmountOfMoney.new
43
+ authentication_amount.amount = 2980
44
+ authentication_amount.currency_code = 'EUR'
45
+
42
46
  redirection_data = Payment::RedirectionData.new
43
47
  redirection_data.return_url = 'https://hostname.myownwebsite.url'
44
48
 
45
49
  three_d_secure = Payment::ThreeDSecure.new
50
+ three_d_secure.authentication_amount = authentication_amount
46
51
  three_d_secure.authentication_flow = 'browser'
47
52
  three_d_secure.challenge_canvas_size = '600x400'
48
53
  three_d_secure.challenge_indicator = 'challenge-requested'
@@ -0,0 +1,33 @@
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/factory'
6
+ require 'ingenico/connect/sdk/domain/product/create_payment_product_session_request'
7
+ require 'ingenico/connect/sdk/domain/product/mobile_payment_product_session302_specific_input'
8
+
9
+ Product = Ingenico::Connect::SDK::Domain::Product
10
+
11
+ def example
12
+ get_client do |client|
13
+ payment_product_session302_specific_input = Product::MobilePaymentProductSession302SpecificInput.new
14
+ payment_product_session302_specific_input.display_name = 'Ingenico'
15
+ payment_product_session302_specific_input.domain_name = 'pay1.secured-by-ingenico.com'
16
+ payment_product_session302_specific_input.validation_url = 'https://apple-pay-gateway-cert.apple.com/paymentservices/startSession'
17
+
18
+ body = Product::CreatePaymentProductSessionRequest.new
19
+ body.payment_product_session302_specific_input = payment_product_session302_specific_input
20
+
21
+ response = client.merchant('merchantId').products.sessions(302, body)
22
+ end
23
+ end
24
+
25
+ def get_client
26
+ api_key_id = ENV.fetch('connect.api.apiKeyId', 'someKey')
27
+ secret_api_key = ENV.fetch('connect.api.secretApiKey', 'someSecret')
28
+ configuration_file_name = File.join(__FILE__, '..', '..', 'example_configuration.yml')
29
+ yield client = Ingenico::Connect::SDK::Factory.create_client_from_file(configuration_file_name, api_key_id, secret_api_key)
30
+ ensure
31
+ # Free networking resources when done
32
+ client.close unless client.nil?
33
+ end
@@ -28,6 +28,7 @@ module Ingenico::Connect::SDK
28
28
  # @attr [Ingenico::Connect::SDK::Domain::Payment::MobilePaymentMethodSpecificOutput] mobile_payment_method_specific_output
29
29
  # @attr [String] payment_method
30
30
  # @attr [Ingenico::Connect::SDK::Domain::Payment::RedirectPaymentMethodSpecificOutput] redirect_payment_method_specific_output
31
+ # @attr [String] reversal_reason
31
32
  # @attr [Ingenico::Connect::SDK::Domain::Payment::SepaDirectDebitPaymentMethodSpecificOutput] sepa_direct_debit_payment_method_specific_output
32
33
  class CaptureOutput < Ingenico::Connect::SDK::Domain::Payment::OrderOutput
33
34
 
@@ -53,6 +54,8 @@ module Ingenico::Connect::SDK
53
54
 
54
55
  attr_accessor :redirect_payment_method_specific_output
55
56
 
57
+ attr_accessor :reversal_reason
58
+
56
59
  attr_accessor :sepa_direct_debit_payment_method_specific_output
57
60
 
58
61
  # @return (Hash)
@@ -69,6 +72,7 @@ module Ingenico::Connect::SDK
69
72
  hash['mobilePaymentMethodSpecificOutput'] = @mobile_payment_method_specific_output.to_h unless @mobile_payment_method_specific_output.nil?
70
73
  hash['paymentMethod'] = @payment_method unless @payment_method.nil?
71
74
  hash['redirectPaymentMethodSpecificOutput'] = @redirect_payment_method_specific_output.to_h unless @redirect_payment_method_specific_output.nil?
75
+ hash['reversalReason'] = @reversal_reason unless @reversal_reason.nil?
72
76
  hash['sepaDirectDebitPaymentMethodSpecificOutput'] = @sepa_direct_debit_payment_method_specific_output.to_h unless @sepa_direct_debit_payment_method_specific_output.nil?
73
77
  hash
74
78
  end
@@ -116,6 +120,9 @@ module Ingenico::Connect::SDK
116
120
  raise TypeError, "value '%s' is not a Hash" % [hash['redirectPaymentMethodSpecificOutput']] unless hash['redirectPaymentMethodSpecificOutput'].is_a? Hash
117
121
  @redirect_payment_method_specific_output = Ingenico::Connect::SDK::Domain::Payment::RedirectPaymentMethodSpecificOutput.new_from_hash(hash['redirectPaymentMethodSpecificOutput'])
118
122
  end
123
+ if hash.has_key? 'reversalReason'
124
+ @reversal_reason = hash['reversalReason']
125
+ end
119
126
  if hash.has_key? 'sepaDirectDebitPaymentMethodSpecificOutput'
120
127
  raise TypeError, "value '%s' is not a Hash" % [hash['sepaDirectDebitPaymentMethodSpecificOutput']] unless hash['sepaDirectDebitPaymentMethodSpecificOutput'].is_a? Hash
121
128
  @sepa_direct_debit_payment_method_specific_output = Ingenico::Connect::SDK::Domain::Payment::SepaDirectDebitPaymentMethodSpecificOutput.new_from_hash(hash['sepaDirectDebitPaymentMethodSpecificOutput'])
@@ -3,26 +3,35 @@
3
3
  # https://epayments-api.developer-ingenico.com/s2sapi/v1/
4
4
  #
5
5
  require 'ingenico/connect/sdk/domain/definitions/abstract_payment_method_specific_input'
6
+ require 'ingenico/connect/sdk/domain/hostedcheckout/mobile_payment_product302_specific_input_hosted_checkout'
6
7
  require 'ingenico/connect/sdk/domain/hostedcheckout/mobile_payment_product320_specific_input_hosted_checkout'
7
8
 
8
9
  module Ingenico::Connect::SDK
9
10
  module Domain
10
11
  module Hostedcheckout
11
12
 
13
+ # @attr [Ingenico::Connect::SDK::Domain::Hostedcheckout::MobilePaymentProduct302SpecificInputHostedCheckout] payment_product302_specific_input
12
14
  # @attr [Ingenico::Connect::SDK::Domain::Hostedcheckout::MobilePaymentProduct320SpecificInputHostedCheckout] payment_product320_specific_input
13
15
  class MobilePaymentMethodSpecificInputHostedCheckout < Ingenico::Connect::SDK::Domain::Definitions::AbstractPaymentMethodSpecificInput
14
16
 
17
+ attr_accessor :payment_product302_specific_input
18
+
15
19
  attr_accessor :payment_product320_specific_input
16
20
 
17
21
  # @return (Hash)
18
22
  def to_h
19
23
  hash = super
24
+ hash['paymentProduct302SpecificInput'] = @payment_product302_specific_input.to_h unless @payment_product302_specific_input.nil?
20
25
  hash['paymentProduct320SpecificInput'] = @payment_product320_specific_input.to_h unless @payment_product320_specific_input.nil?
21
26
  hash
22
27
  end
23
28
 
24
29
  def from_hash(hash)
25
30
  super
31
+ if hash.has_key? 'paymentProduct302SpecificInput'
32
+ raise TypeError, "value '%s' is not a Hash" % [hash['paymentProduct302SpecificInput']] unless hash['paymentProduct302SpecificInput'].is_a? Hash
33
+ @payment_product302_specific_input = Ingenico::Connect::SDK::Domain::Hostedcheckout::MobilePaymentProduct302SpecificInputHostedCheckout.new_from_hash(hash['paymentProduct302SpecificInput'])
34
+ end
26
35
  if hash.has_key? 'paymentProduct320SpecificInput'
27
36
  raise TypeError, "value '%s' is not a Hash" % [hash['paymentProduct320SpecificInput']] unless hash['paymentProduct320SpecificInput'].is_a? Hash
28
37
  @payment_product320_specific_input = Ingenico::Connect::SDK::Domain::Hostedcheckout::MobilePaymentProduct320SpecificInputHostedCheckout.new_from_hash(hash['paymentProduct320SpecificInput'])
@@ -0,0 +1,32 @@
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 Hostedcheckout
10
+
11
+ # @attr [String] business_name
12
+ class MobilePaymentProduct302SpecificInputHostedCheckout < Ingenico::Connect::SDK::DataObject
13
+
14
+ attr_accessor :business_name
15
+
16
+ # @return (Hash)
17
+ def to_h
18
+ hash = super
19
+ hash['businessName'] = @business_name unless @business_name.nil?
20
+ hash
21
+ end
22
+
23
+ def from_hash(hash)
24
+ super
25
+ if hash.has_key? 'businessName'
26
+ @business_name = hash['businessName']
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -3,6 +3,7 @@
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/amount_of_money'
6
7
  require 'ingenico/connect/sdk/domain/payment/sdk_data_input'
7
8
  require 'ingenico/connect/sdk/domain/payment/three_d_secure_data'
8
9
 
@@ -10,6 +11,7 @@ module Ingenico::Connect::SDK
10
11
  module Domain
11
12
  module Payment
12
13
 
14
+ # @attr [Ingenico::Connect::SDK::Domain::Definitions::AmountOfMoney] authentication_amount
13
15
  # @attr [String] authentication_flow
14
16
  # @attr [String] challenge_canvas_size
15
17
  # @attr [String] challenge_indicator
@@ -19,6 +21,8 @@ module Ingenico::Connect::SDK
19
21
  # @attr [true/false] skip_authentication
20
22
  class AbstractThreeDSecure < Ingenico::Connect::SDK::DataObject
21
23
 
24
+ attr_accessor :authentication_amount
25
+
22
26
  attr_accessor :authentication_flow
23
27
 
24
28
  attr_accessor :challenge_canvas_size
@@ -36,6 +40,7 @@ module Ingenico::Connect::SDK
36
40
  # @return (Hash)
37
41
  def to_h
38
42
  hash = super
43
+ hash['authenticationAmount'] = @authentication_amount.to_h unless @authentication_amount.nil?
39
44
  hash['authenticationFlow'] = @authentication_flow unless @authentication_flow.nil?
40
45
  hash['challengeCanvasSize'] = @challenge_canvas_size unless @challenge_canvas_size.nil?
41
46
  hash['challengeIndicator'] = @challenge_indicator unless @challenge_indicator.nil?
@@ -48,6 +53,10 @@ module Ingenico::Connect::SDK
48
53
 
49
54
  def from_hash(hash)
50
55
  super
56
+ if hash.has_key? 'authenticationAmount'
57
+ raise TypeError, "value '%s' is not a Hash" % [hash['authenticationAmount']] unless hash['authenticationAmount'].is_a? Hash
58
+ @authentication_amount = Ingenico::Connect::SDK::Domain::Definitions::AmountOfMoney.new_from_hash(hash['authenticationAmount'])
59
+ end
51
60
  if hash.has_key? 'authenticationFlow'
52
61
  @authentication_flow = hash['authenticationFlow']
53
62
  end
@@ -8,16 +8,23 @@ module Ingenico::Connect::SDK
8
8
  module Domain
9
9
  module Payment
10
10
 
11
+ # @attr [String] acs_transaction_id
12
+ # @attr [String] applied_exemption
11
13
  # @attr [String] cavv
12
14
  # @attr [String] cavv_algorithm
13
15
  # @attr [String] directory_server_transaction_id
14
16
  # @attr [Integer] eci
17
+ # @attr [Integer] scheme_risk_score
15
18
  # @attr [String] three_d_secure_version
16
19
  # @attr [String] three_d_server_transaction_id
17
20
  # @attr [String] validation_result
18
21
  # @attr [String] xid
19
22
  class ExternalCardholderAuthenticationData < Ingenico::Connect::SDK::DataObject
20
23
 
24
+ attr_accessor :acs_transaction_id
25
+
26
+ attr_accessor :applied_exemption
27
+
21
28
  attr_accessor :cavv
22
29
 
23
30
  attr_accessor :cavv_algorithm
@@ -26,8 +33,12 @@ module Ingenico::Connect::SDK
26
33
 
27
34
  attr_accessor :eci
28
35
 
36
+ attr_accessor :scheme_risk_score
37
+
29
38
  attr_accessor :three_d_secure_version
30
39
 
40
+ #
41
+ # @deprecated No replacement
31
42
  attr_accessor :three_d_server_transaction_id
32
43
 
33
44
  attr_accessor :validation_result
@@ -37,10 +48,13 @@ module Ingenico::Connect::SDK
37
48
  # @return (Hash)
38
49
  def to_h
39
50
  hash = super
51
+ hash['acsTransactionId'] = @acs_transaction_id unless @acs_transaction_id.nil?
52
+ hash['appliedExemption'] = @applied_exemption unless @applied_exemption.nil?
40
53
  hash['cavv'] = @cavv unless @cavv.nil?
41
54
  hash['cavvAlgorithm'] = @cavv_algorithm unless @cavv_algorithm.nil?
42
55
  hash['directoryServerTransactionId'] = @directory_server_transaction_id unless @directory_server_transaction_id.nil?
43
56
  hash['eci'] = @eci unless @eci.nil?
57
+ hash['schemeRiskScore'] = @scheme_risk_score unless @scheme_risk_score.nil?
44
58
  hash['threeDSecureVersion'] = @three_d_secure_version unless @three_d_secure_version.nil?
45
59
  hash['threeDServerTransactionId'] = @three_d_server_transaction_id unless @three_d_server_transaction_id.nil?
46
60
  hash['validationResult'] = @validation_result unless @validation_result.nil?
@@ -50,6 +64,12 @@ module Ingenico::Connect::SDK
50
64
 
51
65
  def from_hash(hash)
52
66
  super
67
+ if hash.has_key? 'acsTransactionId'
68
+ @acs_transaction_id = hash['acsTransactionId']
69
+ end
70
+ if hash.has_key? 'appliedExemption'
71
+ @applied_exemption = hash['appliedExemption']
72
+ end
53
73
  if hash.has_key? 'cavv'
54
74
  @cavv = hash['cavv']
55
75
  end
@@ -62,6 +82,9 @@ module Ingenico::Connect::SDK
62
82
  if hash.has_key? 'eci'
63
83
  @eci = hash['eci']
64
84
  end
85
+ if hash.has_key? 'schemeRiskScore'
86
+ @scheme_risk_score = hash['schemeRiskScore']
87
+ end
65
88
  if hash.has_key? 'threeDSecureVersion'
66
89
  @three_d_secure_version = hash['threeDSecureVersion']
67
90
  end
@@ -28,6 +28,7 @@ module Ingenico::Connect::SDK
28
28
  # @attr [Ingenico::Connect::SDK::Domain::Payment::MobilePaymentMethodSpecificOutput] mobile_payment_method_specific_output
29
29
  # @attr [String] payment_method
30
30
  # @attr [Ingenico::Connect::SDK::Domain::Payment::RedirectPaymentMethodSpecificOutput] redirect_payment_method_specific_output
31
+ # @attr [String] reversal_reason
31
32
  # @attr [Ingenico::Connect::SDK::Domain::Payment::SepaDirectDebitPaymentMethodSpecificOutput] sepa_direct_debit_payment_method_specific_output
32
33
  class PaymentOutput < Ingenico::Connect::SDK::Domain::Payment::OrderOutput
33
34
 
@@ -53,6 +54,8 @@ module Ingenico::Connect::SDK
53
54
 
54
55
  attr_accessor :redirect_payment_method_specific_output
55
56
 
57
+ attr_accessor :reversal_reason
58
+
56
59
  attr_accessor :sepa_direct_debit_payment_method_specific_output
57
60
 
58
61
  # @return (Hash)
@@ -69,6 +72,7 @@ module Ingenico::Connect::SDK
69
72
  hash['mobilePaymentMethodSpecificOutput'] = @mobile_payment_method_specific_output.to_h unless @mobile_payment_method_specific_output.nil?
70
73
  hash['paymentMethod'] = @payment_method unless @payment_method.nil?
71
74
  hash['redirectPaymentMethodSpecificOutput'] = @redirect_payment_method_specific_output.to_h unless @redirect_payment_method_specific_output.nil?
75
+ hash['reversalReason'] = @reversal_reason unless @reversal_reason.nil?
72
76
  hash['sepaDirectDebitPaymentMethodSpecificOutput'] = @sepa_direct_debit_payment_method_specific_output.to_h unless @sepa_direct_debit_payment_method_specific_output.nil?
73
77
  hash
74
78
  end
@@ -116,6 +120,9 @@ module Ingenico::Connect::SDK
116
120
  raise TypeError, "value '%s' is not a Hash" % [hash['redirectPaymentMethodSpecificOutput']] unless hash['redirectPaymentMethodSpecificOutput'].is_a? Hash
117
121
  @redirect_payment_method_specific_output = Ingenico::Connect::SDK::Domain::Payment::RedirectPaymentMethodSpecificOutput.new_from_hash(hash['redirectPaymentMethodSpecificOutput'])
118
122
  end
123
+ if hash.has_key? 'reversalReason'
124
+ @reversal_reason = hash['reversalReason']
125
+ end
119
126
  if hash.has_key? 'sepaDirectDebitPaymentMethodSpecificOutput'
120
127
  raise TypeError, "value '%s' is not a Hash" % [hash['sepaDirectDebitPaymentMethodSpecificOutput']] unless hash['sepaDirectDebitPaymentMethodSpecificOutput'].is_a? Hash
121
128
  @sepa_direct_debit_payment_method_specific_output = Ingenico::Connect::SDK::Domain::Payment::SepaDirectDebitPaymentMethodSpecificOutput.new_from_hash(hash['sepaDirectDebitPaymentMethodSpecificOutput'])
@@ -3,6 +3,7 @@
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/amount_of_money'
6
7
  require 'ingenico/connect/sdk/domain/payment/sdk_data_output'
7
8
  require 'ingenico/connect/sdk/domain/payment/three_d_secure_data'
8
9
 
@@ -10,9 +11,13 @@ module Ingenico::Connect::SDK
10
11
  module Domain
11
12
  module Payment
12
13
 
14
+ # @attr [String] acs_transaction_id
15
+ # @attr [String] applied_exemption
16
+ # @attr [Ingenico::Connect::SDK::Domain::Definitions::AmountOfMoney] authentication_amount
13
17
  # @attr [String] cavv
14
18
  # @attr [String] directory_server_transaction_id
15
19
  # @attr [String] eci
20
+ # @attr [Integer] scheme_risk_score
16
21
  # @attr [Ingenico::Connect::SDK::Domain::Payment::SdkDataOutput] sdk_data
17
22
  # @attr [Ingenico::Connect::SDK::Domain::Payment::ThreeDSecureData] three_d_secure_data
18
23
  # @attr [String] three_d_secure_version
@@ -20,12 +25,20 @@ module Ingenico::Connect::SDK
20
25
  # @attr [String] xid
21
26
  class ThreeDSecureResults < Ingenico::Connect::SDK::DataObject
22
27
 
28
+ attr_accessor :acs_transaction_id
29
+
30
+ attr_accessor :applied_exemption
31
+
32
+ attr_accessor :authentication_amount
33
+
23
34
  attr_accessor :cavv
24
35
 
25
36
  attr_accessor :directory_server_transaction_id
26
37
 
27
38
  attr_accessor :eci
28
39
 
40
+ attr_accessor :scheme_risk_score
41
+
29
42
  attr_accessor :sdk_data
30
43
 
31
44
  attr_accessor :three_d_secure_data
@@ -39,9 +52,13 @@ module Ingenico::Connect::SDK
39
52
  # @return (Hash)
40
53
  def to_h
41
54
  hash = super
55
+ hash['acsTransactionId'] = @acs_transaction_id unless @acs_transaction_id.nil?
56
+ hash['appliedExemption'] = @applied_exemption unless @applied_exemption.nil?
57
+ hash['authenticationAmount'] = @authentication_amount.to_h unless @authentication_amount.nil?
42
58
  hash['cavv'] = @cavv unless @cavv.nil?
43
59
  hash['directoryServerTransactionId'] = @directory_server_transaction_id unless @directory_server_transaction_id.nil?
44
60
  hash['eci'] = @eci unless @eci.nil?
61
+ hash['schemeRiskScore'] = @scheme_risk_score unless @scheme_risk_score.nil?
45
62
  hash['sdkData'] = @sdk_data.to_h unless @sdk_data.nil?
46
63
  hash['threeDSecureData'] = @three_d_secure_data.to_h unless @three_d_secure_data.nil?
47
64
  hash['threeDSecureVersion'] = @three_d_secure_version unless @three_d_secure_version.nil?
@@ -52,6 +69,16 @@ module Ingenico::Connect::SDK
52
69
 
53
70
  def from_hash(hash)
54
71
  super
72
+ if hash.has_key? 'acsTransactionId'
73
+ @acs_transaction_id = hash['acsTransactionId']
74
+ end
75
+ if hash.has_key? 'appliedExemption'
76
+ @applied_exemption = hash['appliedExemption']
77
+ end
78
+ if hash.has_key? 'authenticationAmount'
79
+ raise TypeError, "value '%s' is not a Hash" % [hash['authenticationAmount']] unless hash['authenticationAmount'].is_a? Hash
80
+ @authentication_amount = Ingenico::Connect::SDK::Domain::Definitions::AmountOfMoney.new_from_hash(hash['authenticationAmount'])
81
+ end
55
82
  if hash.has_key? 'cavv'
56
83
  @cavv = hash['cavv']
57
84
  end
@@ -61,6 +88,9 @@ module Ingenico::Connect::SDK
61
88
  if hash.has_key? 'eci'
62
89
  @eci = hash['eci']
63
90
  end
91
+ if hash.has_key? 'schemeRiskScore'
92
+ @scheme_risk_score = hash['schemeRiskScore']
93
+ end
64
94
  if hash.has_key? 'sdkData'
65
95
  raise TypeError, "value '%s' is not a Hash" % [hash['sdkData']] unless hash['sdkData'].is_a? Hash
66
96
  @sdk_data = Ingenico::Connect::SDK::Domain::Payment::SdkDataOutput.new_from_hash(hash['sdkData'])
@@ -0,0 +1,34 @@
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
+ require 'ingenico/connect/sdk/domain/product/mobile_payment_product_session302_specific_input'
7
+
8
+ module Ingenico::Connect::SDK
9
+ module Domain
10
+ module Product
11
+
12
+ # @attr [Ingenico::Connect::SDK::Domain::Product::MobilePaymentProductSession302SpecificInput] payment_product_session302_specific_input
13
+ class CreatePaymentProductSessionRequest < Ingenico::Connect::SDK::DataObject
14
+
15
+ attr_accessor :payment_product_session302_specific_input
16
+
17
+ # @return (Hash)
18
+ def to_h
19
+ hash = super
20
+ hash['paymentProductSession302SpecificInput'] = @payment_product_session302_specific_input.to_h unless @payment_product_session302_specific_input.nil?
21
+ hash
22
+ end
23
+
24
+ def from_hash(hash)
25
+ super
26
+ if hash.has_key? 'paymentProductSession302SpecificInput'
27
+ raise TypeError, "value '%s' is not a Hash" % [hash['paymentProductSession302SpecificInput']] unless hash['paymentProductSession302SpecificInput'].is_a? Hash
28
+ @payment_product_session302_specific_input = Ingenico::Connect::SDK::Domain::Product::MobilePaymentProductSession302SpecificInput.new_from_hash(hash['paymentProductSession302SpecificInput'])
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,34 @@
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
+ require 'ingenico/connect/sdk/domain/product/mobile_payment_product_session302_specific_output'
7
+
8
+ module Ingenico::Connect::SDK
9
+ module Domain
10
+ module Product
11
+
12
+ # @attr [Ingenico::Connect::SDK::Domain::Product::MobilePaymentProductSession302SpecificOutput] payment_product_session302_specific_output
13
+ class CreatePaymentProductSessionResponse < Ingenico::Connect::SDK::DataObject
14
+
15
+ attr_accessor :payment_product_session302_specific_output
16
+
17
+ # @return (Hash)
18
+ def to_h
19
+ hash = super
20
+ hash['paymentProductSession302SpecificOutput'] = @payment_product_session302_specific_output.to_h unless @payment_product_session302_specific_output.nil?
21
+ hash
22
+ end
23
+
24
+ def from_hash(hash)
25
+ super
26
+ if hash.has_key? 'paymentProductSession302SpecificOutput'
27
+ raise TypeError, "value '%s' is not a Hash" % [hash['paymentProductSession302SpecificOutput']] unless hash['paymentProductSession302SpecificOutput'].is_a? Hash
28
+ @payment_product_session302_specific_output = Ingenico::Connect::SDK::Domain::Product::MobilePaymentProductSession302SpecificOutput.new_from_hash(hash['paymentProductSession302SpecificOutput'])
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -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 Product
10
+
11
+ # @attr [String] display_name
12
+ # @attr [String] domain_name
13
+ # @attr [String] validation_url
14
+ class MobilePaymentProductSession302SpecificInput < Ingenico::Connect::SDK::DataObject
15
+
16
+ attr_accessor :display_name
17
+
18
+ attr_accessor :domain_name
19
+
20
+ attr_accessor :validation_url
21
+
22
+ # @return (Hash)
23
+ def to_h
24
+ hash = super
25
+ hash['displayName'] = @display_name unless @display_name.nil?
26
+ hash['domainName'] = @domain_name unless @domain_name.nil?
27
+ hash['validationUrl'] = @validation_url unless @validation_url.nil?
28
+ hash
29
+ end
30
+
31
+ def from_hash(hash)
32
+ super
33
+ if hash.has_key? 'displayName'
34
+ @display_name = hash['displayName']
35
+ end
36
+ if hash.has_key? 'domainName'
37
+ @domain_name = hash['domainName']
38
+ end
39
+ if hash.has_key? 'validationUrl'
40
+ @validation_url = hash['validationUrl']
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,32 @@
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 Product
10
+
11
+ # @attr [String] session_object
12
+ class MobilePaymentProductSession302SpecificOutput < Ingenico::Connect::SDK::DataObject
13
+
14
+ attr_accessor :session_object
15
+
16
+ # @return (Hash)
17
+ def to_h
18
+ hash = super
19
+ hash['sessionObject'] = @session_object unless @session_object.nil?
20
+ hash
21
+ end
22
+
23
+ def from_hash(hash)
24
+ super
25
+ if hash.has_key? 'sessionObject'
26
+ @session_object = hash['sessionObject']
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -16,6 +16,7 @@ module Ingenico::Connect::SDK
16
16
  module Product
17
17
 
18
18
  # @attr [Array<Ingenico::Connect::SDK::Domain::Product::AccountOnFile>] accounts_on_file
19
+ # @attr [true/false] allows_installments
19
20
  # @attr [true/false] allows_recurring
20
21
  # @attr [true/false] allows_tokenization
21
22
  # @attr [Ingenico::Connect::SDK::Domain::Product::AuthenticationIndicator] authentication_indicator
@@ -40,6 +41,8 @@ module Ingenico::Connect::SDK
40
41
 
41
42
  attr_accessor :accounts_on_file
42
43
 
44
+ attr_accessor :allows_installments
45
+
43
46
  attr_accessor :allows_recurring
44
47
 
45
48
  attr_accessor :allows_tokenization
@@ -84,6 +87,7 @@ module Ingenico::Connect::SDK
84
87
  def to_h
85
88
  hash = super
86
89
  hash['accountsOnFile'] = @accounts_on_file.collect{|val| val.to_h} unless @accounts_on_file.nil?
90
+ hash['allowsInstallments'] = @allows_installments unless @allows_installments.nil?
87
91
  hash['allowsRecurring'] = @allows_recurring unless @allows_recurring.nil?
88
92
  hash['allowsTokenization'] = @allows_tokenization unless @allows_tokenization.nil?
89
93
  hash['authenticationIndicator'] = @authentication_indicator.to_h unless @authentication_indicator.nil?
@@ -116,6 +120,9 @@ module Ingenico::Connect::SDK
116
120
  @accounts_on_file << Ingenico::Connect::SDK::Domain::Product::AccountOnFile.new_from_hash(e)
117
121
  end
118
122
  end
123
+ if hash.has_key? 'allowsInstallments'
124
+ @allows_installments = hash['allowsInstallments']
125
+ end
119
126
  if hash.has_key? 'allowsRecurring'
120
127
  @allows_recurring = hash['allowsRecurring']
121
128
  end
@@ -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
 
@@ -5,6 +5,7 @@
5
5
  require 'ingenico/connect/sdk/api_resource'
6
6
  require 'ingenico/connect/sdk/response_exception'
7
7
  require 'ingenico/connect/sdk/domain/errors/error_response'
8
+ require 'ingenico/connect/sdk/domain/product/create_payment_product_session_response'
8
9
  require 'ingenico/connect/sdk/domain/product/device_fingerprint_response'
9
10
  require 'ingenico/connect/sdk/domain/product/directory'
10
11
  require 'ingenico/connect/sdk/domain/product/get_customer_details_response'
@@ -208,6 +209,38 @@ module Ingenico::Connect::SDK
208
209
  error_object = @communicator.marshaller.unmarshal(e.body, error_type)
209
210
  raise create_exception(e.status_code, e.body, error_object, context)
210
211
  end
212
+
213
+ # Resource /!{merchantId}/products/!{paymentProductId}/sessions - {https://epayments-api.developer-ingenico.com/s2sapi/v1/en_US/ruby/products/sessions.html Create session for payment product}
214
+ # @param payment_product_id [Integer]
215
+ # @param body [Ingenico::Connect::SDK::Domain::Product::CreatePaymentProductSessionRequest]
216
+ # @param context [Ingenico::Connect::SDK::CallContext]
217
+ # @return [Ingenico::Connect::SDK::Domain::Product::CreatePaymentProductSessionResponse]
218
+ # @raise [Ingenico::Connect::SDK::ValidationException] if the request was not correct and couldn't be processed (HTTP status code 400)
219
+ # @raise [Ingenico::Connect::SDK::AuthorizationException] if the request was not allowed (HTTP status code 403)
220
+ # @raise [Ingenico::Connect::SDK::IdempotenceException] if an idempotent request caused a conflict (HTTP status code 409)
221
+ # @raise [Ingenico::Connect::SDK::ReferenceException] if an object was attempted to be referenced that doesn't exist or has been removed,
222
+ # or there was a conflict (HTTP status code 404, 409 or 410)
223
+ # @raise [Ingenico::Connect::SDK::GlobalCollectException] if something went wrong at the Ingenico ePayments platform,
224
+ # the Ingenico ePayments platform was unable to process a message from a downstream partner/acquirer,
225
+ # or the service that you're trying to reach is temporary unavailable (HTTP status code 500, 502 or 503)
226
+ # @raise [Ingenico::Connect::SDK::ApiException]if the Ingenico ePayments platform returned any other error
227
+ def sessions(payment_product_id, body, context=nil)
228
+ path_context = {
229
+ 'paymentProductId'.freeze => payment_product_id.to_s,
230
+ }
231
+ uri = instantiate_uri('/v1/{merchantId}/products/{paymentProductId}/sessions', path_context)
232
+ return @communicator.post(
233
+ uri,
234
+ client_headers,
235
+ nil,
236
+ body,
237
+ Ingenico::Connect::SDK::Domain::Product::CreatePaymentProductSessionResponse,
238
+ context)
239
+ rescue ResponseException => e
240
+ error_type = Ingenico::Connect::SDK::Domain::Errors::ErrorResponse
241
+ error_object = @communicator.marshaller.unmarshal(e.body, error_type)
242
+ raise create_exception(e.status_code, e.body, error_object, context)
243
+ end
211
244
  end
212
245
  end
213
246
  end
@@ -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.8.0'
10
+ @@SDK_VERSION = '2.13.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
@@ -1,5 +1,5 @@
1
1
  {
2
- "value": *****
2
+ "value": ****,
3
3
  "value": {
4
4
  }
5
- }
5
+ }
@@ -2,4 +2,4 @@
2
2
  "value": true,
3
3
  "value": {
4
4
  }
5
- }
5
+ }
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.8.0
4
+ version: 2.13.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: 2020-04-07 00:00:00.000000000 Z
11
+ date: 2020-07-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httpclient
@@ -100,14 +100,20 @@ dependencies:
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: '10.4'
103
+ version: '12.3'
104
+ - - ">="
105
+ - !ruby/object:Gem::Version
106
+ version: 12.3.3
104
107
  type: :development
105
108
  prerelease: false
106
109
  version_requirements: !ruby/object:Gem::Requirement
107
110
  requirements:
108
111
  - - "~>"
109
112
  - !ruby/object:Gem::Version
110
- version: '10.4'
113
+ version: '12.3'
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: 12.3.3
111
117
  description: SDK to communicate with the Ingenico ePayments platform using the Ingenico
112
118
  Connect Server API
113
119
  email:
@@ -163,6 +169,7 @@ files:
163
169
  - examples/merchant/productgroups/get_device_fingerprint_for_groups_example.rb
164
170
  - examples/merchant/productgroups/get_payment_product_group_example.rb
165
171
  - examples/merchant/productgroups/get_payment_product_groups_example.rb
172
+ - examples/merchant/products/create_payment_product_session_example.rb
166
173
  - examples/merchant/products/get_customer_details_example.rb
167
174
  - examples/merchant/products/get_device_fingerprint_example.rb
168
175
  - examples/merchant/products/get_directory_example.rb
@@ -265,6 +272,7 @@ files:
265
272
  - lib/ingenico/connect/sdk/domain/hostedcheckout/get_hosted_checkout_response.rb
266
273
  - lib/ingenico/connect/sdk/domain/hostedcheckout/hosted_checkout_specific_input.rb
267
274
  - lib/ingenico/connect/sdk/domain/hostedcheckout/mobile_payment_method_specific_input_hosted_checkout.rb
275
+ - lib/ingenico/connect/sdk/domain/hostedcheckout/mobile_payment_product302_specific_input_hosted_checkout.rb
268
276
  - lib/ingenico/connect/sdk/domain/hostedcheckout/mobile_payment_product320_specific_input_hosted_checkout.rb
269
277
  - lib/ingenico/connect/sdk/domain/hostedcheckout/payment_product_filters_hosted_checkout.rb
270
278
  - lib/ingenico/connect/sdk/domain/hostedmandatemanagement/create_hosted_mandate_management_request.rb
@@ -456,6 +464,8 @@ files:
456
464
  - lib/ingenico/connect/sdk/domain/product/account_on_file_display_hints.rb
457
465
  - lib/ingenico/connect/sdk/domain/product/authentication_indicator.rb
458
466
  - lib/ingenico/connect/sdk/domain/product/boleto_bancario_requiredness_validator.rb
467
+ - lib/ingenico/connect/sdk/domain/product/create_payment_product_session_request.rb
468
+ - lib/ingenico/connect/sdk/domain/product/create_payment_product_session_response.rb
459
469
  - lib/ingenico/connect/sdk/domain/product/device_fingerprint_request.rb
460
470
  - lib/ingenico/connect/sdk/domain/product/device_fingerprint_response.rb
461
471
  - lib/ingenico/connect/sdk/domain/product/directory.rb
@@ -466,6 +476,8 @@ files:
466
476
  - lib/ingenico/connect/sdk/domain/product/get_customer_details_response.rb
467
477
  - lib/ingenico/connect/sdk/domain/product/label_template_element.rb
468
478
  - lib/ingenico/connect/sdk/domain/product/length_validator.rb
479
+ - lib/ingenico/connect/sdk/domain/product/mobile_payment_product_session302_specific_input.rb
480
+ - lib/ingenico/connect/sdk/domain/product/mobile_payment_product_session302_specific_output.rb
469
481
  - lib/ingenico/connect/sdk/domain/product/payment_product.rb
470
482
  - lib/ingenico/connect/sdk/domain/product/payment_product302_specific_data.rb
471
483
  - lib/ingenico/connect/sdk/domain/product/payment_product320_specific_data.rb
@@ -710,8 +722,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
710
722
  - !ruby/object:Gem::Version
711
723
  version: '0'
712
724
  requirements: []
713
- rubyforge_project:
714
- rubygems_version: 2.7.6
725
+ rubygems_version: 3.0.3
715
726
  signing_key:
716
727
  specification_version: 4
717
728
  summary: SDK to communicate with the Ingenico ePayments platform using the Ingenico