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.
Files changed (82) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +4 -4
  3. data/Gemfile.lock +59 -0
  4. data/LICENSE.md +264 -264
  5. data/PRIVACY.txt +65 -65
  6. data/README.md +213 -213
  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 -27
  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 -133
  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 -547
  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 -145
  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 -301
  61. data/lib/hps/services/hps_service.rb +141 -136
  62. data/lib/hps/version.rb +3 -3
  63. data/lib/hps.rb +63 -63
  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 +106 -106
  68. data/tests/certification/gift_card_certification_tests.rb +107 -107
  69. data/tests/check_tests.rb +50 -50
  70. data/tests/discover_tests.rb +386 -386
  71. data/tests/exception_mapper_tests.rb +311 -311
  72. data/tests/general_tests.rb +140 -140
  73. data/tests/giftcard_tests.rb +212 -212
  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 -138
  79. data/tests/test_helper.rb +179 -179
  80. data/tests/token_tests.rb +512 -512
  81. data/tests/visa_tests.rb +445 -445
  82. metadata +31 -11
@@ -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