connect-sdk-ruby 2.25.0 → 2.29.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7d3544e10cd38ce540eed9db96f91d7528f199344048fdf30a1c0e2fbfac7d88
4
- data.tar.gz: 98805c926124ced5fe4237ad63d2ed40dc0e76fb16ca6ea12d510f50f809ea08
3
+ metadata.gz: cf5846113a34444077709cdd1442d0e0ce79d53aafd628759e1b263b4e6377b2
4
+ data.tar.gz: 4340e5ca7922f121f5c36317945b55f4ea85c642d1c5eb8e63cce9b3356ddb92
5
5
  SHA512:
6
- metadata.gz: 1c6d44127b3971794d6dc04d1156da56b45bc778af36e55d90eca4695b6369f660b44de56f53336ee95e15db3de85035b45b3d0e7e5ed5f77c0b1895f9856479
7
- data.tar.gz: 13727982fff96b31b113738cbbc3242703b84236ebb0bfd040e180e25311762ecdadf6f112b725384cfbf2b3b451f841103ff7a3ca92a2911ac10bb5156e096d
6
+ metadata.gz: 3f44ab2a432db832f597d63548ae2f28eb329af96fc32a571b0e1fe2b82f71ac0f5ea5b80fbfb25bd63b4baa906b4eef1b9cbae4f0545c72b14b6041bdb9429f
7
+ data.tar.gz: 5875974191b3326f5bdc3131429f31dea8379cf95738795a71074cb3512299b1916050655f62a18df57be98787906fada45b29a83d488034e8d2b16204d24fdb
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |spec|
2
2
  spec.name = 'connect-sdk-ruby'
3
- spec.version = '2.25.0'
3
+ spec.version = '2.29.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}
@@ -0,0 +1,54 @@
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/api_exception'
6
+ require 'ingenico/connect/sdk/declined_refund_exception'
7
+ require 'ingenico/connect/sdk/factory'
8
+ require 'ingenico/connect/sdk/domain/definitions/amount_of_money'
9
+ require 'ingenico/connect/sdk/domain/refund/refund_references'
10
+ require 'ingenico/connect/sdk/domain/refund/refund_request'
11
+
12
+ Definitions = Ingenico::Connect::SDK::Domain::Definitions
13
+ Refund = Ingenico::Connect::SDK::Domain::Refund
14
+
15
+ def example
16
+ get_client do |client|
17
+ amount_of_money = Definitions::AmountOfMoney.new
18
+ amount_of_money.amount = 500
19
+ amount_of_money.currency_code = 'EUR'
20
+
21
+ refund_references = Refund::RefundReferences.new
22
+ refund_references.merchant_reference = 'AcmeOrder0001'
23
+
24
+ body = Refund::RefundRequest.new
25
+ body.amount_of_money = amount_of_money
26
+ body.refund_references = refund_references
27
+
28
+ begin
29
+ response = client.merchant('merchantId').captures.refund('captureId', body)
30
+ rescue Ingenico::Connect::SDK::DeclinedRefundException => e
31
+ handle_declined_refund(e.refund_result)
32
+ rescue Ingenico::Connect::SDK::ApiException => e
33
+ handle_api_errors(e.errors)
34
+ end
35
+ end
36
+ end
37
+
38
+ def get_client
39
+ api_key_id = ENV.fetch('connect.api.apiKeyId', 'someKey')
40
+ secret_api_key = ENV.fetch('connect.api.secretApiKey', 'someSecret')
41
+ configuration_file_name = File.join(__FILE__, '..', '..', 'example_configuration.yml')
42
+ yield client = Ingenico::Connect::SDK::Factory.create_client_from_file(configuration_file_name, api_key_id, secret_api_key)
43
+ ensure
44
+ # Free networking resources when done
45
+ client.close unless client.nil?
46
+ end
47
+
48
+ def handle_declined_refund(refund_result)
49
+ # handle the result here
50
+ end
51
+
52
+ def handle_api_errors(errors)
53
+ # handle the errors here
54
+ end
@@ -0,0 +1,22 @@
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
+
7
+
8
+ def example
9
+ get_client do |client|
10
+ client.merchant('merchantId').hostedcheckouts.delete('hostedCheckoutId')
11
+ end
12
+ end
13
+
14
+ def get_client
15
+ api_key_id = ENV.fetch('connect.api.apiKeyId', 'someKey')
16
+ secret_api_key = ENV.fetch('connect.api.secretApiKey', 'someSecret')
17
+ configuration_file_name = File.join(__FILE__, '..', '..', 'example_configuration.yml')
18
+ yield client = Ingenico::Connect::SDK::Factory.create_client_from_file(configuration_file_name, api_key_id, secret_api_key)
19
+ ensure
20
+ # Free networking resources when done
21
+ client.close unless client.nil?
22
+ end
@@ -0,0 +1,22 @@
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
+
7
+
8
+ def example
9
+ get_client do |client|
10
+ response = client.merchant('merchantId').services.settlementdetails('paymentId')
11
+ end
12
+ end
13
+
14
+ def get_client
15
+ api_key_id = ENV.fetch('connect.api.apiKeyId', 'someKey')
16
+ secret_api_key = ENV.fetch('connect.api.secretApiKey', 'someSecret')
17
+ configuration_file_name = File.join(__FILE__, '..', '..', 'example_configuration.yml')
18
+ yield client = Ingenico::Connect::SDK::Factory.create_client_from_file(configuration_file_name, api_key_id, secret_api_key)
19
+ ensure
20
+ # Free networking resources when done
21
+ client.close unless client.nil?
22
+ end
@@ -9,14 +9,18 @@ module Ingenico::Connect::SDK
9
9
  module Definitions
