hps 2.2.5 → 2.4.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 (83) hide show
  1. checksums.yaml +5 -5
  2. data/Gemfile +4 -4
  3. data/Gemfile.lock +59 -0
  4. data/LICENSE.md +264 -0
  5. data/PRIVACY.txt +65 -65
  6. data/README.md +213 -216
  7. data/Rakefile +15 -15
  8. data/examples/sinatra-verify-only/Gemfile +4 -4
  9. data/examples/sinatra-verify-only/app.rb +32 -32
  10. data/examples/sinatra-verify-only/views/index.erb +478 -478
  11. data/examples/sinatra-verify-only/views/result.erb +39 -39
  12. data/hps.gemspec +28 -28
  13. data/lib/hps/configuration.rb +17 -17
  14. data/lib/hps/entities/hps_account_verify.rb +8 -8
  15. data/lib/hps/entities/hps_address.rb +6 -6
  16. data/lib/hps/entities/hps_authorization.rb +12 -12
  17. data/lib/hps/entities/hps_batch.rb +6 -6
  18. data/lib/hps/entities/hps_cardholder.rb +6 -6
  19. data/lib/hps/entities/hps_charge.rb +8 -8
  20. data/lib/hps/entities/hps_charge_exceptions.rb +6 -6
  21. data/lib/hps/entities/hps_check.rb +18 -18
  22. data/lib/hps/entities/hps_check_holder.rb +10 -10
  23. data/lib/hps/entities/hps_check_response.rb +45 -45
  24. data/lib/hps/entities/hps_check_response_details.rb +9 -9
  25. data/lib/hps/entities/hps_credit_card.rb +34 -34
  26. data/lib/hps/entities/hps_direct_market_data.rb +5 -5
  27. data/lib/hps/entities/hps_encryption_data.rb +6 -6
  28. data/lib/hps/entities/hps_gift_card.rb +133 -0
  29. data/lib/hps/entities/hps_manage_tokens.rb +8 -8
  30. data/lib/hps/entities/hps_refund.rb +8 -8
  31. data/lib/hps/entities/hps_report_transaction_details.rb +10 -10
  32. data/lib/hps/entities/hps_report_transaction_summary.rb +6 -6
  33. data/lib/hps/entities/hps_reversal.rb +10 -10
  34. data/lib/hps/entities/hps_token_data.rb +10 -10
  35. data/lib/hps/entities/hps_track_data.rb +5 -5
  36. data/lib/hps/entities/hps_transaction.rb +161 -161
  37. data/lib/hps/entities/hps_transaction_details.rb +6 -6
  38. data/lib/hps/entities/hps_transaction_header.rb +8 -8
  39. data/lib/hps/entities/hps_transaction_type.rb +16 -16
  40. data/lib/hps/entities/hps_void.rb +8 -8
  41. data/lib/hps/infrastructure/api_connection_exception.rb +11 -11
  42. data/lib/hps/infrastructure/authentication_exception.rb +11 -11
  43. data/lib/hps/infrastructure/card_exception.rb +15 -15
  44. data/lib/hps/infrastructure/exceptions.json +547 -468
  45. data/lib/hps/infrastructure/hps_account_type.rb +11 -11
  46. data/lib/hps/infrastructure/hps_check_exception.rb +13 -13
  47. data/lib/hps/infrastructure/hps_check_type.rb +11 -11
  48. data/lib/hps/infrastructure/hps_data_entry_mode.rb +11 -11
  49. data/lib/hps/infrastructure/hps_exception.rb +25 -25
  50. data/lib/hps/infrastructure/hps_exception_mapper.rb +145 -134
  51. data/lib/hps/infrastructure/hps_gateway_response_validation.rb +20 -20
  52. data/lib/hps/infrastructure/hps_input_validation.rb +13 -13
  53. data/lib/hps/infrastructure/hps_sdk_codes.rb +48 -48
  54. data/lib/hps/infrastructure/hps_sec_code.rb +27 -27
  55. data/lib/hps/infrastructure/hps_track_data_method.rb +6 -6
  56. data/lib/hps/infrastructure/invalid_request_exception.rb +15 -15
  57. data/lib/hps/services/hps_batch_service.rb +29 -29
  58. data/lib/hps/services/hps_charge_service.rb +773 -773
  59. data/lib/hps/services/hps_check_service.rb +110 -110
  60. data/lib/hps/services/hps_gift_card_service.rb +301 -0
  61. data/lib/hps/services/hps_service.rb +141 -136
  62. data/lib/hps/version.rb +3 -3
  63. data/lib/hps.rb +63 -61
  64. data/tests/amex_tests.rb +292 -292
  65. data/tests/cert_tests.rb +80 -80
  66. data/tests/certification/card_present_spec.rb +320 -320
  67. data/tests/certification/gift_card_certification_test.rb +107 -0
  68. data/tests/certification/gift_card_certification_tests.rb +107 -0
  69. data/tests/check_tests.rb +50 -50
  70. data/tests/discover_tests.rb +386 -386
  71. data/tests/exception_mapper_tests.rb +311 -244
  72. data/tests/general_tests.rb +140 -140
  73. data/tests/giftcard_tests.rb +212 -0
  74. data/tests/hps_token_service.rb +56 -56
  75. data/tests/mastercard_tests.rb +387 -387
  76. data/tests/secret_key.rb +11 -11
  77. data/tests/test_check.rb +77 -77
  78. data/tests/test_data.rb +138 -128
  79. data/tests/test_helper.rb +179 -116
  80. data/tests/token_tests.rb +512 -512
  81. data/tests/visa_tests.rb +445 -445
  82. metadata +40 -15
  83. data/LICENSE.txt +0 -32
