mastercard_masterpass_merchant 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (83) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +24 -0
  3. data/README.md +74 -0
  4. data/lib/mastercard_masterpass_merchant.rb +182 -0
  5. data/lib/mastercard_masterpass_merchant/api/checkout_api.rb +41 -0
  6. data/lib/mastercard_masterpass_merchant/api/decryption_api.rb +40 -0
  7. data/lib/mastercard_masterpass_merchant/api/express_checkout_api.rb +42 -0
  8. data/lib/mastercard_masterpass_merchant/api/merchant_initialization_api.rb +40 -0
  9. data/lib/mastercard_masterpass_merchant/api/postback_api.rb +39 -0
  10. data/lib/mastercard_masterpass_merchant/api/precheckout_data_api.rb +42 -0
  11. data/lib/mastercard_masterpass_merchant/api/session_key_signing_api.rb +40 -0
  12. data/lib/mastercard_masterpass_merchant/api/shopping_cart_api.rb +40 -0
  13. data/lib/mastercard_masterpass_merchant/models/acceptance_option.rb +177 -0
  14. data/lib/mastercard_masterpass_merchant/models/address.rb +243 -0
  15. data/lib/mastercard_masterpass_merchant/models/address_extension_point.rb +176 -0
  16. data/lib/mastercard_masterpass_merchant/models/authentication_options.rb +265 -0
  17. data/lib/mastercard_masterpass_merchant/models/base_card.rb +221 -0
  18. data/lib/mastercard_masterpass_merchant/models/brands.rb +165 -0
  19. data/lib/mastercard_masterpass_merchant/models/card.rb +244 -0
  20. data/lib/mastercard_masterpass_merchant/models/card_extension.rb +189 -0
  21. data/lib/mastercard_masterpass_merchant/models/card_type.rb +174 -0
  22. data/lib/mastercard_masterpass_merchant/models/card_types.rb +166 -0
  23. data/lib/mastercard_masterpass_merchant/models/checkout.rb +259 -0
  24. data/lib/mastercard_masterpass_merchant/models/checkout_dsrp.rb +210 -0
  25. data/lib/mastercard_masterpass_merchant/models/checkout_extension.rb +259 -0
  26. data/lib/mastercard_masterpass_merchant/models/contact.rb +275 -0
  27. data/lib/mastercard_masterpass_merchant/models/date_of_birth.rb +199 -0
  28. data/lib/mastercard_masterpass_merchant/models/decryption_request.rb +199 -0
  29. data/lib/mastercard_masterpass_merchant/models/decryption_response.rb +165 -0
  30. data/lib/mastercard_masterpass_merchant/models/detail.rb +176 -0
  31. data/lib/mastercard_masterpass_merchant/models/details.rb +176 -0
  32. data/lib/mastercard_masterpass_merchant/models/dsrp.rb +199 -0
  33. data/lib/mastercard_masterpass_merchant/models/dsrp_extension.rb +189 -0
  34. data/lib/mastercard_masterpass_merchant/models/dsrp_options.rb +188 -0
  35. data/lib/mastercard_masterpass_merchant/models/error.rb +222 -0
  36. data/lib/mastercard_masterpass_merchant/models/errors.rb +174 -0
  37. data/lib/mastercard_masterpass_merchant/models/express_checkout_request.rb +276 -0
  38. data/lib/mastercard_masterpass_merchant/models/express_checkout_response.rb +201 -0
  39. data/lib/mastercard_masterpass_merchant/models/extension_point.rb +163 -0
  40. data/lib/mastercard_masterpass_merchant/models/installment.rb +221 -0
  41. data/lib/mastercard_masterpass_merchant/models/installment_option.rb +198 -0
  42. data/lib/mastercard_masterpass_merchant/models/installment_options.rb +166 -0
  43. data/lib/mastercard_masterpass_merchant/models/installments.rb +176 -0
  44. data/lib/mastercard_masterpass_merchant/models/issuers.rb +165 -0
  45. data/lib/mastercard_masterpass_merchant/models/merchant_initialization_extension.rb +201 -0
  46. data/lib/mastercard_masterpass_merchant/models/merchant_initialization_request.rb +199 -0
  47. data/lib/mastercard_masterpass_merchant/models/merchant_initialization_response.rb +177 -0
  48. data/lib/mastercard_masterpass_merchant/models/merchant_initialization_response_extension.rb +165 -0
  49. data/lib/mastercard_masterpass_merchant/models/merchant_transaction.rb +274 -0
  50. data/lib/mastercard_masterpass_merchant/models/merchant_transactions.rb +176 -0
  51. data/lib/mastercard_masterpass_merchant/models/option.rb +197 -0
  52. data/lib/mastercard_masterpass_merchant/models/pairing_data_type.rb +186 -0
  53. data/lib/mastercard_masterpass_merchant/models/pairing_data_types.rb +188 -0
  54. data/lib/mastercard_masterpass_merchant/models/payment_acceptance.rb +166 -0
  55. data/lib/mastercard_masterpass_merchant/models/payment_acceptance_types_extension.rb +166 -0
  56. data/lib/mastercard_masterpass_merchant/models/payment_options_extensions.rb +178 -0
  57. data/lib/mastercard_masterpass_merchant/models/precheckout_card.rb +288 -0
  58. data/lib/mastercard_masterpass_merchant/models/precheckout_cards.rb +188 -0
  59. data/lib/mastercard_masterpass_merchant/models/precheckout_data.rb +259 -0
  60. data/lib/mastercard_masterpass_merchant/models/precheckout_data_request.rb +178 -0
  61. data/lib/mastercard_masterpass_merchant/models/precheckout_data_response.rb +211 -0
  62. data/lib/mastercard_masterpass_merchant/models/precheckout_reward_program.rb +243 -0
  63. data/lib/mastercard_masterpass_merchant/models/precheckout_shipping_address.rb +298 -0
  64. data/lib/mastercard_masterpass_merchant/models/precheckout_shipping_addresses.rb +188 -0
  65. data/lib/mastercard_masterpass_merchant/models/private_data.rb +177 -0
  66. data/lib/mastercard_masterpass_merchant/models/private_datas.rb +166 -0
  67. data/lib/mastercard_masterpass_merchant/models/reward_program.rb +221 -0
  68. data/lib/mastercard_masterpass_merchant/models/reward_programs.rb +188 -0
  69. data/lib/mastercard_masterpass_merchant/models/risk_decisioning.rb +178 -0
  70. data/lib/mastercard_masterpass_merchant/models/session_key_signing_request.rb +199 -0
  71. data/lib/mastercard_masterpass_merchant/models/session_key_signing_response.rb +210 -0
  72. data/lib/mastercard_masterpass_merchant/models/shipping_address.rb +265 -0
  73. data/lib/mastercard_masterpass_merchant/models/shopping_cart.rb +210 -0
  74. data/lib/mastercard_masterpass_merchant/models/shopping_cart_item.rb +210 -0
  75. data/lib/mastercard_masterpass_merchant/models/shopping_cart_request.rb +189 -0
  76. data/lib/mastercard_masterpass_merchant/models/shopping_cart_request_extension_point.rb +165 -0
  77. data/lib/mastercard_masterpass_merchant/models/shopping_cart_response.rb +177 -0
  78. data/lib/mastercard_masterpass_merchant/models/tokenization.rb +188 -0
  79. data/lib/mastercard_masterpass_merchant/models/types.rb +174 -0
  80. data/lib/mastercard_masterpass_merchant/models/wallet.rb +177 -0
  81. data/lib/mastercard_masterpass_merchant/tracker/sdk_api_tracker.rb +57 -0
  82. data/lib/mastercard_masterpass_merchant/version.rb +3 -0
  83. metadata +240 -0