10
10
 
11
11
  # @attr [String] cvv
12
+ # @attr [String] partial_pin
12
13
  class Card < Ingenico::Connect::SDK::Domain::Definitions::CardWithoutCvv
13
14
 
14
15
  attr_accessor :cvv
15
16
 
17
+ attr_accessor :partial_pin
18
+
16
19
  # @return (Hash)
17
20
  def to_h
18
21
  hash = super
19
22
  hash['cvv'] = @cvv unless @cvv.nil?
23
+ hash['partialPin'] = @partial_pin unless @partial_pin.nil?
20
24
  hash
21
25
  end
22
26
 
@@ -25,6 +29,9 @@ module Ingenico::Connect::SDK
25
29
  if hash.has_key? 'cvv'
26
30
  @cvv = hash['cvv']
27
31
  end
32
+ if hash.has_key? 'partialPin'
33
+ @partial_pin = hash['partialPin']
34
+ end
28
35
  end
29
36
  end
30
37
  end
@@ -5,6 +5,7 @@
5
5
  require 'ingenico/connect/sdk/domain/definitions/fraud_results'
6
6
  require 'ingenico/connect/sdk/domain/definitions/fraud_results_retail_decisions'
7
7
  require 'ingenico/connect/sdk/domain/definitions/fraugster_results'
8
+ require 'ingenico/connect/sdk/domain/definitions/microsoft_fraud_results'
8
9
 
9
10
  module Ingenico::Connect::SDK
10
11
  module Domain
@@ -13,6 +14,7 @@ module Ingenico::Connect::SDK
13
14
  # @attr [String] avs_result
14
15
  # @attr [String] cvv_result
15
16
  # @attr [Ingenico::Connect::SDK::Domain::Definitions::FraugsterResults] fraugster
17
+ # @attr [Ingenico::Connect::SDK::Domain::Definitions::MicrosoftFraudResults] microsoft_fraud_protection
16
18
  # @attr [Ingenico::Connect::SDK::Domain::Definitions::FraudResultsRetailDecisions] retail_decisions
17
19
  class CardFraudResults < Ingenico::Connect::SDK::Domain::Definitions::FraudResults
18
20
 
@@ -22,6 +24,8 @@ module Ingenico::Connect::SDK
22
24
 
23
25
  attr_accessor :fraugster
24
26
 
27
+ attr_accessor :microsoft_fraud_protection
28
+
25
29
  attr_accessor :retail_decisions
26
30
 
27
31
  # @return (Hash)
@@ -30,6 +34,7 @@ module Ingenico::Connect::SDK
30
34
  hash['avsResult'] = @avs_result unless @avs_result.nil?
31
35
  hash['cvvResult'] = @cvv_result unless @cvv_result.nil?
32
36
  hash['fraugster'] = @fraugster.to_h unless @fraugster.nil?
37
+ hash['microsoftFraudProtection'] = @microsoft_fraud_protection.to_h unless @microsoft_fraud_protection.nil?
33
38
  hash['retailDecisions'] = @retail_decisions.to_h unless @retail_decisions.nil?
34
39
  hash
35
40
  end
@@ -46,6 +51,10 @@ module Ingenico::Connect::SDK
46
51
  raise TypeError, "value '%s' is not a Hash" % [hash['fraugster']] unless hash['fraugster'].is_a? Hash
47
52
  @fraugster = Ingenico::Connect::SDK::Domain::Definitions::FraugsterResults.new_from_hash(hash['fraugster'])
48
53
  end
54
+ if hash.has_key? 'microsoftFraudProtection'
55
+ raise TypeError, "value '%s' is not a Hash" % [hash['microsoftFraudProtection']] unless hash['microsoftFraudProtection'].is_a? Hash
56
+ @microsoft_fraud_protection = Ingenico::Connect::SDK::Domain::Definitions::MicrosoftFraudResults.new_from_hash(hash['microsoftFraudProtection'])
57
+ end
49
58
  if hash.has_key? 'retailDecisions'
