mastercard_merchant_onboarding 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +24 -0
  3. data/README.md +56 -0
  4. data/lib/mastercard_merchant_onboarding.rb +58 -0
  5. data/lib/mastercard_merchant_onboarding/api/single_merchant_upload_api.rb +42 -0
  6. data/lib/mastercard_merchant_onboarding/api/single_merchant_validate_api.rb +42 -0
  7. data/lib/mastercard_merchant_onboarding/models/acquirer.rb +225 -0
  8. data/lib/mastercard_merchant_onboarding/models/address.rb +247 -0
  9. data/lib/mastercard_merchant_onboarding/models/auth_option.rb +210 -0
  10. data/lib/mastercard_merchant_onboarding/models/checkout_brand.rb +247 -0
  11. data/lib/mastercard_merchant_onboarding/models/emails.rb +169 -0
  12. data/lib/mastercard_merchant_onboarding/models/extension_point.rb +167 -0
  13. data/lib/mastercard_merchant_onboarding/models/merchant.rb +309 -0
  14. data/lib/mastercard_merchant_onboarding/models/merchant_acquirer.rb +258 -0
  15. data/lib/mastercard_merchant_onboarding/models/merchant_acquirer_brand.rb +211 -0
  16. data/lib/mastercard_merchant_onboarding/models/merchant_download.rb +215 -0
  17. data/lib/mastercard_merchant_onboarding/models/merchant_response_record.rb +236 -0
  18. data/lib/mastercard_merchant_onboarding/models/merchant_upload.rb +182 -0
  19. data/lib/mastercard_merchant_onboarding/models/phone.rb +192 -0
  20. data/lib/mastercard_merchant_onboarding/models/profile.rb +273 -0
  21. data/lib/mastercard_merchant_onboarding/models/project_key_type.rb +180 -0
  22. data/lib/mastercard_merchant_onboarding/models/reward_program.rb +203 -0
  23. data/lib/mastercard_merchant_onboarding/models/summary.rb +259 -0
  24. data/lib/mastercard_merchant_onboarding/models/validate_file_response.rb +191 -0
  25. data/lib/mastercard_merchant_onboarding/models/validated_merchant.rb +202 -0
  26. data/lib/mastercard_merchant_onboarding/tracker/sdk_api_tracker.rb +57 -0
  27. data/lib/mastercard_merchant_onboarding/version.rb +3 -0
  28. metadata +186 -0