@@ -1,110 +1,110 @@
1
- module Hps
2
- class HpsCheckService < HpsService
3
- def sale(check, amount, client_txn_id = nil)
4
- build_transaction('SALE', check, amount, client_txn_id)
5
- end
6
-
7
- def void(transaction_id = nil, client_txn_id = nil)
8
- if (transaction_id == nil && client_txn_id == nil) ||
9
- (transaction_id != nil && client_txn_id != nil)
10
- raise Error, 'Please provide either a transaction ID or a client transaction ID'
11
- end
12
-
13
- xml = Builder::XmlMarkup.new
14
- xml.hps :Transaction do
15
- xml.hps :CheckVoid do
16
- xml.hps :Block1 do
17
- xml.hps :GatewayTxnId, transaction_id if transaction_id
18
- xml.hps :ClientTxnId, client_txn_id if client_txn_id
19
- end
20
- end
21
- end
22
-
23
- submit_transaction(xml.target!, :CheckVoid)
24
- end
25
-
26
- private
27
-
28
- def build_transaction(action, check, amount, client_txn_id)
29
- amount = HpsInputValidation::check_amount(amount)
30
-
31
- if check.sec_code == HpsSECCode.ccd &&
32
- (check.check_holder == nil || check.check_holder.check_name == nil)
33
- raise Error, 'For SEC code CCD, the check name is require', 'check_name'
34
- end
35
-
36
- xml = Builder::XmlMarkup.new
37
- xml.hps :Transaction do
38
- xml.hps :CheckSale do
39
- xml.hps :Block1 do
40
- xml.hps :Amt, amount
41
- xml << hydrate_check_data(check)
42
- xml.hps :CheckAction, action
43
- xml.hps :SECCode, check.sec_code
44
- xml.hps :CheckType, check.check_type if check.check_type
45
- xml << hydrate_consumer_info(check.check_holder) if check.check_holder
46
- end
47
- end
48
- end
49
-
50
- submit_transaction(xml.target!, :CheckSale, client_txn_id)
51
- end
52
-
53
- def hydrate_check_data(check)
54
- xml = Builder::XmlMarkup.new
55
- xml.hps :AccountInfo do
56
- xml.hps :AccountNumber, check.account_number if check.account_number
57
- xml.hps :CheckNumber, check.check_number if check.check_number
58
- xml.hps :MICRData, check.micr_number if check.micr_number
59
- xml.hps :RoutingNumber, check.routing_number if check.routing_number
60
- xml.hps :AccountType, check.account_type if check.account_type
61
- end
62
- xml.target!
63
- end
64
-
65
- def hydrate_consumer_info(check_holder)
66
- xml = Builder::XmlMarkup.new
67
- xml.hps :ConsumerInfo do
68
- if check_holder.address
69
- xml.hps :Address1, check_holder.address.address if check_holder.address.address
70
- xml.hps :City, check_holder.address.city if check_holder.address.city
71
- xml.hps :State, check_holder.address.state if check_holder.address.state
72
- xml.hps :Zip, check_holder.address.zip if check_holder.address.zip
73
- end
74
-
75
- xml.hps :CheckName, check_holder.check_name if check_holder.check_name
76
- xml.hps :CourtesyCard, check_holder.courtesy_card if check_holder.courtesy_card
77
- xml.hps :DLNumber, check_holder.dl_number if check_holder.dl_number
78
- xml.hps :DLState, check_holder.dl_state if check_holder.dl_state
79
- xml.hps :EmailAddress, check_holder.email if check_holder.email_address
80
- xml.hps :FirstName, check_holder.first_name if check_holder.first_name
81
- xml.hps :LastName, check_holder.last_name if check_holder.last_name
82
- xml.hps :PhoneNumber, check_holder.phone if check_holder.phone
83
-
84
- if check_holder.ssl4 || check_holder.dob_year
85
- xml.hps :IdentityInfo do
86
- xml.hps :SSNL4, check_holder.ssl4 if check_holder.ssl4
87
- xml.hps :DOBYear, check_holder.dob_year if check_holder.dob_year
88
- end
89
- end
90
- end
91
-
92
- xml.target!
93
- end
94
-
95
- def submit_transaction(xml, txn_type, client_txn_id = nil)
96
- response = doTransaction(xml, client_txn_id)
97
- HpsGatewayResponseValidation::check_response(response, txn_type)
98
- response = HpsCheckResponse::from_hash(response, txn_type)
99
-
100
- return response if response.response_code == '0'
101
-
102
- raise HpsCheckException.new(
103
- response.transaction_id,
104
- response.details,
105
- response.response_code,
106
- response.response_text
107
- )
108
- end
109
- end
110
- end
1
+ module Hps
2
+ class HpsCheckService < HpsService
3
+ def sale(check, amount, client_txn_id = nil)
4
+ build_transaction('SALE', check, amount, client_txn_id)
5
+ end
6
+
7
+ def void(transaction_id = nil, client_txn_id = nil)
8
+ if (transaction_id == nil && client_txn_id == nil) ||
9
+ (transaction_id != nil && client_txn_id != nil)
10
+ raise Error, 'Please provide either a transaction ID or a client transaction ID'
11
+ end
12
+
13
+ xml = Builder::XmlMarkup.new
14
+ xml.hps :Transaction do
15
+ xml.hps :CheckVoid do
16
+ xml.hps :Block1 do
17
+ xml.hps :GatewayTxnId, transaction_id if transaction_id
18
+ xml.hps :ClientTxnId, client_txn_id if client_txn_id
19
+ end
20
+ end
21
+ end
22
+
23
+ submit_transaction(xml.target!, :CheckVoid)
24
+ end
25
+
26
+ private
27
+
28
+ def build_transaction(action, check, amount, client_txn_id)
29
+ amount = HpsInputValidation::check_amount(amount)
30
+
31
+ if check.sec_code == HpsSECCode.ccd &&
32
+ (check.check_holder == nil || check.check_holder.check_name == nil)
33
+ raise Error, 'For SEC code CCD, the check name is require', 'check_name'
34
+ end
35
+
36
+ xml = Builder::XmlMarkup.new
37
+ xml.hps :Transaction do
38
+ xml.hps :CheckSale do
39
+ xml.hps :Block1 do
40
+ xml.hps :Amt, amount
41
+ xml << hydrate_check_data(check)
42
+ xml.hps :CheckAction, action
43
+ xml.hps :SECCode, check.sec_code
44
+ xml.hps :CheckType, check.check_type if check.check_type
45
+ xml << hydrate_consumer_info(check.check_holder) if check.check_holder
46
+ end
47
+ end
48
+ end
49
+
50
+ submit_transaction(xml.target!, :CheckSale, client_txn_id)
51
+ end
52
+
53
+ def hydrate_check_data(check)
54
+ xml = Builder::XmlMarkup.new
55
+ xml.hps :AccountInfo do
56
+ xml.hps :AccountNumber, check.account_number if check.account_number
57
+ xml.hps :CheckNumber, check.check_number if check.check_number
58
+ xml.hps :MICRData, check.micr_number if check.micr_number
59
+ xml.hps :RoutingNumber, check.routing_number if check.routing_number
60
+ xml.hps :AccountType, check.account_type if check.account_type
61
+ end
62
+ xml.target!
63
+ end
64
+
65
+ def hydrate_consumer_info(check_holder)
66
+ xml = Builder::XmlMarkup.new
67
+ xml.hps :ConsumerInfo do
68
+ if check_holder.address
69
+ xml.hps :Address1, check_holder.address.address if check_holder.address.address
70
+ xml.hps :City, check_holder.address.city if check_holder.address.city
71
+ xml.hps :State, check_holder.address.state if check_holder.address.state
72
+ xml.hps :Zip, check_holder.address.zip if check_holder.address.zip
73
+ end
74
+
75
+ xml.hps :CheckName, check_holder.check_name if check_holder.check_name
76
+ xml.hps :CourtesyCard, check_holder.courtesy_card if check_holder.courtesy_card
77
+ xml.hps :DLNumber, check_holder.dl_number if check_holder.dl_number
78
+ xml.hps :DLState, check_holder.dl_state if check_holder.dl_state
79
+ xml.hps :EmailAddress, check_holder.email if check_holder.email_address
80
+ xml.hps :FirstName, check_holder.first_name if check_holder.first_name
81
+ xml.hps :LastName, check_holder.last_name if check_holder.last_name
82
+ xml.hps :PhoneNumber, check_holder.phone if check_holder.phone
83
+
84
+ if check_holder.ssl4 || check_holder.dob_year
85
+ xml.hps :IdentityInfo do
86
+ xml.hps :SSNL4, check_holder.ssl4 if check_holder.ssl4
87
+ xml.hps :DOBYear, check_holder.dob_year if check_holder.dob_year
88
+ end
89
+ end
90
+ end
91
+
92
+ xml.target!
93
+ end
94
+
95
+ def submit_transaction(xml, txn_type, client_txn_id = nil)
96
+ response = doTransaction(xml, client_txn_id)
97
+ HpsGatewayResponseValidation::check_response(response, txn_type)
98
+ response = HpsCheckResponse::from_hash(response, txn_type)
99
+
100
+ return response if response.response_code == '0'
101
+
102
+ raise HpsCheckException.new(
103
+ response.transaction_id,
104
+ response.details,
105
+ response.response_code,
106
+ response.response_text
107
+ )
108
+ end
109
+ end
110
+ end
@@ -0,0 +1,301 @@
1
+ module Hps
2
+ class HpsGiftCardService < HpsService
3
+ def activate(giftcard, amount, currency = "USD")
4
+ HpsInputValidation.check_amount(amount)
5
+ txn_type = "GiftCardActivate"
6
+
7
+ xml = Builder::XmlMarkup.new
8
+ xml.hps :Transaction do
9
+ xml.hps txn_type.to_sym do
10
+ xml.hps :Block1 do
11
+ xml.hps :Amt, amount
12
+
13
+ if giftcard.is_a? HpsTokenData
14
+ card_data = HpsGiftCard.new
15
+ card_data.token_value = giftcard.token_value
16
+ else
17
+ card_data = giftcard
18
+ end
19
+
20
+ hydrate_gift_card_data(giftcard, xml)
21
+ end
22
+ end
23
+ end
24
+ submit_transaction(xml.target!, txn_type)
25
+ end # activate
26
+
27
+ def add_value(giftcard, amount, currency = "USD")
28
+ HpsInputValidation.check_amount(amount)
29
+ txn_type = "GiftCardAddValue"
30
+
31
+ xml = Builder::XmlMarkup.new
32
+ xml.hps :Transaction do
33
+ xml.hps txn_type.to_sym do
34
+ xml.hps :Block1 do
35
+ xml.hps :Amt, amount
36
+
37
+ if giftcard.is_a? HpsTokenData
38
+ card_data = HpsGiftCard.new
39
+ card_data.token_value = giftcard.token_value
40
+ else
41
+ card_data = giftcard
42
+ end
43
+
44
+ hydrate_gift_card_data(giftcard, xml)
45
+ end
46
+ end
47
+ end
48
+ submit_transaction(xml.target!, txn_type)
49
+ end # add_value
50
+
51
+ def balance(giftcard)
52
+ txn_type = "GiftCardBalance"
53
+
54
+ xml = Builder::XmlMarkup.new
55
+ xml.hps :Transaction do
56
+ xml.hps txn_type.to_sym do
57
+ xml.hps :Block1 do
58
+
59
+ if giftcard.is_a? HpsTokenData
60
+ card_data = HpsGiftCard.new
61
+ card_data.token_value = giftcard.token_value
62
+ else
63
+ card_data = giftcard
64
+ end
65
+
66
+ hydrate_gift_card_data(giftcard, xml)
67
+ end
68
+ end
69
+ end
70
+ submit_transaction(xml.target!, txn_type)
71
+ end # balance
72
+
73
+ def deactivate(giftcard)
74
+ txn_type = "GiftCardDeactivate"
75
+
76
+ xml = Builder::XmlMarkup.new
77
+ xml.hps :Transaction do
78
+ xml.hps txn_type.to_sym do
79
+ xml.hps :Block1 do
80
+
81
+ if giftcard.is_a? HpsTokenData
82
+ card_data = HpsGiftCard.new
83
+ card_data.token_value = giftcard.token_value
84
+ else
85
+ card_data = giftcard
86
+ end
87
+
88
+ hydrate_gift_card_data(giftcard, xml)
89
+ end
90
+ end
91
+ end
92
+ submit_transaction(xml.target!, txn_type)
93
+ end # deactivate
94
+
95
+ def replace(old_card, new_card)
96
+ txn_type = "GiftCardReplace"
97
+
98
+ xml = Builder::XmlMarkup.new
99
+ xml.hps :Transaction do
100
+ xml.hps txn_type.to_sym do
101
+ xml.hps :Block1 do
102
+
103
+ hydrate_gift_card_data(old_card, xml, 'OldCardData')
104
+ hydrate_gift_card_data(new_card, xml, 'NewCardData')
105
+
106
+ end
107
+ end
108
+ end
109
+ submit_transaction(xml.target!, txn_type)
110
+ end # replace
111
+
112
+ def reward(giftcard, amount, currency = "USD", gratuity = nil, tax = nil)
113
+ HpsInputValidation.check_amount(amount)
114
+ txn_type = "GiftCardReward"
115
+
116
+ xml = Builder::XmlMarkup.new
117
+ xml.hps :Transaction do
118
+ xml.hps txn_type.to_sym do
119
+ xml.hps :Block1 do
120
+ xml.hps :Amt, amount
121
+
122
+ if giftcard.is_a? HpsTokenData
123
+ card_data = HpsGiftCard.new
124
+ card_data.token_value = giftcard.token_value
125
+ else
126
+ card_data = giftcard
127
+ end
128
+
129
+ hydrate_gift_card_data(giftcard, xml)
130
+
131
+ if ["USD", "POINTS"].include? currency.upcase
132
+ xml.hps :Currency, currency.upcase
133
+ end
134
+
135
+ if gratuity
136
+ xml.hps :GratuityAmtInfo, gratuity
137
+ end
138
+
139
+ if tax
140
+ xml.hps :TaxAmtInfo, tax
141
+ end
142
+
143
+ end
144
+ end
145
+ end
146
+ submit_transaction(xml.target!, txn_type)
147
+ end # reward
148
+
149
+ def sale(giftcard, amount, currency = "USD", gratuity = nil, tax = nil)
150
+ HpsInputValidation.check_amount(amount)
151
+ txn_type = "GiftCardSale"
152
+
153
+ xml = Builder::XmlMarkup.new
154
+ xml.hps :Transaction do
155
+ xml.hps txn_type.to_sym do
156
+ xml.hps :Block1 do
157
+ xml.hps :Amt, amount
158
+
159
+ if giftcard.is_a? HpsTokenData
160
+ card_data = HpsGiftCard.new
161
+ card_data.token_value = giftcard.token_value
162
+ else
163
+ card_data = giftcard
164
+ end
165
+
166
+ hydrate_gift_card_data(giftcard, xml)
167
+
168
+ if ["USD", "POINTS"].include? currency.upcase
169
+ xml.hps :Currency, currency.upcase
170
+ end
171
+
172
+ if gratuity
173
+ xml.hps :GratuityAmtInfo, gratuity
174
+ end
175
+
176
+ if tax
177
+ xml.hps :TaxAmtInfo, tax
178
+ end
179
+
180
+ end
181
+ end
182
+ end
183
+ submit_transaction(xml.target!, txn_type)
184
+ end # sale
185
+
186
+ def void(txn_id)
187
+ txn_type = "GiftCardVoid"
188
+
189
+ xml = Builder::XmlMarkup.new
190
+ xml.hps :Transaction do
191
+ xml.hps txn_type.to_sym do
192
+ xml.hps :Block1 do
193
+ xml.hps :GatewayTxnId, txn_id
194
+ end
195
+ end
196
+ end
197
+ submit_transaction(xml.target!, txn_type)
198
+ end # void
199
+
200
+ def reverse(giftcard, amount)
201
+ HpsInputValidation.check_amount(amount)
202
+ txn_type = "GiftCardReversal"
203
+
204
+ xml = Builder::XmlMarkup.new
205
+ xml.hps :Transaction do
206
+ xml.hps txn_type.to_sym do
207
+ xml.hps :Block1 do
208
+ xml.hps :Amt, amount
209
+
210
+ if giftcard.is_a? HpsTokenData
211
+ xml.hps :TokenValue, giftcard.token_value
212
+ elsif giftcard.is_a? HpsGiftCard
213
+ card_data = giftcard
214
+ hydrate_gift_card_data(card_data, xml)
215
+ else
216
+ xml.hps :GatewayTxnId, giftcard
217
+ end
218
+
219
+ end
220
+ end
221
+ end
222
+ submit_transaction(xml.target!, txn_type)
223
+ end # reverse
224
+
225
+ private
226
+ def hydrate_gift_card_data(gift_card, xml, element_name = 'CardData')
227
+ xml.hps element_name.to_sym do
228
+ if gift_card.number
229
+ xml.hps :CardNbr, gift_card.number
230
+ elsif gift_card.track_data
231
+ xml.hps :TrackData, gift_card.track_data
232
+ elsif gift_card.alias
233
+ xml.hps :Alias, gift_card.alias
234
+ elsif gift_card.token_value
235
+ xml.hps :TokenValue, gift_card.token_value
236
+ end
237
+
238
+ if gift_card.encryption_data
239
+ hydrate_encryption_data(gift_card.encryption_data, xml)
240
+ end
241
+
242
+ if gift_card.pin
243
+ xml.hps :PIN, gift_card.pin
244
+ end
245
+ end
246
+ end # hydrate_gift_card_data
247
+
248
+ def hydrate_encryption_data(encryption_data, xml)
249
+ xml.hps :EncryptionData do
250
+ if encryption_data.encrypted_track_number
251
+ xml.hps :EncryptedTrackNumber, encryption_data.encrypted_track_number
252
+ end
253
+ xml.hps :KSN, encryption_data.ksn
254
+ xml.hps :KTB, encryption_data.ktb
255
+ xml.hps :Version, encryption_data.version
256
+ end
257
+ end # hydrate_encryption_data
258
+
259
+ def submit_transaction(transaction, txn_type, client_txn_id = nil)
260
+ response = doTransaction(transaction, client_txn_id)
261
+
262
+ header = response['Header']
263
+ transaction_response = response["Transaction"][txn_type]
264
+
265
+ if !transaction_response["RspCode"].eql? "0"
266
+ raise @exception_mapper.map_gift_card_exception(header["GatewayTxnId"], transaction_response["RspCode"], transaction_response["RspText"])
267
+ end
268
+
269
+ if !header["GatewayRspCode"].eql? "0"
270
+ raise @exception_mapper.map_gateway_exception(header["GatewayTxnId"], header["GatewayRspCode"], header["GatewayRspMsg"])
271
+ end
272
+
273
+ rvalue = ''
274
+ case txn_type
275
+ when 'GiftCardActivate'
276
+ rvalue = HpsGiftCardActivate::from_response(response, txn_type)
277
+ when 'GiftCardAddValue'
278
+ rvalue = HpsGiftCardAddValue::from_response(response, txn_type)
279
+ when 'GiftCardAlias'
280
+ rvalue = HpsGiftCardAlias::from_response(response, txn_type)
281
+ when 'GiftCardBalance'
282
+ rvalue = HpsGiftCardBalance::from_response(response, txn_type)
283
+ when 'GiftCardDeactivate'
284
+ rvalue = HpsGiftCardDeactivate::from_response(response, txn_type)
285
+ when 'GiftCardReplace'
286
+ rvalue = HpsGiftCardReplace::from_response(response, txn_type)
287
+ when 'GiftCardReward'
288
+ rvalue = HpsGiftCardReward::from_response(response, txn_type)
289
+ when 'GiftCardSale'
290
+ rvalue = HpsGiftCardSale::from_response(response, txn_type)
291
+ when 'GiftCardVoid'
292
+ rvalue = HpsGiftCardVoid::from_response(response, txn_type)
293
+ when 'GiftCardReversal'
294
+ rvalue = HpsGiftCardReversal::from_response(response, txn_type)
295
+ end
296
+
297
+ return rvalue;
298
+ end # submit_transaction
299
+
300
+ end # HpsGiftCardService
301
+ end # Hps