50
59
  raise TypeError, "value '%s' is not a Hash" % [hash['retailDecisions']] unless hash['retailDecisions'].is_a? Hash
51
60
  @retail_decisions = Ingenico::Connect::SDK::Domain::Definitions::FraudResultsRetailDecisions.new_from_hash(hash['retailDecisions'])
@@ -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 Definitions
10
+
11
+ # @attr [Integer] fraud_score
12
+ class MicrosoftFraudResults < Ingenico::Connect::SDK::DataObject
13
+
14
+ attr_accessor :fraud_score
15
+
16
+ # @return (Hash)
17
+ def to_h
18
+ hash = super
19
+ hash['fraudScore'] = @fraud_score unless @fraud_score.nil?
20
+ hash
21
+ end
22
+
23
+ def from_hash(hash)
24
+ super
25
+ if hash.has_key? 'fraudScore'
26
+ @fraud_score = hash['fraudScore']
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -5,6 +5,9 @@
5
5
  require 'ingenico/connect/sdk/domain/payment/abstract_cash_payment_method_specific_input'
6
6
  require 'ingenico/connect/sdk/domain/payment/cash_payment_product1503_specific_input'
7
7
  require 'ingenico/connect/sdk/domain/payment/cash_payment_product1504_specific_input'
8
+ require 'ingenico/connect/sdk/domain/payment/cash_payment_product1506_specific_input'
9
+ require 'ingenico/connect/sdk/domain/payment/cash_payment_product1508_specific_input'
10
+ require 'ingenico/connect/sdk/domain/payment/cash_payment_product1511_specific_input'
8
11
  require 'ingenico/connect/sdk/domain/payment/cash_payment_product1521_specific_input'
9
12
  require 'ingenico/connect/sdk/domain/payment/cash_payment_product1522_specific_input'
10
13
  require 'ingenico/connect/sdk/domain/payment/cash_payment_product1523_specific_input'
@@ -17,6 +20,9 @@ module Ingenico::Connect::SDK
17
20
 
18
21
  # @attr [Ingenico::Connect::SDK::Domain::Payment::CashPaymentProduct1503SpecificInput] payment_product1503_specific_input
19
22
  # @attr [Ingenico::Connect::SDK::Domain::Payment::CashPaymentProduct1504SpecificInput] payment_product1504_specific_input
23
+ # @attr [Ingenico::Connect::SDK::Domain::Payment::CashPaymentProduct1506SpecificInput] payment_product1506_specific_input
24
+ # @attr [Ingenico::Connect::SDK::Domain::Payment::CashPaymentProduct1508SpecificInput] payment_product1508_specific_input
25
+ # @attr [Ingenico::Connect::SDK::Domain::Payment::CashPaymentProduct1511SpecificInput] payment_product1511_specific_input
20
26
  # @attr [Ingenico::Connect::SDK::Domain::Payment::CashPaymentProduct1521SpecificInput] payment_product1521_specific_input
21
27
  # @attr [Ingenico::Connect::SDK::Domain::Payment::CashPaymentProduct1522SpecificInput] payment_product1522_specific_input
22
28
  # @attr [Ingenico::Connect::SDK::Domain::Payment::CashPaymentProduct1523SpecificInput] payment_product1523_specific_input
@@ -30,6 +36,12 @@ module Ingenico::Connect::SDK
30
36
 
31
37
  attr_accessor :payment_product1504_specific_input
32
38
 
39
+ attr_accessor :payment_product1506_specific_input
40
+
41
+ attr_accessor :payment_product1508_specific_input
42
+
43
+ attr_accessor :payment_product1511_specific_input
44
+
33
45
  attr_accessor :payment_product1521_specific_input
34
46
 
35
47
  attr_accessor :payment_product1522_specific_input
@@ -45,6 +57,9 @@ module Ingenico::Connect::SDK
45
57
  hash = super
46
58
  hash['paymentProduct1503SpecificInput'] = @payment_product1503_specific_input.to_h unless @payment_product1503_specific_input.nil?
47
59
  hash['paymentProduct1504SpecificInput'] = @payment_product1504_specific_input.to_h unless @payment_product1504_specific_input.nil?
60
+ hash['paymentProduct1506SpecificInput'] = @payment_product1506_specific_input.to_h unless @payment_product1506_specific_input.nil?
61
+ hash['paymentProduct1508SpecificInput'] = @payment_product1508_specific_input.to_h unless @payment_product1508_specific_input.nil?
62
+ hash['paymentProduct1511SpecificInput'] = @payment_product1511_specific_input.to_h unless @payment_product1511_specific_input.nil?
48
63
  hash['paymentProduct1521SpecificInput'] = @payment_product1521_specific_input.to_h unless @payment_product1521_specific_input.nil?