@@ -0,0 +1,211 @@
1
+ require 'date'
2
+ require 'roxml'
3
+ require_relative '../../mastercard_merchant_onboarding/models/extension_point'
4
+
5
+
6
+ module MastercardMerchantOnboarding
7
+ # This class contains the merchant's acquirer brand details.
8
+ class MerchantAcquirerBrand
9
+ include ROXML
10
+
11
+ xml_name "MerchantAcquirerBrand"
12
+
13
+ # @!attribute card_brand
14
+ # @return [String] the merchant's acquirer card brand. For example, for Mastercard, use MASTER.
15
+ xml_accessor :card_brand, :from =>"CardBrand"
16
+
17
+ # @!attribute currency
18
+ # @return [Array<String>] the currency code. ISO 4217 standard 3-letter currency code. If this field is left blank, then all currency codes will be enabled.
19
+ xml_accessor :currency, :from =>"Currency", :as =>[]
20
+
21
+ # @!attribute extension_point
22
+ # @return [ExtensionPoint] the extension point for future enhancement.
23
+ xml_accessor :extension_point, :from =>"ExtensionPoint",:as => ExtensionPoint
24
+
25
+
26
+ # Attribute mapping from ruby-style variable name to JSON key.
27
+ def self.attribute_map
28
+ {
29
+ :card_brand => :CardBrand ,
30
+ :currency => :Currency ,
31
+ :extension_point => :ExtensionPoint
32
+
33
+ }
34
+ end
35
+
36
+ def initialize(attributes = {})
37
+ return unless attributes.is_a?(Hash)
38
+
39
+ # convert string to symbol for hash key
40
+ attributes = attributes.inject({}){|memo,(k,v)| memo[k.to_sym] = v; memo}
41
+
42
+
43
+ if attributes.has_key?(:card_brand)
44
+ self.card_brand = attributes[:card_brand]
45
+ end
46
+
47
+ if attributes.has_key?(:currency)
48
+ self.currency = attributes[:currency]
49
+ end
50
+
51
+ if attributes.has_key?(:extension_point)
52
+ self.extension_point = attributes[:extension_point]
53
+ end
54
+
55
+ end
56
+
57
+
58
+ # Overriding setter method currency
59
+ # @param value
60
+ def currency=(value)
61
+ if (value.is_a?(Array))
62
+ @currency = value
63
+ else
64
+ @currency = [] if !@currency
65
+ @currency.push value
66
+ end
67
+ end
68
+
69
+
70
+ # Custom attribute writer method checking allowed values (enum).
71
+ def card_brand=(card_brand)
72
+ allowed_values = ["MASTER_CARD", "VISA", "AMERICAN_EXPRESS", "DISCOVER", "JCB", "MAESTRO", "DINERS"]
73
+ if card_brand && !allowed_values.include?(card_brand)
74
+ fail "invalid value for 'card_brand', must be one of #{allowed_values}"
75
+ end
76
+ @card_brand = card_brand
77
+ end
78
+
79
+ # Check equality by comparing each attribute.
80
+ def ==(o)
81
+ return true if self.equal?(o)
82
+ self.class == o.class &&
83
+ card_brand == o.card_brand &&
84
+ currency == o.currency &&
85
+ extension_point == o.extension_point
86
+ end
87
+
88
+ # @see the `==` method
89
+ def eql?(o)
90
+ self == o
91
+ end
92
+
93
+ # Calculate hash code according to all attributes.
94
+ def hash
95
+ [card_brand, currency, extension_point].hash
96
+ end
97
+
98
+ # build the object from hash
99
+ def build_from_hash(attributes)
100
+ return nil unless attributes.is_a?(Hash)
101
+ self.class.datatype_map.each_pair do |key, type|
102
+ if type =~ /^Array<(.*)>/i
103
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
104
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map{ |v| _deserialize($1, v) } )
105
+ else
106
+ #TODO show warning in debug mode
107
+ end
108
+ elsif !attributes[self.class.attribute_map[key]].nil?
109
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
110
+ else
111
+ # data not found in attributes(hash), not an issue as the data can be optional
112
+ end
113
+ end
114
+
115
+ self
116
+ end
117
+
118
+ def _deserialize(type, value)
119
+ case type.to_sym
120
+ when :DateTime
121
+ DateTime.parse(value)
122
+ when :Date
123
+ Date.parse(value)
124
+ when :Object
125
+ value
126
+ when :String
127
+ value.to_s
128
+ when :Integer
129
+ value.to_i
130
+ when :Float
131
+ value.to_f
132
+ when :BOOLEAN
133
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
134
+ true
135
+ else
136
+ false
137
+ end
138
+ when /\AArray<(?<inner_type>.+)>\z/
139
+ inner_type = Regexp.last_match[:inner_type]
140
+ value.map { |v| _deserialize(inner_type, v) }
141
+ when /\AHash<(?<k_type>.+), (?<v_type>.+)>\z/
142
+ k_type = Regexp.last_match[:k_type]
143
+ v_type = Regexp.last_match[:v_type]
144
+ {}.tap do |hash|
145
+ value.each do |k, v|
146
+ hash[_deserialize(k_type, k).to_sym] = _deserialize(v_type, v)
147
+ end
148
+ end
149
+ else # model
150
+ _model = MastercardMerchantOnboarding.const_get(type).new
151
+ _model.build_from_hash(value)
152
+ end
153
+ end
154
+
155
+ def to_s
156
+ to_hash.to_s
157
+ end
158
+
159
+ # to_body is an alias to to_body (backward compatibility))
160
+ def to_body
161
+ to_hash
162
+ end
163
+
164
+ # return the object in the form of hash
165
+ def to_hash(include_root = false)
166
+ attributes_hash = {}
167
+ hash = {}
168
+ self.class.attribute_map.each_pair do |attr, param|
169
+ value = self.send(attr)
170
+ next if value.nil?
171
+ hash[param] = _to_hash(value)
172
+ end
173
+ attributes_hash = include_root ? { "MerchantAcquirerBrand" => hash } : hash
174
+ return attributes_hash
175
+ end
176
+
177
+ # Method to output non-array value in the form of hash
178
+ # For object, use to_hash. Otherwise, just return the value
179
+ def _to_hash(value)
180
+ if value.is_a?(Array)
181
+ value.compact.map{ |v| _to_hash(v) }
182
+ elsif value.is_a?(Hash)
183
+ {}.tap do |hash|
184
+ value.each { |k, v| hash[k] = _to_hash(v) }
185
+ end
186
+ elsif value.respond_to? :to_hash
187
+ value.to_hash
188
+ else
189
+ value
190
+ end
191
+ end
192
+
193
+
194
+ private
195
+ def after_parse
196
+ self.send(:remove_instance_variable, :@roxml_references) if defined? self.roxml_references
197
+ end
198
+
199
+ # Attribute datatype mapping.
200
+ def self.datatype_map
201
+ {
202
+ :card_brand => 'String',
203
+ :currency => 'Array<String>',
204
+ :extension_point => 'ExtensionPoint'
205
+
206
+ }
207
+ end
208
+ end
209
+
210
+
211
+ end
@@ -0,0 +1,215 @@
1
+ require 'date'
2
+ require 'roxml'
3
+ require_relative '../../mastercard_merchant_onboarding/models/extension_point'
4
+ require_relative '../../mastercard_merchant_onboarding/models/merchant_response_record'
5
+ require_relative '../../mastercard_merchant_onboarding/models/summary'
6
+
7
+
8
+ module MastercardMerchantOnboarding
9
+ # This class contains the merchant upload response details.
10
+ class MerchantDownload
11
+ include ROXML
12
+
13
+ xml_name "MerchantDownload"
14
+
15
+ # @!attribute summary
16
+ # @return [Summary] the summary of the upload request.
17
+ xml_accessor :summary, :from =>"Summary",:as => Summary
18
+
19
+ # @!attribute merchant_response_record
20
+ # @return [Array<MerchantResponseRecord>] the list of merchants uploaded/edited.
21
+ xml_accessor :merchant_response_record, :from =>"MerchantResponseRecord", :as =>[MerchantResponseRecord]
22
+
23
+ # @!attribute extension_point
24
+ # @return [ExtensionPoint] the extension point for future enhancement.
25
+ xml_accessor :extension_point, :from =>"ExtensionPoint",:as => ExtensionPoint
26
+
27
+ # @!attribute version
28
+ # @return [String] the version information.
29
+ xml_accessor :version, :from =>"@Version"
30
+
31
+
32
+ # Attribute mapping from ruby-style variable name to JSON key.
33
+ def self.attribute_map
34
+ {
35
+ :summary => :Summary ,
36
+ :merchant_response_record => :MerchantResponseRecord ,
37
+ :extension_point => :ExtensionPoint ,
38
+ :version => :Version
39
+
40
+ }
41
+ end
42
+
43
+ def initialize(attributes = {})
44
+ return unless attributes.is_a?(Hash)
45
+
46
+ # convert string to symbol for hash key
47
+ attributes = attributes.inject({}){|memo,(k,v)| memo[k.to_sym] = v; memo}
48
+
49
+
50
+ if attributes.has_key?(:summary)
51
+ self.summary = attributes[:summary]
52
+ end
53
+
54
+ if attributes.has_key?(:merchant_response_record)
55
+ self.merchant_response_record = attributes[:merchant_response_record]
56
+ end
57
+
58
+ if attributes.has_key?(:extension_point)
59
+ self.extension_point = attributes[:extension_point]
60
+ end
61
+
62
+ if attributes.has_key?(:version)
63
+ self.version = attributes[:version]
64
+ end
65
+
66
+ end
67
+
68
+
69
+ # Overriding setter method merchant_response_record
70
+ # @param value
71
+ def merchant_response_record=(value)
72
+ if (value.is_a?(Array))
73
+ @merchant_response_record = value
74
+ else
75
+ @merchant_response_record = [] if !@merchant_response_record
76
+ @merchant_response_record.push value
77
+ end
78
+ end
79
+
80
+
81
+ # Check equality by comparing each attribute.
82
+ def ==(o)
83
+ return true if self.equal?(o)
84
+ self.class == o.class &&
85
+ summary == o.summary &&
86
+ merchant_response_record == o.merchant_response_record &&
87
+ extension_point == o.extension_point &&
88
+ version == o.version
89
+ end
90
+
91
+ # @see the `==` method
92
+ def eql?(o)
93
+ self == o
94
+ end
95
+
96
+ # Calculate hash code according to all attributes.
97
+ def hash
98
+ [summary, merchant_response_record, extension_point, version].hash
99
+ end
100
+
101
+ # build the object from hash
102
+ def build_from_hash(attributes)
103
+ return nil unless attributes.is_a?(Hash)
104
+ self.class.datatype_map.each_pair do |key, type|
105
+ if type =~ /^Array<(.*)>/i
106
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
107
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map{ |v| _deserialize($1, v) } )
108
+ else
109
+ #TODO show warning in debug mode
110
+ end
111
+ elsif !attributes[self.class.attribute_map[key]].nil?
112
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
113
+ else
114
+ # data not found in attributes(hash), not an issue as the data can be optional
115
+ end
116
+ end
117
+
118
+ self
119
+ end
120
+
121
+ def _deserialize(type, value)
122
+ case type.to_sym
123
+ when :DateTime
124
+ DateTime.parse(value)
125
+ when :Date
126
+ Date.parse(value)
127
+ when :Object
128
+ value
129
+ when :String
130
+ value.to_s
131
+ when :Integer
132
+ value.to_i
133
+ when :Float
134
+ value.to_f
135
+ when :BOOLEAN
136
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
137
+ true
138
+ else
139
+ false
140
+ end
141
+ when /\AArray<(?<inner_type>.+)>\z/
142
+ inner_type = Regexp.last_match[:inner_type]
143
+ value.map { |v| _deserialize(inner_type, v) }
144
+ when /\AHash<(?<k_type>.+), (?<v_type>.+)>\z/
145
+ k_type = Regexp.last_match[:k_type]
146
+ v_type = Regexp.last_match[:v_type]
147
+ {}.tap do |hash|
148
+ value.each do |k, v|
149
+ hash[_deserialize(k_type, k).to_sym] = _deserialize(v_type, v)
150
+ end
151
+ end
152
+ else # model
153
+ _model = MastercardMerchantOnboarding.const_get(type).new
154
+ _model.build_from_hash(value)
155
+ end
156
+ end
157
+
158
+ def to_s
159
+ to_hash.to_s
160
+ end
161
+
162
+ # to_body is an alias to to_body (backward compatibility))
163
+ def to_body
164
+ to_hash
165
+ end
166
+
167
+ # return the object in the form of hash
168
+ def to_hash(include_root = false)
169
+ attributes_hash = {}
170
+ hash = {}
171
+ self.class.attribute_map.each_pair do |attr, param|
172
+ value = self.send(attr)
173
+ next if value.nil?
174
+ hash[param] = _to_hash(value)
175
+ end
176
+ attributes_hash = include_root ? { "MerchantDownload" => hash } : hash
177
+ return attributes_hash
178
+ end
179
+
180
+ # Method to output non-array value in the form of hash
181
+ # For object, use to_hash. Otherwise, just return the value
182
+ def _to_hash(value)
183
+ if value.is_a?(Array)
184
+ value.compact.map{ |v| _to_hash(v) }
185
+ elsif value.is_a?(Hash)
186
+ {}.tap do |hash|
187
+ value.each { |k, v| hash[k] = _to_hash(v) }
188
+ end
189
+ elsif value.respond_to? :to_hash
190
+ value.to_hash
191
+ else
192
+ value
193
+ end
194
+ end
195
+
196
+
197
+ private
198
+ def after_parse
199
+ self.send(:remove_instance_variable, :@roxml_references) if defined? self.roxml_references
200
+ end
201
+
202
+ # Attribute datatype mapping.
203
+ def self.datatype_map
204
+ {
205
+ :summary => 'Summary',
206
+ :merchant_response_record => 'Array<MerchantResponseRecord>',
207
+ :extension_point => 'ExtensionPoint',
208
+ :version => 'String'
209
+
210
+ }
211
+ end
212
+ end
213
+
214
+
215
+ end
@@ -0,0 +1,236 @@
1
+ require 'date'
2
+ require 'roxml'
3
+ require_relative '../../mastercard_merchant_onboarding/models/checkout_brand'
4
+ require_relative '../../mastercard_merchant_onboarding/models/extension_point'
5
+ require_relative '../../mastercard_merchant_onboarding/models/merchant_acquirer'
6
+
7
+
8
+ module MastercardMerchantOnboarding
9
+ # This class contains the merchant response record.
10
+ class MerchantResponseRecord
11
+ include ROXML
12
+
13
+ xml_name "MerchantResponseRecord"
14
+
15
+ # @!attribute sp_merchant_id
16
+ # @return [String] the merchant identifier for a specific service provider. For example, 12345.
17
+ xml_accessor :sp_merchant_id, :from =>"SPMerchantId"
18
+
19
+ # @!attribute error_text
20
+ # @return [String] the error description for failure. For example, Invalid rewards logo URL.
21
+ xml_accessor :error_text, :from =>"ErrorText"
22
+
23
+ # @!attribute checkout_brand
24
+ # @return [Array<CheckoutBrand>] the checkout branding. Choice (ErrorText or CheckoutBrand).
25
+ xml_accessor :checkout_brand, :from =>"CheckoutBrand", :as =>[CheckoutBrand]
26
+
27
+ # @!attribute merchant_acquirer
28
+ # @return [Array<MerchantAcquirer>] the merchant acquirer information.
29
+ xml_accessor :merchant_acquirer, :from =>"MerchantAcquirer", :as =>[MerchantAcquirer]
30
+
31
+ # @!attribute extension_point
32
+ # @return [ExtensionPoint] the extension point for future enhancement.
33
+ xml_accessor :extension_point, :from =>"ExtensionPoint",:as => ExtensionPoint
34
+
35
+
36
+ # Attribute mapping from ruby-style variable name to JSON key.
37
+ def self.attribute_map
38
+ {
39
+ :sp_merchant_id => :SPMerchantId ,
40
+ :error_text => :ErrorText ,
41
+ :checkout_brand => :CheckoutBrand ,
42
+ :merchant_acquirer => :MerchantAcquirer ,
43
+ :extension_point => :ExtensionPoint
44
+
45
+ }
46
+ end
47
+
48
+ def initialize(attributes = {})
49
+ return unless attributes.is_a?(Hash)
50
+
51
+ # convert string to symbol for hash key
52
+ attributes = attributes.inject({}){|memo,(k,v)| memo[k.to_sym] = v; memo}
53
+
54
+
55
+ if attributes.has_key?(:sp_merchant_id)
56
+ self.sp_merchant_id = attributes[:sp_merchant_id]
57
+ end
58
+
59
+ if attributes.has_key?(:error_text)
60
+ self.error_text = attributes[:error_text]
61
+ end
62
+
63
+ if attributes.has_key?(:checkout_brand)
64
+ self.checkout_brand = attributes[:checkout_brand]
65
+ end
66
+
67
+ if attributes.has_key?(:merchant_acquirer)
68
+ self.merchant_acquirer = attributes[:merchant_acquirer]
69
+ end
70
+
71
+ if attributes.has_key?(:extension_point)
72
+ self.extension_point = attributes[:extension_point]
73
+ end
74
+
75
+ end
76
+
77
+
78
+ # Overriding setter method checkout_brand
79
+ # @param value
80
+ def checkout_brand=(value)
81
+ if (value.is_a?(Array))
82
+ @checkout_brand = value
83
+ else
84
+ @checkout_brand = [] if !@checkout_brand
85
+ @checkout_brand.push value
86
+ end
87
+ end
88
+ # Overriding setter method merchant_acquirer
89
+ # @param value
90
+ def merchant_acquirer=(value)
91
+ if (value.is_a?(Array))
92
+ @merchant_acquirer = value
93
+ else
94
+ @merchant_acquirer = [] if !@merchant_acquirer
95
+ @merchant_acquirer.push value
96
+ end
97
+ end
98
+
99
+
100
+ # Check equality by comparing each attribute.
101
+ def ==(o)
102
+ return true if self.equal?(o)
103
+ self.class == o.class &&
104
+ sp_merchant_id == o.sp_merchant_id &&
105
+ error_text == o.error_text &&
106
+ checkout_brand == o.checkout_brand &&
107
+ merchant_acquirer == o.merchant_acquirer &&
108
+ extension_point == o.extension_point
109
+ end
110
+
111
+ # @see the `==` method
112
+ def eql?(o)
113
+ self == o
114
+ end
115
+
116
+ # Calculate hash code according to all attributes.
117
+ def hash
118
+ [sp_merchant_id, error_text, checkout_brand, merchant_acquirer, extension_point].hash
119
+ end
120
+
121
+ # build the object from hash
122
+ def build_from_hash(attributes)
123
+ return nil unless attributes.is_a?(Hash)
124
+ self.class.datatype_map.each_pair do |key, type|
125
+ if type =~ /^Array<(.*)>/i
126
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
127
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map{ |v| _deserialize($1, v) } )
128
+ else
129
+ #TODO show warning in debug mode
130
+ end
131
+ elsif !attributes[self.class.attribute_map[key]].nil?
132
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
133
+ else
134
+ # data not found in attributes(hash), not an issue as the data can be optional
135
+ end
136
+ end
137
+
138
+ self
139
+ end
140
+
141
+ def _deserialize(type, value)
142
+ case type.to_sym
143
+ when :DateTime
144
+ DateTime.parse(value)
145
+ when :Date
146
+ Date.parse(value)
147
+ when :Object
148
+ value
149
+ when :String
150
+ value.to_s
151
+ when :Integer
152
+ value.to_i
153
+ when :Float
154
+ value.to_f
155
+ when :BOOLEAN
156
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
157
+ true
158
+ else
159
+ false
160
+ end
161
+ when /\AArray<(?<inner_type>.+)>\z/
162
+ inner_type = Regexp.last_match[:inner_type]
163
+ value.map { |v| _deserialize(inner_type, v) }
164
+ when /\AHash<(?<k_type>.+), (?<v_type>.+)>\z/
165
+ k_type = Regexp.last_match[:k_type]
166
+ v_type = Regexp.last_match[:v_type]
167
+ {}.tap do |hash|
168
+ value.each do |k, v|
169
+ hash[_deserialize(k_type, k).to_sym] = _deserialize(v_type, v)
170
+ end
171
+ end
172
+ else # model
173
+ _model = MastercardMerchantOnboarding.const_get(type).new
174
+ _model.build_from_hash(value)
175
+ end
176
+ end
177
+
178
+ def to_s
179
+ to_hash.to_s
180
+ end
181
+
182
+ # to_body is an alias to to_body (backward compatibility))
183
+ def to_body
184
+ to_hash
185
+ end
186
+
187
+ # return the object in the form of hash
188
+ def to_hash(include_root = false)
189
+ attributes_hash = {}
190
+ hash = {}
191
+ self.class.attribute_map.each_pair do |attr, param|
192
+ value = self.send(attr)
193
+ next if value.nil?
194
+ hash[param] = _to_hash(value)
195
+ end
196
+ attributes_hash = include_root ? { "MerchantResponseRecord" => hash } : hash
197
+ return attributes_hash
198
+ end
199
+
200
+ # Method to output non-array value in the form of hash
201
+ # For object, use to_hash. Otherwise, just return the value
202
+ def _to_hash(value)
203
+ if value.is_a?(Array)
204
+ value.compact.map{ |v| _to_hash(v) }
205
+ elsif value.is_a?(Hash)
206
+ {}.tap do |hash|
207
+ value.each { |k, v| hash[k] = _to_hash(v) }
208
+ end
209
+ elsif value.respond_to? :to_hash
210
+ value.to_hash
211
+ else
212
+ value
213
+ end
214
+ end
215
+
216
+
217
+ private
218
+ def after_parse
219
+ self.send(:remove_instance_variable, :@roxml_references) if defined? self.roxml_references
220
+ end
221
+
222
+ # Attribute datatype mapping.
223
+ def self.datatype_map
224
+ {
225
+ :sp_merchant_id => 'String',
226
+ :error_text => 'String',
227
+ :checkout_brand => 'Array<CheckoutBrand>',
228
+ :merchant_acquirer => 'Array<MerchantAcquirer>',
229
+ :extension_point => 'ExtensionPoint'
230
+
231
+ }
232
+ end
233
+ end
234
+
235
+
236
+ end