@@ -0,0 +1,188 @@
1
+ require 'date'
2
+ require 'roxml'
3
+ require_relative '../../mastercard_masterpass_merchant/models/extension_point'
4
+ require_relative '../../mastercard_masterpass_merchant/models/option'
5
+
6
+
7
+ module MastercardMasterpassMerchant
8
+ # This class contains methods require to set DSRP options for merchant initialization request during DSRP.
9
+ class DSRPOptions
10
+ include ROXML
11
+
12
+ xml_name "DSRPOptions"
13
+
14
+ # @!attribute option
15
+ # @return [Array<Option>] the DSRP option.
16
+ xml_accessor :option, :from =>"Option", :as =>[Option]
17
+
18
+ # @!attribute extension_point
19
+ # @return [ExtensionPoint] the ExtensionPoint for future enhancement.
20
+ xml_accessor :extension_point, :from =>"ExtensionPoint",:as => ExtensionPoint
21
+
22
+
23
+ # Attribute mapping from ruby-style variable name to JSON key.
24
+ def self.attribute_map
25
+ {
26
+ :option => :Option ,
27
+ :extension_point => :ExtensionPoint
28
+
29
+ }
30
+ end
31
+
32
+ def initialize(attributes = {})
33
+ return unless attributes.is_a?(Hash)
34
+
35
+ # convert string to symbol for hash key
36
+ attributes = attributes.inject({}){|memo,(k,v)| memo[k.to_sym] = v; memo}
37
+
38
+
39
+ if attributes.has_key?(:Option) || attributes.has_key?(:option)
40
+ self.option = attributes[:Option] || attributes[:option]
41
+ end
42
+
43
+ if attributes.has_key?(:ExtensionPoint) || attributes.has_key?(:extension_point)
44
+ self.extension_point = attributes[:ExtensionPoint] || attributes[:extension_point]
45
+ end
46
+
47
+ end
48
+
49
+
50
+ # Overriding setter method option
51
+ # @param value
52
+ def option=(value)
53
+ if (value.is_a?(Array))
54
+ @option = value
55
+ else
56
+ @option = [] if !@option
57
+ @option.push value
58
+ end
59
+ end
60
+
61
+
62
+ # Check equality by comparing each attribute.
63
+ def ==(o)
64
+ return true if self.equal?(o)
65
+ self.class == o.class &&
66
+ option == o.option &&
67
+ extension_point == o.extension_point
68
+ end
69
+
70
+ # @see the `==` method
71
+ def eql?(o)
72
+ self == o
73
+ end
74
+
75
+ # Calculate hash code according to all attributes.
76
+ def hash
77
+ [option, extension_point].hash
78
+ end
79
+
80
+ # build the object from hash
81
+ def build_from_hash(attributes)
82
+ return nil unless attributes.is_a?(Hash)
83
+ self.class.datatype_map.each_pair do |key, type|
84
+ if type =~ /^Array<(.*)>/i
85
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
86
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map{ |v| _deserialize($1, v) } )
87
+ else
88
+ #TODO show warning in debug mode
89
+ end
90
+ elsif !attributes[self.class.attribute_map[key]].nil?
91
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
92
+ else
93
+ # data not found in attributes(hash), not an issue as the data can be optional
94
+ end
95
+ end
96
+
97
+ self
98
+ end
99
+
100
+ def _deserialize(type, value)
101
+ case type.to_sym
102
+ when :DateTime
103
+ DateTime.parse(value)
104
+ when :Date
105
+ Date.parse(value)
106
+ when :String
107
+ value.to_s
108
+ when :Integer
109
+ value.to_i
110
+ when :Float
111
+ value.to_f
112
+ when :BOOLEAN
113
+ if value =~ /^(true|t|yes|y|1)$/i
114
+ true
115
+ else
116
+ false
117
+ end
118
+ when /\AArray<(?<inner_type>.+)>\z/
119
+ inner_type = Regexp.last_match[:inner_type]
120
+ value.map { |v| _deserialize(inner_type, v) }
121
+ when /\AHash<(?<k_type>.+), (?<v_type>.+)>\z/
122
+ k_type = Regexp.last_match[:k_type]
123
+ v_type = Regexp.last_match[:v_type]
124
+ {}.tap do |hash|
125
+ value.each do |k, v|
126
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
127
+ end
128
+ end
129
+ else # model
130
+ _model = MastercardMasterpassMerchant.const_get(type).new
131
+ _model.build_from_hash(value)
132
+ end
133
+ end
134
+
135
+ def to_s
136
+ to_hash.to_s
137
+ end
138
+
139
+ # to_body is an alias to to_body (backward compatibility))
140
+ def to_body
141
+ to_hash
142
+ end
143
+
144
+ # return the object in the form of hash
145
+ def to_hash
146
+ hash = {}
147
+ self.class.attribute_map.each_pair do |attr, param|
148
+ value = self.send(attr)
149
+ next if value.nil?
150
+ hash[param] = _to_hash(value)
151
+ end
152
+ hash
153
+ end
154
+
155
+ # Method to output non-array value in the form of hash
156
+ # For object, use to_hash. Otherwise, just return the value
157
+ def _to_hash(value)
158
+ if value.is_a?(Array)
159
+ value.compact.map{ |v| _to_hash(v) }
160
+ elsif value.is_a?(Hash)
161
+ {}.tap do |hash|
162
+ value.each { |k, v| hash[k] = _to_hash(v) }
163
+ end
164
+ elsif value.respond_to? :to_hash
165
+ value.to_hash
166
+ else
167
+ value
168
+ end
169
+ end
170
+
171
+
172
+ private
173
+ def after_parse
174
+ self.send(:remove_instance_variable, :@roxml_references) if defined? self.roxml_references
175
+ end
176
+
177
+ # Attribute datatype mapping.
178
+ def self.datatype_map
179
+ {
180
+ :option => 'Array<Option>',
181
+ :extension_point => 'ExtensionPoint'
182
+
183
+ }
184
+ end
185
+ end
186
+
187
+
188
+ end
@@ -0,0 +1,222 @@
1
+ require 'date'
2
+ require 'roxml'
3
+ require_relative '../../mastercard_masterpass_merchant/models/details'
4
+ require_relative '../../mastercard_masterpass_merchant/models/extension_point'
5
+
6
+
7
+ module MastercardMasterpassMerchant
8
+ # This class contains methods require for error handling.
9
+ class Error
10
+ include ROXML
11
+
12
+ xml_name "Error"
13
+
14
+ # @!attribute description
15
+ # @return [String] the error description.
16
+ xml_accessor :description, :from =>"Description"
17
+
18
+ # @!attribute reason_code
19
+ # @return [String] the error reason code.
20
+ xml_accessor :reason_code, :from =>"ReasonCode"
21
+
22
+ # @!attribute recoverable
23
+ # @return [BOOLEAN] the error recoverable info.
24
+ xml_accessor :recoverable, :from =>"Recoverable"
25
+
26
+ # @!attribute source
27
+ # @return [String] the source of error.
28
+ xml_accessor :source, :from =>"Source"
29
+
30
+ # @!attribute details
31
+ # @return [Details] the error details.
32
+ xml_accessor :details, :from =>"Details",:as => Details
33
+
34
+ # @!attribute extension_point
35
+ # @return [ExtensionPoint] the ExtensionPoint for future enhancement.
36
+ xml_accessor :extension_point, :from =>"ExtensionPoint",:as => ExtensionPoint
37
+
38
+
39
+ # Attribute mapping from ruby-style variable name to JSON key.
40
+ def self.attribute_map
41
+ {
42
+ :description => :Description ,
43
+ :reason_code => :ReasonCode ,
44
+ :recoverable => :Recoverable ,
45
+ :source => :Source ,
46
+ :details => :Details ,
47
+ :extension_point => :ExtensionPoint
48
+
49
+ }
50
+ end
51
+
52
+ def initialize(attributes = {})
53
+ return unless attributes.is_a?(Hash)
54
+
55
+ # convert string to symbol for hash key
56
+ attributes = attributes.inject({}){|memo,(k,v)| memo[k.to_sym] = v; memo}
57
+
58
+
59
+ if attributes.has_key?(:Description) || attributes.has_key?(:description)
60
+ self.description = attributes[:Description] || attributes[:description]
61
+ end
62
+
63
+ if attributes.has_key?(:ReasonCode) || attributes.has_key?(:reason_code)
64
+ self.reason_code = attributes[:ReasonCode] || attributes[:reason_code]
65
+ end
66
+
67
+ if attributes.has_key?(:Recoverable) || attributes.has_key?(:recoverable)
68
+ self.recoverable = attributes[:Recoverable] || attributes[:recoverable]
69
+ end
70
+
71
+ if attributes.has_key?(:Source) || attributes.has_key?(:source)
72
+ self.source = attributes[:Source] || attributes[:source]
73
+ end
74
+
75
+ if attributes.has_key?(:Details) || attributes.has_key?(:details)
76
+ self.details = attributes[:Details] || attributes[:details]
77
+ end
78
+
79
+ if attributes.has_key?(:ExtensionPoint) || attributes.has_key?(:extension_point)
80
+ self.extension_point = attributes[:ExtensionPoint] || attributes[:extension_point]
81
+ end
82
+
83
+ end
84
+
85
+
86
+
87
+
88
+ # Check equality by comparing each attribute.
89
+ def ==(o)
90
+ return true if self.equal?(o)
91
+ self.class == o.class &&
92
+ description == o.description &&
93
+ reason_code == o.reason_code &&
94
+ recoverable == o.recoverable &&
95
+ source == o.source &&
96
+ details == o.details &&
97
+ extension_point == o.extension_point
98
+ end
99
+
100
+ # @see the `==` method
101
+ def eql?(o)
102
+ self == o
103
+ end
104
+
105
+ # Calculate hash code according to all attributes.
106
+ def hash
107
+ [description, reason_code, recoverable, source, details, extension_point].hash
108
+ end
109
+
110
+ # build the object from hash
111
+ def build_from_hash(attributes)
112
+ return nil unless attributes.is_a?(Hash)
113
+ self.class.datatype_map.each_pair do |key, type|
114
+ if type =~ /^Array<(.*)>/i
115
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
116
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map{ |v| _deserialize($1, v) } )
117
+ else
118
+ #TODO show warning in debug mode
119
+ end
120
+ elsif !attributes[self.class.attribute_map[key]].nil?
121
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
122
+ else
123
+ # data not found in attributes(hash), not an issue as the data can be optional
124
+ end
125
+ end
126
+
127
+ self
128
+ end
129
+
130
+ def _deserialize(type, value)
131
+ case type.to_sym
132
+ when :DateTime
133
+ DateTime.parse(value)
134
+ when :Date
135
+ Date.parse(value)
136
+ when :String
137
+ value.to_s
138
+ when :Integer
139
+ value.to_i
140
+ when :Float
141
+ value.to_f
142
+ when :BOOLEAN
143
+ if value =~ /^(true|t|yes|y|1)$/i
144
+ true
145
+ else
146
+ false
147
+ end
148
+ when /\AArray<(?<inner_type>.+)>\z/
149
+ inner_type = Regexp.last_match[:inner_type]
150
+ value.map { |v| _deserialize(inner_type, v) }
151
+ when /\AHash<(?<k_type>.+), (?<v_type>.+)>\z/
152
+ k_type = Regexp.last_match[:k_type]
153
+ v_type = Regexp.last_match[:v_type]
154
+ {}.tap do |hash|
155
+ value.each do |k, v|
156
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
157
+ end
158
+ end
159
+ else # model
160
+ _model = MastercardMasterpassMerchant.const_get(type).new
161
+ _model.build_from_hash(value)
162
+ end
163
+ end
164
+
165
+ def to_s
166
+ to_hash.to_s
167
+ end
168
+
169
+ # to_body is an alias to to_body (backward compatibility))
170
+ def to_body
171
+ to_hash
172
+ end
173
+
174
+ # return the object in the form of hash
175
+ def to_hash
176
+ hash = {}
177
+ self.class.attribute_map.each_pair do |attr, param|
178
+ value = self.send(attr)
179
+ next if value.nil?
180
+ hash[param] = _to_hash(value)
181
+ end
182
+ hash
183
+ end
184
+
185
+ # Method to output non-array value in the form of hash
186
+ # For object, use to_hash. Otherwise, just return the value
187
+ def _to_hash(value)
188
+ if value.is_a?(Array)
189
+ value.compact.map{ |v| _to_hash(v) }
190
+ elsif value.is_a?(Hash)
191
+ {}.tap do |hash|
192
+ value.each { |k, v| hash[k] = _to_hash(v) }
193
+ end
194
+ elsif value.respond_to? :to_hash
195
+ value.to_hash
196
+ else
197
+ value
198
+ end
199
+ end
200
+
201
+
202
+ private
203
+ def after_parse
204
+ self.send(:remove_instance_variable, :@roxml_references) if defined? self.roxml_references
205
+ end
206
+
207
+ # Attribute datatype mapping.
208
+ def self.datatype_map
209
+ {
210
+ :description => 'String',
211
+ :reason_code => 'String',
212
+ :recoverable => 'BOOLEAN',
213
+ :source => 'String',
214
+ :details => 'Details',
215
+ :extension_point => 'ExtensionPoint'
216
+
217
+ }
218
+ end
219
+ end
220
+
221
+
222
+ end
@@ -0,0 +1,174 @@
1
+ require 'date'
2
+ require 'roxml'
3
+ require_relative '../../mastercard_masterpass_merchant/models/error'
4
+
5
+
6
+ module MastercardMasterpassMerchant
7
+ # This class contains methods require for error handling.
8
+ class Errors
9
+ include ROXML
10
+
11
+ xml_name "Errors"
12
+
13
+ xml_accessor :error, :from =>"Error", :as =>[Error]
14
+
15
+
16
+ # Attribute mapping from ruby-style variable name to JSON key.
17
+ def self.attribute_map
18
+ {
19
+ :error => :Error
20
+
21
+ }
22
+ end
23
+
24
+ def initialize(attributes = {})
25
+ return unless attributes.is_a?(Hash)
26
+
27
+ # convert string to symbol for hash key
28
+ attributes = attributes.inject({}){|memo,(k,v)| memo[k.to_sym] = v; memo}
29
+
30
+
31
+ if attributes.has_key?(:Error) || attributes.has_key?(:error)
32
+ self.error = attributes[:Error] || attributes[:error]
33
+ end
34
+
35
+ end
36
+
37
+
38
+ # Overriding setter method error
39
+ # @param value
40
+ def error=(value)
41
+ if (value.is_a?(Array))
42
+ @error = value
43
+ else
44
+ @error = [] if !@error
45
+ @error.push value
46
+ end
47
+ end
48
+
49
+
50
+ # Check equality by comparing each attribute.
51
+ def ==(o)
52
+ return true if self.equal?(o)
53
+ self.class == o.class &&
54
+ error == o.error
55
+ end
56
+
57
+ # @see the `==` method
58
+ def eql?(o)
59
+ self == o
60
+ end
61
+
62
+ # Calculate hash code according to all attributes.
63
+ def hash
64
+ [error].hash
65
+ end
66
+
67
+ # build the object from hash
68
+ def build_from_hash(attributes)
69
+ return nil unless attributes.is_a?(Hash)
70
+ self.class.datatype_map.each_pair do |key, type|
71
+ if type =~ /^Array<(.*)>/i
72
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
73
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map{ |v| _deserialize($1, v) } )
74
+ else
75
+ #TODO show warning in debug mode
76
+ end
77
+ elsif !attributes[self.class.attribute_map[key]].nil?
78
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
79
+ else
80
+ # data not found in attributes(hash), not an issue as the data can be optional
81
+ end
82
+ end
83
+
84
+ self
85
+ end
86
+
87
+ def _deserialize(type, value)
88
+ case type.to_sym
89
+ when :DateTime
90
+ DateTime.parse(value)
91
+ when :Date
92
+ Date.parse(value)
93
+ when :String
94
+ value.to_s
95
+ when :Integer
96
+ value.to_i
97
+ when :Float
98
+ value.to_f
99
+ when :BOOLEAN
100
+ if value =~ /^(true|t|yes|y|1)$/i
101
+ true
102
+ else
103
+ false
104
+ end
105
+ when /\AArray<(?<inner_type>.+)>\z/
106
+ inner_type = Regexp.last_match[:inner_type]
107
+ value.map { |v| _deserialize(inner_type, v) }
108
+ when /\AHash<(?<k_type>.+), (?<v_type>.+)>\z/
109
+ k_type = Regexp.last_match[:k_type]
110
+ v_type = Regexp.last_match[:v_type]
111
+ {}.tap do |hash|
112
+ value.each do |k, v|
113
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
114
+ end
115
+ end
116
+ else # model
117
+ _model = MastercardMasterpassMerchant.const_get(type).new
118
+ _model.build_from_hash(value)
119
+ end
120
+ end
121
+
122
+ def to_s
123
+ to_hash.to_s
124
+ end
125
+
126
+ # to_body is an alias to to_body (backward compatibility))
127
+ def to_body
128
+ to_hash
129
+ end
130
+
131
+ # return the object in the form of hash
132
+ def to_hash
133
+ hash = {}
134
+ self.class.attribute_map.each_pair do |attr, param|
135
+ value = self.send(attr)
136
+ next if value.nil?
137
+ hash[param] = _to_hash(value)
138
+ end
139
+ hash
140
+ end
141
+
142
+ # Method to output non-array value in the form of hash
143
+ # For object, use to_hash. Otherwise, just return the value
144
+ def _to_hash(value)
145
+ if value.is_a?(Array)
146
+ value.compact.map{ |v| _to_hash(v) }
147
+ elsif value.is_a?(Hash)
148
+ {}.tap do |hash|
149
+ value.each { |k, v| hash[k] = _to_hash(v) }
150
+ end
151
+ elsif value.respond_to? :to_hash
152
+ value.to_hash
153
+ else
154
+ value
155
+ end
156
+ end
157
+
158
+
159
+ private
160
+ def after_parse
161
+ self.send(:remove_instance_variable, :@roxml_references) if defined? self.roxml_references
162
+ end
163
+
164
+ # Attribute datatype mapping.
165
+ def self.datatype_map
166
+ {
167
+ :error => 'Array<Error>'
168
+
169
+ }
170
+ end
171
+ end
172
+
173
+
174
+ end