49
64
  hash['paymentProduct1522SpecificInput'] = @payment_product1522_specific_input.to_h unless @payment_product1522_specific_input.nil?
50
65
  hash['paymentProduct1523SpecificInput'] = @payment_product1523_specific_input.to_h unless @payment_product1523_specific_input.nil?
@@ -63,6 +78,18 @@ module Ingenico::Connect::SDK
63
78
  raise TypeError, "value '%s' is not a Hash" % [hash['paymentProduct1504SpecificInput']] unless hash['paymentProduct1504SpecificInput'].is_a? Hash
64
79
  @payment_product1504_specific_input = Ingenico::Connect::SDK::Domain::Payment::CashPaymentProduct1504SpecificInput.new_from_hash(hash['paymentProduct1504SpecificInput'])
65
80
  end
81
+ if hash.has_key? 'paymentProduct1506SpecificInput'
82
+ raise TypeError, "value '%s' is not a Hash" % [hash['paymentProduct1506SpecificInput']] unless hash['paymentProduct1506SpecificInput'].is_a? Hash
83
+ @payment_product1506_specific_input = Ingenico::Connect::SDK::Domain::Payment::CashPaymentProduct1506SpecificInput.new_from_hash(hash['paymentProduct1506SpecificInput'])
84
+ end
85
+ if hash.has_key? 'paymentProduct1508SpecificInput'
86
+ raise TypeError, "value '%s' is not a Hash" % [hash['paymentProduct1508SpecificInput']] unless hash['paymentProduct1508SpecificInput'].is_a? Hash
87
+ @payment_product1508_specific_input = Ingenico::Connect::SDK::Domain::Payment::CashPaymentProduct1508SpecificInput.new_from_hash(hash['paymentProduct1508SpecificInput'])
88
+ end
89
+ if hash.has_key? 'paymentProduct1511SpecificInput'
90
+ raise TypeError, "value '%s' is not a Hash" % [hash['paymentProduct1511SpecificInput']] unless hash['paymentProduct1511SpecificInput'].is_a? Hash
91
+ @payment_product1511_specific_input = Ingenico::Connect::SDK::Domain::Payment::CashPaymentProduct1511SpecificInput.new_from_hash(hash['paymentProduct1511SpecificInput'])
92
+ end
66
93
  if hash.has_key? 'paymentProduct1521SpecificInput'
67
94
  raise TypeError, "value '%s' is not a Hash" % [hash['paymentProduct1521SpecificInput']] unless hash['paymentProduct1521SpecificInput'].is_a? Hash
68
95
  @payment_product1521_specific_input = Ingenico::Connect::SDK::Domain::Payment::CashPaymentProduct1521SpecificInput.new_from_hash(hash['paymentProduct1521SpecificInput'])
@@ -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 Payment
10
+
11
+ # @attr [String] return_url
12
+ class CashPaymentProduct1506SpecificInput < Ingenico::Connect::SDK::DataObject
13
+
14
+ attr_accessor :return_url
15
+
16
+ # @return (Hash)
17
+ def to_h
18
+ hash = super
19
+ hash['returnUrl'] = @return_url unless @return_url.nil?
20
+ hash
21
+ end
22
+
23
+ def from_hash(hash)
24
+ super
25
+ if hash.has_key? 'returnUrl'
26
+ @return_url = hash['returnUrl']
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
32
+ 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 Payment
10
+
11
+ # @attr [String] return_url
12
+ class CashPaymentProduct1508SpecificInput < Ingenico::Connect::SDK::DataObject
13
+
14
+ attr_accessor :return_url
15
+
16
+ # @return (Hash)
17
+ def to_h
18
+ hash = super
19
+ hash['returnUrl'] = @return_url unless @return_url.nil?
20
+ hash
21
+ end
22
+
23
+ def from_hash(hash)
24
+ super
25
+ if hash.has_key? 'returnUrl'
26
+ @return_url = hash['returnUrl']
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
32
+ 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 Payment
10
+
11
+ # @attr [String] return_url
12
+ class CashPaymentProduct1511SpecificInput < Ingenico::Connect::SDK::DataObject
13
+
14
+ attr_accessor :return_url
15
+
16
+ # @return (Hash)
17
+ def to_h
18
+ hash = super
19
+ hash['returnUrl'] = @return_url unless @return_url.nil?
20
+ hash
21
+ end
22
+
23
+ def from_hash(hash)
24
+ super
25
+ if hash.has_key? 'returnUrl'
26
+ @return_url = hash['returnUrl']
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -15,6 +15,7 @@ module Ingenico::Connect::SDK
15
15
  # @attr [String] product_code
16
16
  # @attr [String] product_name
17
17
  # @attr [Integer] product_price
18
+ # @attr [String] product_sku
18
19
  # @attr [String] product_type
19
20
  # @attr [Integer] quantity
