connect-sdk-ruby 2.8.0 → 2.13.0

Sign up to get free protection for your applications and to get access to all the features.
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