hps 2.3.2 → 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.
- checksums.yaml +4 -4
- data/Gemfile +4 -4
- data/Gemfile.lock +59 -0
- data/LICENSE.md +264 -264
- data/PRIVACY.txt +65 -65
- data/README.md +213 -213
- data/Rakefile +15 -15
- data/examples/sinatra-verify-only/Gemfile +4 -4
- data/examples/sinatra-verify-only/app.rb +32 -32
- data/examples/sinatra-verify-only/views/index.erb +478 -478
- data/examples/sinatra-verify-only/views/result.erb +39 -39
- data/hps.gemspec +28 -27
- data/lib/hps/configuration.rb +17 -17
- data/lib/hps/entities/hps_account_verify.rb +8 -8
- data/lib/hps/entities/hps_address.rb +6 -6
- data/lib/hps/entities/hps_authorization.rb +12 -12
- data/lib/hps/entities/hps_batch.rb +6 -6
- data/lib/hps/entities/hps_cardholder.rb +6 -6
- data/lib/hps/entities/hps_charge.rb +8 -8
- data/lib/hps/entities/hps_charge_exceptions.rb +6 -6
- data/lib/hps/entities/hps_check.rb +18 -18
- data/lib/hps/entities/hps_check_holder.rb +10 -10
- data/lib/hps/entities/hps_check_response.rb +45 -45
- data/lib/hps/entities/hps_check_response_details.rb +9 -9
- data/lib/hps/entities/hps_credit_card.rb +34 -34
- data/lib/hps/entities/hps_direct_market_data.rb +5 -5
- data/lib/hps/entities/hps_encryption_data.rb +6 -6
- data/lib/hps/entities/hps_gift_card.rb +133 -133
- data/lib/hps/entities/hps_manage_tokens.rb +8 -8
- data/lib/hps/entities/hps_refund.rb +8 -8
- data/lib/hps/entities/hps_report_transaction_details.rb +10 -10
- data/lib/hps/entities/hps_report_transaction_summary.rb +6 -6
- data/lib/hps/entities/hps_reversal.rb +10 -10
- data/lib/hps/entities/hps_token_data.rb +10 -10
- data/lib/hps/entities/hps_track_data.rb +5 -5
- data/lib/hps/entities/hps_transaction.rb +161 -161
- data/lib/hps/entities/hps_transaction_details.rb +6 -6
- data/lib/hps/entities/hps_transaction_header.rb +8 -8
- data/lib/hps/entities/hps_transaction_type.rb +16 -16
- data/lib/hps/entities/hps_void.rb +8 -8
- data/lib/hps/infrastructure/api_connection_exception.rb +11 -11
- data/lib/hps/infrastructure/authentication_exception.rb +11 -11
- data/lib/hps/infrastructure/card_exception.rb +15 -15
- data/lib/hps/infrastructure/exceptions.json +547 -547
- data/lib/hps/infrastructure/hps_account_type.rb +11 -11
- data/lib/hps/infrastructure/hps_check_exception.rb +13 -13
- data/lib/hps/infrastructure/hps_check_type.rb +11 -11
- data/lib/hps/infrastructure/hps_data_entry_mode.rb +11 -11
- data/lib/hps/infrastructure/hps_exception.rb +25 -25
- data/lib/hps/infrastructure/hps_exception_mapper.rb +145 -145
- data/lib/hps/infrastructure/hps_gateway_response_validation.rb +20 -20
- data/lib/hps/infrastructure/hps_input_validation.rb +13 -13
- data/lib/hps/infrastructure/hps_sdk_codes.rb +48 -48
- data/lib/hps/infrastructure/hps_sec_code.rb +27 -27
- data/lib/hps/infrastructure/hps_track_data_method.rb +6 -6
- data/lib/hps/infrastructure/invalid_request_exception.rb +15 -15
- data/lib/hps/services/hps_batch_service.rb +29 -29
- data/lib/hps/services/hps_charge_service.rb +773 -773
- data/lib/hps/services/hps_check_service.rb +110 -110
- data/lib/hps/services/hps_gift_card_service.rb +301 -301
- data/lib/hps/services/hps_service.rb +141 -136
- data/lib/hps/version.rb +3 -3
- data/lib/hps.rb +63 -63
- data/tests/amex_tests.rb +292 -292
- data/tests/cert_tests.rb +80 -80
- data/tests/certification/card_present_spec.rb +320 -320
- data/tests/certification/gift_card_certification_test.rb +106 -106
- data/tests/certification/gift_card_certification_tests.rb +107 -107
- data/tests/check_tests.rb +50 -50
- data/tests/discover_tests.rb +386 -386
- data/tests/exception_mapper_tests.rb +311 -311
- data/tests/general_tests.rb +140 -140
- data/tests/giftcard_tests.rb +212 -212
- data/tests/hps_token_service.rb +56 -56
- data/tests/mastercard_tests.rb +387 -387
- data/tests/secret_key.rb +11 -11
- data/tests/test_check.rb +77 -77
- data/tests/test_data.rb +138 -138
- data/tests/test_helper.rb +179 -179
- data/tests/token_tests.rb +512 -512
- data/tests/visa_tests.rb +445 -445
- metadata +31 -11
data/tests/discover_tests.rb
CHANGED
@@ -1,386 +1,386 @@
|
|
1
|
-
require File.join( File.dirname(__FILE__), "test_helper" )
|
2
|
-
|
3
|
-
describe "Discover Tests" do
|
4
|
-
|
5
|
-
it "Discover when card is ok should return valid result" do
|
6
|
-
charge = Hps::TestHelper.charge_valid_discover(50)
|
7
|
-
expect(charge.response_code).to eql("00")
|
8
|
-
end
|
9
|
-
|
10
|
-
it "Discover avs result code should equal A" do
|
11
|
-
charge = Hps::TestHelper.charge_valid_discover(91.01)
|
12
|
-
expect(charge.avs_result_code).to eql("A")
|
13
|
-
end
|
14
|
-
|
15
|
-
it "Discover avs result code should equal N" do
|
16
|
-
charge = Hps::TestHelper.charge_valid_discover(91.02)
|
17
|
-
expect(charge.avs_result_code).to eql("N")
|
18
|
-
end
|
19
|
-
|
20
|
-
it "Discover avs result code should equal U" do
|
21
|
-
charge = Hps::TestHelper.charge_valid_discover(91.05)
|
22
|
-
expect(charge.avs_result_code).to eql("U")
|
23
|
-
end
|
24
|
-
|
25
|
-
it "Discover avs result code should equal Y" do
|
26
|
-
charge = Hps::TestHelper.charge_valid_discover(91.06)
|
27
|
-
expect(charge.avs_result_code).to eql("Y")
|
28
|
-
end
|
29
|
-
|
30
|
-
it "Discover avs result code should equal Z" do
|
31
|
-
charge = Hps::TestHelper.charge_valid_discover(91.07)
|
32
|
-
expect(charge.avs_result_code).to eql("Z")
|
33
|
-
end
|
34
|
-
|
35
|
-
# discover to 2nd visa
|
36
|
-
|
37
|
-
it "Discover response code should indicate refer card issuer" do
|
38
|
-
expect {
|
39
|
-
Hps::TestHelper.charge_valid_discover(10.34)
|
40
|
-
}.to raise_error(Hps::CardException) { |error|
|
41
|
-
expect(error.code).to eql("card_declined")
|
42
|
-
expect(error.response_code).to eql("02")
|
43
|
-
expect(error.response_text).to eql("CALL")
|
44
|
-
}
|
45
|
-
end
|
46
|
-
|
47
|
-
it "Discover response code should indicate invalid merchant" do
|
48
|
-
expect {
|
49
|
-
Hps::TestHelper.charge_valid_discover(10.22)
|
50
|
-
}.to raise_error(Hps::CardException) { |error|
|
51
|
-
expect(error.code).to eql("card_declined")
|
52
|
-
expect(error.response_code).to eql("03")
|
53
|
-
expect(error.response_text).to eql("TERM ID ERROR")
|
54
|
-
}
|
55
|
-
end
|
56
|
-
|
57
|
-
it "Discover response code should indicate pickup card" do
|
58
|
-
expect {
|
59
|
-
Hps::TestHelper.charge_valid_discover(10.04)
|
60
|
-
}.to raise_error(Hps::CardException) { |error|
|
61
|
-
expect(error.code).to eql("card_declined")
|
62
|
-
expect(error.response_code).to eql("44")
|
63
|
-
expect(error.response_text).to eql("HOLD-CALL")
|
64
|
-
}
|
65
|
-
end
|
66
|
-
|
67
|
-
it "Discover response code should indicate do not honor" do
|
68
|
-
expect {
|
69
|
-
Hps::TestHelper.charge_valid_discover(10.25)
|
70
|
-
}.to raise_error(Hps::CardException) { |error|
|
71
|
-
expect(error.code).to eql("card_declined")
|
72
|
-
expect(error.response_code).to eql("05")
|
73
|
-
expect(error.response_text).to eql("DECLINE")
|
74
|
-
}
|
75
|
-
end
|
76
|
-
|
77
|
-
it "Discover response code should indicate invalid transaction" do
|
78
|
-
expect {
|
79
|
-
Hps::TestHelper.charge_valid_discover(10.26)
|
80
|
-
}.to raise_error(Hps::CardException) { |error|
|
81
|
-
expect(error.code).to eql("processing_error")
|
82
|
-
expect(error.response_code).to eql("12")
|
83
|
-
expect(error.response_text).to eql("INVALID TRANS")
|
84
|
-
}
|
85
|
-
end
|
86
|
-
|
87
|
-
it "Discover response code should indicate invalid amount" do
|
88
|
-
expect {
|
89
|
-
Hps::TestHelper.charge_valid_discover(10.27)
|
90
|
-
}.to raise_error(Hps::CardException) { |error|
|
91
|
-
expect(error.code).to eql("invalid_amount")
|
92
|
-
expect(error.response_code).to eql("13")
|
93
|
-
expect(error.response_text).to eql("AMOUNT ERROR")
|
94
|
-
}
|
95
|
-
end
|
96
|
-
|
97
|
-
it "Discover response code should indicate invalid card" do
|
98
|
-
expect {
|
99
|
-
Hps::TestHelper.charge_valid_discover(10.28)
|
100
|
-
}.to raise_error(Hps::CardException) { |error|
|
101
|
-
expect(error.code).to eql("incorrect_number")
|
102
|
-
expect(error.response_code).to eql("14")
|
103
|
-
expect(error.response_text).to eql("CARD NO. ERROR")
|
104
|
-
}
|
105
|
-
end
|
106
|
-
|
107
|
-
# TODO: Gateway change, used to raise exception but doesn't now
|
108
|
-
# it "Discover response code should indicate invalid issuer" do
|
109
|
-
# expect {
|
110
|
-
# Hps::TestHelper.charge_valid_discover(10.18)
|
111
|
-
# }.to raise_error(Hps::CardException) { |error|
|
112
|
-
# expect(error.code).to eql("processing_error")
|
113
|
-
# expect(error.response_code).to eql("15")
|
114
|
-
# expect(error.response_text).to eql("NO SUCH ISSUER")
|
115
|
-
# }
|
116
|
-
# end
|
117
|
-
|
118
|
-
it "Discover response code should indicate system error re-enter" do
|
119
|
-
expect {
|
120
|
-
Hps::TestHelper.charge_valid_discover(10.29)
|
121
|
-
}.to raise_error(Hps::CardException) { |error|
|
122
|
-
expect(error.code).to eql("processing_error")
|
123
|
-
expect(error.response_code).to eql("19")
|
124
|
-
expect(error.response_text).to eql("RE ENTER")
|
125
|
-
}
|
126
|
-
end
|
127
|
-
|
128
|
-
it "Discover response code should indicate message format error" do
|
129
|
-
expect {
|
130
|
-
Hps::TestHelper.charge_valid_discover(10.06)
|
131
|
-
}.to raise_error(Hps::CardException) { |error|
|
132
|
-
expect(error.code).to eql("processing_error")
|
133
|
-
expect(error.response_code).to eql("EC")
|
134
|
-
expect(error.response_text).to eql("CID FORMAT ERROR")
|
135
|
-
}
|
136
|
-
end
|
137
|
-
|
138
|
-
it "Discover response code should indicate lost card" do
|
139
|
-
expect {
|
140
|
-
Hps::TestHelper.charge_valid_discover(10.31)
|
141
|
-
}.to raise_error(Hps::CardException) { |error|
|
142
|
-
expect(error.code).to eql("card_declined")
|
143
|
-
expect(error.response_code).to eql("41")
|
144
|
-
expect(error.response_text).to eql("HOLD-CALL")
|
145
|
-
}
|
146
|
-
end
|
147
|
-
|
148
|
-
it "Discover response code should indicate insufficient funds" do
|
149
|
-
expect {
|
150
|
-
Hps::TestHelper.charge_valid_discover(10.08)
|
151
|
-
}.to raise_error(Hps::CardException) { |error|
|
152
|
-
expect(error.code).to eql("card_declined")
|
153
|
-
expect(error.response_code).to eql("05")
|
154
|
-
expect(error.response_text).to eql("DECLINE")
|
155
|
-
}
|
156
|
-
end
|
157
|
-
|
158
|
-
it "Discover response code should indicate no saving account" do
|
159
|
-
expect {
|
160
|
-
Hps::TestHelper.charge_valid_discover(10.17)
|
161
|
-
}.to raise_error(Hps::CardException) { |error|
|
162
|
-
expect(error.code).to eql("processing_error")
|
163
|
-
expect(error.response_code).to eql("53")
|
164
|
-
expect(error.response_text).to eql("NO SAVE ACCOUNT")
|
165
|
-
}
|
166
|
-
end
|
167
|
-
|
168
|
-
it "Discover response code should indicate expired card" do
|
169
|
-
expect {
|
170
|
-
Hps::TestHelper.charge_valid_discover(10.32)
|
171
|
-
}.to raise_error(Hps::CardException) { |error|
|
172
|
-
expect(error.code).to eql("expired_card")
|
173
|
-
expect(error.response_code).to eql("54")
|
174
|
-
expect(error.response_text).to eql("EXPIRED CARD")
|
175
|
-
}
|
176
|
-
end
|
177
|
-
|
178
|
-
it "Discover response code should indicate no card record" do
|
179
|
-
expect {
|
180
|
-
Hps::TestHelper.charge_valid_discover(10.24)
|
181
|
-
}.to raise_error(Hps::CardException) { |error|
|
182
|
-
expect(error.code).to eql("card_declined")
|
183
|
-
expect(error.response_code).to eql("56")
|
184
|
-
expect(error.response_text).to eql("INVALID TRANS")
|
185
|
-
}
|
186
|
-
end
|
187
|
-
|
188
|
-
it "Discover response code should indicate txn not permitted on card" do
|
189
|
-
expect {
|
190
|
-
Hps::TestHelper.charge_valid_discover(10.20)
|
191
|
-
}.to raise_error(Hps::CardException) { |error|
|
192
|
-
expect(error.code).to eql("processing_error")
|
193
|
-
expect(error.response_code).to eql("57")
|
194
|
-
expect(error.response_text).to eql("SERV NOT ALLOWED")
|
195
|
-
}
|
196
|
-
end
|
197
|
-
|
198
|
-
it "Discover response code should indicate invalid aquirer" do
|
199
|
-
expect {
|
200
|
-
Hps::TestHelper.charge_valid_discover(10.30)
|
201
|
-
}.to raise_error(Hps::CardException) { |error|
|
202
|
-
expect(error.code).to eql("processing_error")
|
203
|
-
expect(error.response_code).to eql("58")
|
204
|
-
expect(error.response_text).to eql("SERV NOT ALLOWED")
|
205
|
-
}
|
206
|
-
end
|
207
|
-
|
208
|
-
it "Discover response code should indicate exceeds limit" do
|
209
|
-
expect {
|
210
|
-
Hps::TestHelper.charge_valid_discover(10.09)
|
211
|
-
}.to raise_error(Hps::CardException) { |error|
|
212
|
-
expect(error.code).to eql("card_declined")
|
213
|
-
expect(error.response_code).to eql("61")
|
214
|
-
expect(error.response_text).to eql("DECLINE")
|
215
|
-
}
|
216
|
-
end
|
217
|
-
|
218
|
-
it "Discover response code should indicate restricted card" do
|
219
|
-
expect {
|
220
|
-
Hps::TestHelper.charge_valid_discover(10.10)
|
221
|
-
}.to raise_error(Hps::CardException) { |error|
|
222
|
-
expect(error.code).to eql("card_declined")
|
223
|
-
expect(error.response_code).to eql("62")
|
224
|
-
expect(error.response_text).to eql("DECLINE")
|
225
|
-
}
|
226
|
-
end
|
227
|
-
|
228
|
-
it "Discover response code should indicate security violation" do
|
229
|
-
expect {
|
230
|
-
Hps::TestHelper.charge_valid_discover(10.19)
|
231
|
-
}.to raise_error(Hps::CardException) { |error|
|
232
|
-
expect(error.code).to eql("card_declined")
|
233
|
-
expect(error.response_code).to eql("63")
|
234
|
-
expect(error.response_text).to eql("SEC VIOLATION")
|
235
|
-
}
|
236
|
-
end
|
237
|
-
|
238
|
-
it "Discover response code should indicate exceeds freq limit" do
|
239
|
-
expect {
|
240
|
-
Hps::TestHelper.charge_valid_discover(10.11)
|
241
|
-
}.to raise_error(Hps::CardException) { |error|
|
242
|
-
expect(error.code).to eql("card_declined")
|
243
|
-
expect(error.response_code).to eql("65")
|
244
|
-
expect(error.response_text).to eql("DECLINE")
|
245
|
-
}
|
246
|
-
end
|
247
|
-
|
248
|
-
it "Discover response code should indicate no account" do
|
249
|
-
expect {
|
250
|
-
Hps::TestHelper.charge_valid_discover(10.13)
|
251
|
-
}.to raise_error(Hps::CardException) { |error|
|
252
|
-
expect(error.code).to eql("card_declined")
|
253
|
-
expect(error.response_code).to eql("78")
|
254
|
-
expect(error.response_text).to eql("NO ACCOUNT")
|
255
|
-
}
|
256
|
-
end
|
257
|
-
|
258
|
-
it "Discover response code should indicate invalid account" do
|
259
|
-
expect {
|
260
|
-
Hps::TestHelper.charge_valid_discover(10.14)
|
261
|
-
}.to raise_error(Hps::CardException) { |error|
|
262
|
-
expect(error.code).to eql("incorrect_number")
|
263
|
-
expect(error.response_code).to eql("14")
|
264
|
-
expect(error.response_text).to eql("CARD NO. ERROR")
|
265
|
-
}
|
266
|
-
end
|
267
|
-
|
268
|
-
# TODO: Gateway change, used to throw exception but now it doesn't
|
269
|
-
# it "Discover response code should indicate switch not available" do
|
270
|
-
# expect {
|
271
|
-
# Hps::TestHelper.charge_valid_discover(10.33)
|
272
|
-
# }.to raise_error(Hps::HpsException) { |error|
|
273
|
-
# #}.to raise_error(Hps::CardException) { |error|
|
274
|
-
# #expect(error.code).to eql("processing_error")
|
275
|
-
# #expect(error.response_code).to eql("14")
|
276
|
-
# expect(error.code).to eql("issuer_timeout")
|
277
|
-
# expect(error.response_code).to eql("91")
|
278
|
-
# expect(error.response_text).to eql("NO REPLY")
|
279
|
-
# }
|
280
|
-
# end
|
281
|
-
|
282
|
-
it "Discover response code should indicate system error" do
|
283
|
-
expect {
|
284
|
-
Hps::TestHelper.charge_valid_discover(10.26)
|
285
|
-
}.to raise_error(Hps::CardException) { |error|
|
286
|
-
expect(error.code).to eql("processing_error")
|
287
|
-
# TODO: Gateway change
|
288
|
-
#expect(error.response_code).to eql("96")
|
289
|
-
#expect(error.response_text).to eql("SYSTEM ERROR")
|
290
|
-
expect(error.response_code).to eql("12")
|
291
|
-
expect(error.response_text).to eql("INVALID TRANS")
|
292
|
-
}
|
293
|
-
end
|
294
|
-
|
295
|
-
# Verify, Authorize, and Capture
|
296
|
-
|
297
|
-
it "Discover verify should return OK" do
|
298
|
-
service = Hps::HpsChargeService.new()
|
299
|
-
result = service.verify(Hps::TestData.valid_discover, Hps::TestData.valid_cardholder)
|
300
|
-
expect(result.response_code).to eql("85")
|
301
|
-
end
|
302
|
-
|
303
|
-
it "Discover authorize should return OK" do
|
304
|
-
service = Hps::HpsChargeService.new()
|
305
|
-
result = service.authorize(50.00, "usd", Hps::TestData.valid_discover, Hps::TestData.valid_cardholder)
|
306
|
-
expect(result.response_code).to eql("00")
|
307
|
-
end
|
308
|
-
|
309
|
-
it "Discover authorize and request token should return OK" do
|
310
|
-
service = Hps::HpsChargeService.new()
|
311
|
-
result = service.authorize(50.00, "usd", Hps::TestData.valid_discover, Hps::TestData.valid_cardholder, true)
|
312
|
-
expect(result.token_data.response_code).to eql("0")
|
313
|
-
expect(result.response_code).to eql("00")
|
314
|
-
end
|
315
|
-
|
316
|
-
it "Discover authorize and capture should return OK" do
|
317
|
-
service = Hps::HpsChargeService.new()
|
318
|
-
result = service.authorize(50.00, "usd", Hps::TestData.valid_discover, Hps::TestData.valid_cardholder)
|
319
|
-
expect(result.response_code).to eql("00")
|
320
|
-
|
321
|
-
capture_result = service.capture(result.transaction_id)
|
322
|
-
expect(capture_result.response_code).to eql("00")
|
323
|
-
end
|
324
|
-
|
325
|
-
it "Discover card present and reader not present" do
|
326
|
-
service = Hps::HpsChargeService.new()
|
327
|
-
card = Hps::TestData.valid_discover
|
328
|
-
card.card_present = true
|
329
|
-
result = service.charge(10.00, "usd", card, Hps::TestData.valid_cardholder)
|
330
|
-
expect(result.response_code).to eql("00")
|
331
|
-
end
|
332
|
-
|
333
|
-
it "Discover card present and reader present" do
|
334
|
-
service = Hps::HpsChargeService.new()
|
335
|
-
card = Hps::TestData.valid_discover
|
336
|
-
card.card_present = true
|
337
|
-
card.reader_present = true
|
338
|
-
result = service.charge(10.00, "usd", card, Hps::TestData.valid_cardholder)
|
339
|
-
expect(result.response_code).to eql("00")
|
340
|
-
end
|
341
|
-
|
342
|
-
it "Discover Dynamic Descriptor Authorize" do
|
343
|
-
service = Hps::HpsChargeService.new()
|
344
|
-
txn_descriptor = "Best Company Ever"
|
345
|
-
result = service.authorize(10.00, "usd", Hps::TestData.valid_discover, Hps::TestData.valid_cardholder, false, nil, txn_descriptor)
|
346
|
-
expect(result.response_code).to eql("00")
|
347
|
-
p result.transaction_id
|
348
|
-
end
|
349
|
-
|
350
|
-
it "Discover Dynamic Descriptor Charge" do
|
351
|
-
service = Hps::HpsChargeService.new()
|
352
|
-
txn_descriptor = "Best Company Ever"
|
353
|
-
result = service.charge(10.00, "usd", Hps::TestData.valid_discover, Hps::TestData.valid_cardholder, false, nil, txn_descriptor)
|
354
|
-
expect(result.response_code).to eql("00")
|
355
|
-
p result.transaction_id
|
356
|
-
end
|
357
|
-
|
358
|
-
it "should charge with discover swipe and txn descriptor" do
|
359
|
-
Hps::TestHelper.valid_multi_use_config
|
360
|
-
service = Hps::HpsChargeService.new
|
361
|
-
txn_descriptor = "Best Company Ever"
|
362
|
-
track_data = Hps::HpsTrackData.new
|
363
|
-
track_data.value = '%B6011000990156527^DIS TEST CARD^25121011000062111401?;6011000990156527=25121011000062111401?'
|
364
|
-
track_data.method_obtained = Hps::HpsTrackDataMethod::SWIPE
|
365
|
-
|
366
|
-
charge = service.charge_swipe(10.00, "usd", track_data, nil, 0, false, txn_descriptor)
|
367
|
-
|
368
|
-
expect(charge).to_not be_nil
|
369
|
-
expect(charge.response_code).to eql("00")
|
370
|
-
end
|
371
|
-
|
372
|
-
it "should authorize with discover swipe and txn descriptor" do
|
373
|
-
Hps::TestHelper.valid_multi_use_config
|
374
|
-
service = Hps::HpsChargeService.new
|
375
|
-
txn_descriptor = "Best Company Ever"
|
376
|
-
track_data = Hps::HpsTrackData.new
|
377
|
-
track_data.value = '%B6011000990156527^DIS TEST CARD^25121011000062111401?;6011000990156527=25121011000062111401?'
|
378
|
-
track_data.method_obtained = Hps::HpsTrackDataMethod::SWIPE
|
379
|
-
|
380
|
-
authorize = service.authorize_swipe(10.00, "usd", track_data, nil, 0, false, txn_descriptor)
|
381
|
-
|
382
|
-
expect(authorize).to_not be_nil
|
383
|
-
expect(authorize.response_code).to eql("00")
|
384
|
-
end
|
385
|
-
|
386
|
-
end
|
1
|
+
require File.join( File.dirname(__FILE__), "test_helper" )
|
2
|
+
|
3
|
+
describe "Discover Tests" do
|
4
|
+
|
5
|
+
it "Discover when card is ok should return valid result" do
|
6
|
+
charge = Hps::TestHelper.charge_valid_discover(50)
|
7
|
+
expect(charge.response_code).to eql("00")
|
8
|
+
end
|
9
|
+
|
10
|
+
it "Discover avs result code should equal A" do
|
11
|
+
charge = Hps::TestHelper.charge_valid_discover(91.01)
|
12
|
+
expect(charge.avs_result_code).to eql("A")
|
13
|
+
end
|
14
|
+
|
15
|
+
it "Discover avs result code should equal N" do
|
16
|
+
charge = Hps::TestHelper.charge_valid_discover(91.02)
|
17
|
+
expect(charge.avs_result_code).to eql("N")
|
18
|
+
end
|
19
|
+
|
20
|
+
it "Discover avs result code should equal U" do
|
21
|
+
charge = Hps::TestHelper.charge_valid_discover(91.05)
|
22
|
+
expect(charge.avs_result_code).to eql("U")
|
23
|
+
end
|
24
|
+
|
25
|
+
it "Discover avs result code should equal Y" do
|
26
|
+
charge = Hps::TestHelper.charge_valid_discover(91.06)
|
27
|
+
expect(charge.avs_result_code).to eql("Y")
|
28
|
+
end
|
29
|
+
|
30
|
+
it "Discover avs result code should equal Z" do
|
31
|
+
charge = Hps::TestHelper.charge_valid_discover(91.07)
|
32
|
+
expect(charge.avs_result_code).to eql("Z")
|
33
|
+
end
|
34
|
+
|
35
|
+
# discover to 2nd visa
|
36
|
+
|
37
|
+
it "Discover response code should indicate refer card issuer" do
|
38
|
+
expect {
|
39
|
+
Hps::TestHelper.charge_valid_discover(10.34)
|
40
|
+
}.to raise_error(Hps::CardException) { |error|
|
41
|
+
expect(error.code).to eql("card_declined")
|
42
|
+
expect(error.response_code).to eql("02")
|
43
|
+
expect(error.response_text).to eql("CALL")
|
44
|
+
}
|
45
|
+
end
|
46
|
+
|
47
|
+
it "Discover response code should indicate invalid merchant" do
|
48
|
+
expect {
|
49
|
+
Hps::TestHelper.charge_valid_discover(10.22)
|
50
|
+
}.to raise_error(Hps::CardException) { |error|
|
51
|
+
expect(error.code).to eql("card_declined")
|
52
|
+
expect(error.response_code).to eql("03")
|
53
|
+
expect(error.response_text).to eql("TERM ID ERROR")
|
54
|
+
}
|
55
|
+
end
|
56
|
+
|
57
|
+
it "Discover response code should indicate pickup card" do
|
58
|
+
expect {
|
59
|
+
Hps::TestHelper.charge_valid_discover(10.04)
|
60
|
+
}.to raise_error(Hps::CardException) { |error|
|
61
|
+
expect(error.code).to eql("card_declined")
|
62
|
+
expect(error.response_code).to eql("44")
|
63
|
+
expect(error.response_text).to eql("HOLD-CALL")
|
64
|
+
}
|
65
|
+
end
|
66
|
+
|
67
|
+
it "Discover response code should indicate do not honor" do
|
68
|
+
expect {
|
69
|
+
Hps::TestHelper.charge_valid_discover(10.25)
|
70
|
+
}.to raise_error(Hps::CardException) { |error|
|
71
|
+
expect(error.code).to eql("card_declined")
|
72
|
+
expect(error.response_code).to eql("05")
|
73
|
+
expect(error.response_text).to eql("DECLINE")
|
74
|
+
}
|
75
|
+
end
|
76
|
+
|
77
|
+
it "Discover response code should indicate invalid transaction" do
|
78
|
+
expect {
|
79
|
+
Hps::TestHelper.charge_valid_discover(10.26)
|
80
|
+
}.to raise_error(Hps::CardException) { |error|
|
81
|
+
expect(error.code).to eql("processing_error")
|
82
|
+
expect(error.response_code).to eql("12")
|
83
|
+
expect(error.response_text).to eql("INVALID TRANS")
|
84
|
+
}
|
85
|
+
end
|
86
|
+
|
87
|
+
it "Discover response code should indicate invalid amount" do
|
88
|
+
expect {
|
89
|
+
Hps::TestHelper.charge_valid_discover(10.27)
|
90
|
+
}.to raise_error(Hps::CardException) { |error|
|
91
|
+
expect(error.code).to eql("invalid_amount")
|
92
|
+
expect(error.response_code).to eql("13")
|
93
|
+
expect(error.response_text).to eql("AMOUNT ERROR")
|
94
|
+
}
|
95
|
+
end
|
96
|
+
|
97
|
+
it "Discover response code should indicate invalid card" do
|
98
|
+
expect {
|
99
|
+
Hps::TestHelper.charge_valid_discover(10.28)
|
100
|
+
}.to raise_error(Hps::CardException) { |error|
|
101
|
+
expect(error.code).to eql("incorrect_number")
|
102
|
+
expect(error.response_code).to eql("14")
|
103
|
+
expect(error.response_text).to eql("CARD NO. ERROR")
|
104
|
+
}
|
105
|
+
end
|
106
|
+
|
107
|
+
# TODO: Gateway change, used to raise exception but doesn't now
|
108
|
+
# it "Discover response code should indicate invalid issuer" do
|
109
|
+
# expect {
|
110
|
+
# Hps::TestHelper.charge_valid_discover(10.18)
|
111
|
+
# }.to raise_error(Hps::CardException) { |error|
|
112
|
+
# expect(error.code).to eql("processing_error")
|
113
|
+
# expect(error.response_code).to eql("15")
|
114
|
+
# expect(error.response_text).to eql("NO SUCH ISSUER")
|
115
|
+
# }
|
116
|
+
# end
|
117
|
+
|
118
|
+
it "Discover response code should indicate system error re-enter" do
|
119
|
+
expect {
|
120
|
+
Hps::TestHelper.charge_valid_discover(10.29)
|
121
|
+
}.to raise_error(Hps::CardException) { |error|
|
122
|
+
expect(error.code).to eql("processing_error")
|
123
|
+
expect(error.response_code).to eql("19")
|
124
|
+
expect(error.response_text).to eql("RE ENTER")
|
125
|
+
}
|
126
|
+
end
|
127
|
+
|
128
|
+
it "Discover response code should indicate message format error" do
|
129
|
+
expect {
|
130
|
+
Hps::TestHelper.charge_valid_discover(10.06)
|
131
|
+
}.to raise_error(Hps::CardException) { |error|
|
132
|
+
expect(error.code).to eql("processing_error")
|
133
|
+
expect(error.response_code).to eql("EC")
|
134
|
+
expect(error.response_text).to eql("CID FORMAT ERROR")
|
135
|
+
}
|
136
|
+
end
|
137
|
+
|
138
|
+
it "Discover response code should indicate lost card" do
|
139
|
+
expect {
|
140
|
+
Hps::TestHelper.charge_valid_discover(10.31)
|
141
|
+
}.to raise_error(Hps::CardException) { |error|
|
142
|
+
expect(error.code).to eql("card_declined")
|
143
|
+
expect(error.response_code).to eql("41")
|
144
|
+
expect(error.response_text).to eql("HOLD-CALL")
|
145
|
+
}
|
146
|
+
end
|
147
|
+
|
148
|
+
it "Discover response code should indicate insufficient funds" do
|
149
|
+
expect {
|
150
|
+
Hps::TestHelper.charge_valid_discover(10.08)
|
151
|
+
}.to raise_error(Hps::CardException) { |error|
|
152
|
+
expect(error.code).to eql("card_declined")
|
153
|
+
expect(error.response_code).to eql("05")
|
154
|
+
expect(error.response_text).to eql("DECLINE")
|
155
|
+
}
|
156
|
+
end
|
157
|
+
|
158
|
+
it "Discover response code should indicate no saving account" do
|
159
|
+
expect {
|
160
|
+
Hps::TestHelper.charge_valid_discover(10.17)
|
161
|
+
}.to raise_error(Hps::CardException) { |error|
|
162
|
+
expect(error.code).to eql("processing_error")
|
163
|
+
expect(error.response_code).to eql("53")
|
164
|
+
expect(error.response_text).to eql("NO SAVE ACCOUNT")
|
165
|
+
}
|
166
|
+
end
|
167
|
+
|
168
|
+
it "Discover response code should indicate expired card" do
|
169
|
+
expect {
|
170
|
+
Hps::TestHelper.charge_valid_discover(10.32)
|
171
|
+
}.to raise_error(Hps::CardException) { |error|
|
172
|
+
expect(error.code).to eql("expired_card")
|
173
|
+
expect(error.response_code).to eql("54")
|
174
|
+
expect(error.response_text).to eql("EXPIRED CARD")
|
175
|
+
}
|
176
|
+
end
|
177
|
+
|
178
|
+
it "Discover response code should indicate no card record" do
|
179
|
+
expect {
|
180
|
+
Hps::TestHelper.charge_valid_discover(10.24)
|
181
|
+
}.to raise_error(Hps::CardException) { |error|
|
182
|
+
expect(error.code).to eql("card_declined")
|
183
|
+
expect(error.response_code).to eql("56")
|
184
|
+
expect(error.response_text).to eql("INVALID TRANS")
|
185
|
+
}
|
186
|
+
end
|
187
|
+
|
188
|
+
it "Discover response code should indicate txn not permitted on card" do
|
189
|
+
expect {
|
190
|
+
Hps::TestHelper.charge_valid_discover(10.20)
|
191
|
+
}.to raise_error(Hps::CardException) { |error|
|
192
|
+
expect(error.code).to eql("processing_error")
|
193
|
+
expect(error.response_code).to eql("57")
|
194
|
+
expect(error.response_text).to eql("SERV NOT ALLOWED")
|
195
|
+
}
|
196
|
+
end
|
197
|
+
|
198
|
+
it "Discover response code should indicate invalid aquirer" do
|
199
|
+
expect {
|
200
|
+
Hps::TestHelper.charge_valid_discover(10.30)
|
201
|
+
}.to raise_error(Hps::CardException) { |error|
|
202
|
+
expect(error.code).to eql("processing_error")
|
203
|
+
expect(error.response_code).to eql("58")
|
204
|
+
expect(error.response_text).to eql("SERV NOT ALLOWED")
|
205
|
+
}
|
206
|
+
end
|
207
|
+
|
208
|
+
it "Discover response code should indicate exceeds limit" do
|
209
|
+
expect {
|
210
|
+
Hps::TestHelper.charge_valid_discover(10.09)
|
211
|
+
}.to raise_error(Hps::CardException) { |error|
|
212
|
+
expect(error.code).to eql("card_declined")
|
213
|
+
expect(error.response_code).to eql("61")
|
214
|
+
expect(error.response_text).to eql("DECLINE")
|
215
|
+
}
|
216
|
+
end
|
217
|
+
|
218
|
+
it "Discover response code should indicate restricted card" do
|
219
|
+
expect {
|
220
|
+
Hps::TestHelper.charge_valid_discover(10.10)
|
221
|
+
}.to raise_error(Hps::CardException) { |error|
|
222
|
+
expect(error.code).to eql("card_declined")
|
223
|
+
expect(error.response_code).to eql("62")
|
224
|
+
expect(error.response_text).to eql("DECLINE")
|
225
|
+
}
|
226
|
+
end
|
227
|
+
|
228
|
+
it "Discover response code should indicate security violation" do
|
229
|
+
expect {
|
230
|
+
Hps::TestHelper.charge_valid_discover(10.19)
|
231
|
+
}.to raise_error(Hps::CardException) { |error|
|
232
|
+
expect(error.code).to eql("card_declined")
|
233
|
+
expect(error.response_code).to eql("63")
|
234
|
+
expect(error.response_text).to eql("SEC VIOLATION")
|
235
|
+
}
|
236
|
+
end
|
237
|
+
|
238
|
+
it "Discover response code should indicate exceeds freq limit" do
|
239
|
+
expect {
|
240
|
+
Hps::TestHelper.charge_valid_discover(10.11)
|
241
|
+
}.to raise_error(Hps::CardException) { |error|
|
242
|
+
expect(error.code).to eql("card_declined")
|
243
|
+
expect(error.response_code).to eql("65")
|
244
|
+
expect(error.response_text).to eql("DECLINE")
|
245
|
+
}
|
246
|
+
end
|
247
|
+
|
248
|
+
it "Discover response code should indicate no account" do
|
249
|
+
expect {
|
250
|
+
Hps::TestHelper.charge_valid_discover(10.13)
|
251
|
+
}.to raise_error(Hps::CardException) { |error|
|
252
|
+
expect(error.code).to eql("card_declined")
|
253
|
+
expect(error.response_code).to eql("78")
|
254
|
+
expect(error.response_text).to eql("NO ACCOUNT")
|
255
|
+
}
|
256
|
+
end
|
257
|
+
|
258
|
+
it "Discover response code should indicate invalid account" do
|
259
|
+
expect {
|
260
|
+
Hps::TestHelper.charge_valid_discover(10.14)
|
261
|
+
}.to raise_error(Hps::CardException) { |error|
|
262
|
+
expect(error.code).to eql("incorrect_number")
|
263
|
+
expect(error.response_code).to eql("14")
|
264
|
+
expect(error.response_text).to eql("CARD NO. ERROR")
|
265
|
+
}
|
266
|
+
end
|
267
|
+
|
268
|
+
# TODO: Gateway change, used to throw exception but now it doesn't
|
269
|
+
# it "Discover response code should indicate switch not available" do
|
270
|
+
# expect {
|
271
|
+
# Hps::TestHelper.charge_valid_discover(10.33)
|
272
|
+
# }.to raise_error(Hps::HpsException) { |error|
|
273
|
+
# #}.to raise_error(Hps::CardException) { |error|
|
274
|
+
# #expect(error.code).to eql("processing_error")
|
275
|
+
# #expect(error.response_code).to eql("14")
|
276
|
+
# expect(error.code).to eql("issuer_timeout")
|
277
|
+
# expect(error.response_code).to eql("91")
|
278
|
+
# expect(error.response_text).to eql("NO REPLY")
|
279
|
+
# }
|
280
|
+
# end
|
281
|
+
|
282
|
+
it "Discover response code should indicate system error" do
|
283
|
+
expect {
|
284
|
+
Hps::TestHelper.charge_valid_discover(10.26)
|
285
|
+
}.to raise_error(Hps::CardException) { |error|
|
286
|
+
expect(error.code).to eql("processing_error")
|
287
|
+
# TODO: Gateway change
|
288
|
+
#expect(error.response_code).to eql("96")
|
289
|
+
#expect(error.response_text).to eql("SYSTEM ERROR")
|
290
|
+
expect(error.response_code).to eql("12")
|
291
|
+
expect(error.response_text).to eql("INVALID TRANS")
|
292
|
+
}
|
293
|
+
end
|
294
|
+
|
295
|
+
# Verify, Authorize, and Capture
|
296
|
+
|
297
|
+
it "Discover verify should return OK" do
|
298
|
+
service = Hps::HpsChargeService.new()
|
299
|
+
result = service.verify(Hps::TestData.valid_discover, Hps::TestData.valid_cardholder)
|
300
|
+
expect(result.response_code).to eql("85")
|
301
|
+
end
|
302
|
+
|
303
|
+
it "Discover authorize should return OK" do
|
304
|
+
service = Hps::HpsChargeService.new()
|
305
|
+
result = service.authorize(50.00, "usd", Hps::TestData.valid_discover, Hps::TestData.valid_cardholder)
|
306
|
+
expect(result.response_code).to eql("00")
|
307
|
+
end
|
308
|
+
|
309
|
+
it "Discover authorize and request token should return OK" do
|
310
|
+
service = Hps::HpsChargeService.new()
|
311
|
+
result = service.authorize(50.00, "usd", Hps::TestData.valid_discover, Hps::TestData.valid_cardholder, true)
|
312
|
+
expect(result.token_data.response_code).to eql("0")
|
313
|
+
expect(result.response_code).to eql("00")
|
314
|
+
end
|
315
|
+
|
316
|
+
it "Discover authorize and capture should return OK" do
|
317
|
+
service = Hps::HpsChargeService.new()
|
318
|
+
result = service.authorize(50.00, "usd", Hps::TestData.valid_discover, Hps::TestData.valid_cardholder)
|
319
|
+
expect(result.response_code).to eql("00")
|
320
|
+
|
321
|
+
capture_result = service.capture(result.transaction_id)
|
322
|
+
expect(capture_result.response_code).to eql("00")
|
323
|
+
end
|
324
|
+
|
325
|
+
it "Discover card present and reader not present" do
|
326
|
+
service = Hps::HpsChargeService.new()
|
327
|
+
card = Hps::TestData.valid_discover
|
328
|
+
card.card_present = true
|
329
|
+
result = service.charge(10.00, "usd", card, Hps::TestData.valid_cardholder)
|
330
|
+
expect(result.response_code).to eql("00")
|
331
|
+
end
|
332
|
+
|
333
|
+
it "Discover card present and reader present" do
|
334
|
+
service = Hps::HpsChargeService.new()
|
335
|
+
card = Hps::TestData.valid_discover
|
336
|
+
card.card_present = true
|
337
|
+
card.reader_present = true
|
338
|
+
result = service.charge(10.00, "usd", card, Hps::TestData.valid_cardholder)
|
339
|
+
expect(result.response_code).to eql("00")
|
340
|
+
end
|
341
|
+
|
342
|
+
it "Discover Dynamic Descriptor Authorize" do
|
343
|
+
service = Hps::HpsChargeService.new()
|
344
|
+
txn_descriptor = "Best Company Ever"
|
345
|
+
result = service.authorize(10.00, "usd", Hps::TestData.valid_discover, Hps::TestData.valid_cardholder, false, nil, txn_descriptor)
|
346
|
+
expect(result.response_code).to eql("00")
|
347
|
+
p result.transaction_id
|
348
|
+
end
|
349
|
+
|
350
|
+
it "Discover Dynamic Descriptor Charge" do
|
351
|
+
service = Hps::HpsChargeService.new()
|
352
|
+
txn_descriptor = "Best Company Ever"
|
353
|
+
result = service.charge(10.00, "usd", Hps::TestData.valid_discover, Hps::TestData.valid_cardholder, false, nil, txn_descriptor)
|
354
|
+
expect(result.response_code).to eql("00")
|
355
|
+
p result.transaction_id
|
356
|
+
end
|
357
|
+
|
358
|
+
it "should charge with discover swipe and txn descriptor" do
|
359
|
+
Hps::TestHelper.valid_multi_use_config
|
360
|
+
service = Hps::HpsChargeService.new
|
361
|
+
txn_descriptor = "Best Company Ever"
|
362
|
+
track_data = Hps::HpsTrackData.new
|
363
|
+
track_data.value = '%B6011000990156527^DIS TEST CARD^25121011000062111401?;6011000990156527=25121011000062111401?'
|
364
|
+
track_data.method_obtained = Hps::HpsTrackDataMethod::SWIPE
|
365
|
+
|
366
|
+
charge = service.charge_swipe(10.00, "usd", track_data, nil, 0, false, txn_descriptor)
|
367
|
+
|
368
|
+
expect(charge).to_not be_nil
|
369
|
+
expect(charge.response_code).to eql("00")
|
370
|
+
end
|
371
|
+
|
372
|
+
it "should authorize with discover swipe and txn descriptor" do
|
373
|
+
Hps::TestHelper.valid_multi_use_config
|
374
|
+
service = Hps::HpsChargeService.new
|
375
|
+
txn_descriptor = "Best Company Ever"
|
376
|
+
track_data = Hps::HpsTrackData.new
|
377
|
+
track_data.value = '%B6011000990156527^DIS TEST CARD^25121011000062111401?;6011000990156527=25121011000062111401?'
|
378
|
+
track_data.method_obtained = Hps::HpsTrackDataMethod::SWIPE
|
379
|
+
|
380
|
+
authorize = service.authorize_swipe(10.00, "usd", track_data, nil, 0, false, txn_descriptor)
|
381
|
+
|
382
|
+
expect(authorize).to_not be_nil
|
383
|
+
expect(authorize.response_code).to eql("00")
|
384
|
+
end
|
385
|
+
|
386
|
+
end
|