20
21
  # @attr [Integer] tax_amount
@@ -35,6 +36,8 @@ module Ingenico::Connect::SDK
35
36
 
36
37
  attr_accessor :product_price
37
38
 
39
+ attr_accessor :product_sku
40
+
38
41
  attr_accessor :product_type
39
42
 
40
43
  attr_accessor :quantity
@@ -53,6 +56,7 @@ module Ingenico::Connect::SDK
53
56
  hash['productCode'] = @product_code unless @product_code.nil?
54
57
  hash['productName'] = @product_name unless @product_name.nil?
55
58
  hash['productPrice'] = @product_price unless @product_price.nil?
59
+ hash['productSku'] = @product_sku unless @product_sku.nil?
56
60
  hash['productType'] = @product_type unless @product_type.nil?
57
61
  hash['quantity'] = @quantity unless @quantity.nil?
58
62
  hash['taxAmount'] = @tax_amount unless @tax_amount.nil?
@@ -83,6 +87,9 @@ module Ingenico::Connect::SDK
83
87
  if hash.has_key? 'productPrice'
84
88
  @product_price = hash['productPrice']
85
89
  end
90
+ if hash.has_key? 'productSku'
91
+ @product_sku = hash['productSku']
92
+ end
86
93
  if hash.has_key? 'productType'
87
94
  @product_type = hash['productType']
88
95
  end
@@ -0,0 +1,55 @@
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/definitions/amount_of_money'
7
+
8
+ module Ingenico::Connect::SDK
9
+ module Domain
10
+ module Services
11
+
12
+ # @attr [String] acquirer_reference_number
13
+ # @attr [Ingenico::Connect::SDK::Domain::Definitions::AmountOfMoney] amount_of_money
14
+ # @attr [String] payment_id
15
+ # @attr [String] retrieval_reference_number
16
+ class SettlementDetails < Ingenico::Connect::SDK::DataObject
17
+
18
+ attr_accessor :acquirer_reference_number
19
+
20
+ attr_accessor :amount_of_money
21
+
22
+ attr_accessor :payment_id
23
+
24
+ attr_accessor :retrieval_reference_number
25
+
26
+ # @return (Hash)
27
+ def to_h
28
+ hash = super
29
+ hash['acquirerReferenceNumber'] = @acquirer_reference_number unless @acquirer_reference_number.nil?
30
+ hash['amountOfMoney'] = @amount_of_money.to_h unless @amount_of_money.nil?
31
+ hash['paymentId'] = @payment_id unless @payment_id.nil?
32
+ hash['retrievalReferenceNumber'] = @retrieval_reference_number unless @retrieval_reference_number.nil?
33
+ hash
34
+ end
35
+
36
+ def from_hash(hash)
37
+ super
38
+ if hash.has_key? 'acquirerReferenceNumber'
39
+ @acquirer_reference_number = hash['acquirerReferenceNumber']
40
+ end
41
+ if hash.has_key? 'amountOfMoney'
42
+ raise TypeError, "value '%s' is not a Hash" % [hash['amountOfMoney']] unless hash['amountOfMoney'].is_a? Hash
43
+ @amount_of_money = Ingenico::Connect::SDK::Domain::Definitions::AmountOfMoney.new_from_hash(hash['amountOfMoney'])
44
+ end
45
+ if hash.has_key? 'paymentId'
46
+ @payment_id = hash['paymentId']
47
+ end
48
+ if hash.has_key? 'retrievalReferenceNumber'
49
+ @retrieval_reference_number = hash['retrievalReferenceNumber']
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
@@ -6,6 +6,8 @@ require 'ingenico/connect/sdk/api_resource'
6
6
  require 'ingenico/connect/sdk/response_exception'
7
7
  require 'ingenico/connect/sdk/domain/capture/capture_response'
8
8
  require 'ingenico/connect/sdk/domain/errors/error_response'
9
+ require 'ingenico/connect/sdk/domain/refund/refund_error_response'
10
+ require 'ingenico/connect/sdk/domain/refund/refund_response'
9
11
 
10
12
  module Ingenico::Connect::SDK
11
13
  module Merchant
@@ -49,6 +51,39 @@ module Ingenico::Connect::SDK
49
51
  error_object = @communicator.marshaller.unmarshal(e.body, error_type)
50
52
  raise create_exception(e.status_code, e.body, error_object, context)
51
53
  end
54
+
55
+ # Resource /!{merchantId}/captures/!{captureId}/refund - {https://epayments-api.developer-ingenico.com/s2sapi/v1/en_US/ruby/captures/refund.html Create Refund}
56
+ # @param capture_id [String]
57
+ # @param body [Ingenico::Connect::SDK::Domain::Refund::RefundRequest]
58
+ # @param context [Ingenico::Connect::SDK::CallContext]
59
+ # @return [Ingenico::Connect::SDK::Domain::Refund::RefundResponse]
60
+ # @raise [Ingenico::Connect::SDK::DeclinedRefundException] if the Ingenico ePayments platform declined / rejected the refund. The refund result will be available from the exception.
61
+ # @raise [Ingenico::Connect::SDK::ValidationException] if the request was not correct and couldn't be processed (HTTP status code 400)
62
+ # @raise [Ingenico::Connect::SDK::AuthorizationException] if the request was not allowed (HTTP status code 403)
63
+ # @raise [Ingenico::Connect::SDK::IdempotenceException] if an idempotent request caused a conflict (HTTP status code 409)
64
+ # @raise [Ingenico::Connect::SDK::ReferenceException] if an object was attempted to be referenced that doesn't exist or has been removed,
65
+ # or there was a conflict (HTTP status code 404, 409 or 410)
66
+ # @raise [Ingenico::Connect::SDK::GlobalCollectException] if something went wrong at the Ingenico ePayments platform,
67
+ # the Ingenico ePayments platform was unable to process a message from a downstream partner/acquirer,
68
+ # or the service that you're trying to reach is temporary unavailable (HTTP status code 500, 502 or 503)
69
+ # @raise [Ingenico::Connect::SDK::ApiException]if the Ingenico ePayments platform returned any other error
70
+ def refund(capture_id, body, context=nil)
71
+ path_context = {
72
+ 'captureId'.freeze => capture_id,
73
+ }
74
+ uri = instantiate_uri('/v1/{merchantId}/captures/{captureId}/refund', path_context)
75
+ return @communicator.post(
76
+ uri,
77
+ client_headers,
78
+ nil,
79
+ body,
80
+ Ingenico::Connect::SDK::Domain::Refund::RefundResponse,
81
+ context)
82
+ rescue ResponseException => e
83
+ error_type = Ingenico::Connect::SDK::Domain::Refund::RefundErrorResponse
84
+ error_object = @communicator.marshaller.unmarshal(e.body, error_type)
85
+ raise create_exception(e.status_code, e.body, error_object, context)
86
+ end
52
87
  end
53
88
  end
54
89
  end
@@ -78,6 +78,35 @@ module Ingenico::Connect::SDK
78
78
  error_object = @communicator.marshaller.unmarshal(e.body, error_type)
79
79
  raise create_exception(e.status_code, e.body, error_object, context)
80
80
  end
81
+
82
+ # Resource /!{merchantId}/hostedcheckouts/!{hostedCheckoutId} - {https://epayments-api.developer-ingenico.com/s2sapi/v1/en_US/ruby/hostedcheckouts/delete.html Delete hosted checkout}
83
+ # @param hosted_checkout_id [String]
84
+ # @param context [Ingenico::Connect::SDK::CallContext]
85
+ # @raise [Ingenico::Connect::SDK::ValidationException] if the request was not correct and couldn't be processed (HTTP status code 400)
86
+ # @raise [Ingenico::Connect::SDK::AuthorizationException] if the request was not allowed (HTTP status code 403)
87
+ # @raise [Ingenico::Connect::SDK::IdempotenceException] if an idempotent request caused a conflict (HTTP status code 409)
88
+ # @raise [Ingenico::Connect::SDK::ReferenceException] if an object was attempted to be referenced that doesn't exist or has been removed,
89
+ # or there was a conflict (HTTP status code 404, 409 or 410)
90
+ # @raise [Ingenico::Connect::SDK::GlobalCollectException] if something went wrong at the Ingenico ePayments platform,
91
+ # the Ingenico ePayments platform was unable to process a message from a downstream partner/acquirer,
92
+ # or the service that you're trying to reach is temporary unavailable (HTTP status code 500, 502 or 503)
93
+ # @raise [Ingenico::Connect::SDK::ApiException]if the Ingenico ePayments platform returned any other error
94
+ def delete(hosted_checkout_id, context=nil)
95
+ path_context = {
96
+ 'hostedCheckoutId'.freeze => hosted_checkout_id,
97
+ }
98
+ uri = instantiate_uri('/v1/{merchantId}/hostedcheckouts/{hostedCheckoutId}', path_context)
99
+ return @communicator.delete(
100
+ uri,
101
+ client_headers,
102
+ nil,
103
+ nil,
104
+ context)
105
+ rescue ResponseException => e
106
+ error_type = Ingenico::Connect::SDK::Domain::Errors::ErrorResponse
107
+ error_object = @communicator.marshaller.unmarshal(e.body, error_type)
108
+ raise create_exception(e.status_code, e.body, error_object, context)
109
+ end
81
110
  end
82
111
  end
83
112
  end
@@ -9,6 +9,7 @@ require 'ingenico/connect/sdk/domain/services/bank_details_response'
9
9
  require 'ingenico/connect/sdk/domain/services/convert_amount'
10
10
  require 'ingenico/connect/sdk/domain/services/get_iin_details_response'
11
11
  require 'ingenico/connect/sdk/domain/services/get_privacy_policy_response'
12
+ require 'ingenico/connect/sdk/domain/services/settlement_details'
12
13
  require 'ingenico/connect/sdk/domain/services/test_connection'
13
14
 
14
15
  module Ingenico::Connect::SDK
@@ -159,6 +160,36 @@ module Ingenico::Connect::SDK
159
160
  error_object = @communicator.marshaller.unmarshal(e.body, error_type)
160
161
  raise create_exception(e.status_code, e.body, error_object, context)
161
162
  end
163
+
164
+ # Resource /!{merchantId}/services/settlementdetails/!{paymentId} - {https://epayments-api.developer-ingenico.com/s2sapi/v1/en_US/ruby/services/settlementdetails.html Get Settlement details}
165
+ # @param payment_id [String]
166
+ # @param context [Ingenico::Connect::SDK::CallContext]
167
+ # @return [Ingenico::Connect::SDK::Domain::Services::SettlementDetails]
168
+ # @raise [Ingenico::Connect::SDK::ValidationException] if the request was not correct and couldn't be processed (HTTP status code 400)
169
+ # @raise [Ingenico::Connect::SDK::AuthorizationException] if the request was not allowed (HTTP status code 403)
170
+ # @raise [Ingenico::Connect::SDK::IdempotenceException] if an idempotent request caused a conflict (HTTP status code 409)
171
+ # @raise [Ingenico::Connect::SDK::ReferenceException] if an object was attempted to be referenced that doesn't exist or has been removed,
172
+ # or there was a conflict (HTTP status code 404, 409 or 410)
173
+ # @raise [Ingenico::Connect::SDK::GlobalCollectException] if something went wrong at the Ingenico ePayments platform,
174
+ # the Ingenico ePayments platform was unable to process a message from a downstream partner/acquirer,
175
+ # or the service that you're trying to reach is temporary unavailable (HTTP status code 500, 502 or 503)
176
+ # @raise [Ingenico::Connect::SDK::ApiException]if the Ingenico ePayments platform returned any other error
177
+ def settlementdetails(payment_id, context=nil)
178
+ path_context = {
179
+ 'paymentId'.freeze => payment_id,
180
+ }
181
+ uri = instantiate_uri('/v1/{merchantId}/services/settlementdetails/{paymentId}', path_context)
182
+ return @communicator.get(
183
+ uri,
184
+ client_headers,
185
+ nil,
186
+ Ingenico::Connect::SDK::Domain::Services::SettlementDetails,
187
+ context)
188
+ rescue ResponseException => e
189
+ error_type = Ingenico::Connect::SDK::Domain::Errors::ErrorResponse
190
+ error_object = @communicator.marshaller.unmarshal(e.body, error_type)
191
+ raise create_exception(e.status_code, e.body, error_object, context)
192
+ end
162
193
  end
163
194
  end
164
195
  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.25.0'
10
+ @@SDK_VERSION = '2.29.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
@@ -10,6 +10,7 @@ require 'ingenico/connect/sdk/domain/payment/order'
10
10
  require 'ingenico/connect/sdk/domain/payment/redirect_payment_product809_specific_input'
11
11
  require 'ingenico/connect/sdk/domain/payment/redirect_payment_method_specific_input'
12
12
  require 'ingenico/connect/sdk/call_context'
13
+ require 'ingenico/connect/sdk/declined_payment_exception'
13
14
 
14
15
  describe 'Idempotence with the server' do
15
16
 
@@ -41,17 +42,31 @@ describe 'Idempotence with the server' do
41
42
  context = Ingenico::Connect::SDK::CallContext.new(idempotence_key)
42
43
 
43
44
  Integration.init_client(false) do |client|
44
- response = client.merchant(Integration::MERCHANT_ID).payments.create(body, context)
45
- payment_id = response.payment.id
45
+ def do_create_payment(client, body, context)
46
+ # For this test it doesn't matter if the response is successful or declined,
47
+ # as long as idempotence is handled correctly
48
+ begin
49
+ client.merchant(Integration::MERCHANT_ID).payments.create(body, context)
50
+ rescue Ingenico::Connect::SDK::DeclinedPaymentException => ex
51
+ ex.payment_result
52
+ end
53
+ end
54
+
55
+ result = do_create_payment(client, body, context)
56
+ payment_id = result.payment.id
57
+ status = result.payment.status
46
58
 
47
59
  expect(payment_id).to_not be_nil
60
+ expect(status).to_not be_nil
48
61
  expect(context.idempotence_key).to eq(idempotence_key)
49
62
  expect(context.idempotence_request_timestamp).to be_nil
50
63
 
51
- response_2 = client.merchant(Integration::MERCHANT_ID).payments.create(body, context)
52
- payment_id2 = response_2.payment.id
64
+ result_2 = do_create_payment(client, body, context)
65
+ payment_id2 = result_2.payment.id
66
+ status2 = result_2.payment.status
53
67
 
54
- expect(payment_id).to eq(payment_id2)
68
+ expect(payment_id2).to eq(payment_id)
69
+ expect(status2).to eq(status)
55
70
  expect(context.idempotence_key).to eq(idempotence_key)
56
71
  expect(context.idempotence_request_timestamp).to_not be_nil
57
72
  end
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.25.0
4
+ version: 2.29.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: 2021-10-07 00:00:00.000000000 Z
11
+ date: 2022-01-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httpclient
@@ -127,6 +127,7 @@ files:
127
127
  - README.md
128
128
  - Rakefile
129
129
  - connect-sdk-ruby.gemspec
130
+ - examples/merchant/captures/create_refund_capture_example.rb
130
131
  - examples/merchant/captures/get_capture_example.rb
131
132
  - examples/merchant/disputes/cancel_dispute_example.rb
132
133
  - examples/merchant/disputes/get_dispute_example.rb
@@ -135,6 +136,7 @@ files:
135
136
  - examples/merchant/example_configuration.yml
136
137
  - examples/merchant/files/get_file_example.rb
137
138
  - examples/merchant/hostedcheckouts/create_hosted_checkout_example.rb
139
+ - examples/merchant/hostedcheckouts/delete_hosted_checkout_example.rb
138
140
  - examples/merchant/hostedcheckouts/get_hosted_checkout_example.rb
139
141
  - examples/merchant/hostedmandatemanagements/create_hosted_mandate_management_example.rb
140
142
  - examples/merchant/hostedmandatemanagements/get_hosted_mandate_management_example.rb
@@ -187,6 +189,7 @@ files:
187
189
  - examples/merchant/services/convert_amount_example.rb
188
190
  - examples/merchant/services/convert_bank_account_example.rb
189
191
  - examples/merchant/services/get_privacy_policy_example.rb
192
+ - examples/merchant/services/get_settlement_details_example.rb
190
193
  - examples/merchant/services/iin_details_example.rb
191
194
  - examples/merchant/services/test_connection_example.rb
192
195
  - examples/merchant/sessions/create_session_example.rb
@@ -249,6 +252,7 @@ files:
249
252
  - lib/ingenico/connect/sdk/domain/definitions/lodging_charge.rb
250
253
  - lib/ingenico/connect/sdk/domain/definitions/lodging_data.rb
251
254
  - lib/ingenico/connect/sdk/domain/definitions/lodging_room.rb
255
+ - lib/ingenico/connect/sdk/domain/definitions/microsoft_fraud_results.rb
252
256
  - lib/ingenico/connect/sdk/domain/definitions/order_status_output.rb
253
257
  - lib/ingenico/connect/sdk/domain/definitions/payment_product_filter.rb
254
258
  - lib/ingenico/connect/sdk/domain/definitions/personal_name_base.rb
@@ -336,6 +340,9 @@ files:
336
340
  - lib/ingenico/connect/sdk/domain/payment/cash_payment_method_specific_output.rb
337
341
  - lib/ingenico/connect/sdk/domain/payment/cash_payment_product1503_specific_input.rb
338
342
  - lib/ingenico/connect/sdk/domain/payment/cash_payment_product1504_specific_input.rb
343
+ - lib/ingenico/connect/sdk/domain/payment/cash_payment_product1506_specific_input.rb
344
+ - lib/ingenico/connect/sdk/domain/payment/cash_payment_product1508_specific_input.rb
345
+ - lib/ingenico/connect/sdk/domain/payment/cash_payment_product1511_specific_input.rb
339
346
  - lib/ingenico/connect/sdk/domain/payment/cash_payment_product1521_specific_input.rb
340
347
  - lib/ingenico/connect/sdk/domain/payment/cash_payment_product1522_specific_input.rb
341
348
  - lib/ingenico/connect/sdk/domain/payment/cash_payment_product1523_specific_input.rb
@@ -545,6 +552,7 @@ files:
545
552
  - lib/ingenico/connect/sdk/domain/services/get_privacy_policy_response.rb
546
553
  - lib/ingenico/connect/sdk/domain/services/iin_detail.rb
547
554
  - lib/ingenico/connect/sdk/domain/services/payment_context.rb
555
+ - lib/ingenico/connect/sdk/domain/services/settlement_details.rb
548
556
  - lib/ingenico/connect/sdk/domain/services/swift.rb
549
557
  - lib/ingenico/connect/sdk/domain/services/test_connection.rb
550
558
  - lib/ingenico/connect/sdk/domain/sessions/payment_product_filters_client_session.rb