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
data/tests/visa_tests.rb CHANGED
@@ -1,445 +1,445 @@
1
- require File.join( File.dirname(__FILE__), "test_helper" )
2
-
3
- describe "Visa Tests" do
4
-
5
- it "Visa when card is ok, should return valid result" do
6
- charge = Hps::TestHelper.charge_valid_visa(50)
7
- expect(charge.response_code).to eql("00")
8
- end
9
-
10
- # avs tests
11
-
12
- # TODO: Gateway changed
13
- it "Visa avs result code should equal B" do
14
- charge = Hps::TestHelper.charge_valid_visa(90.01)
15
- #expect(charge.avs_result_code).to eql("B")
16
- expect(charge.avs_result_code).to eql("0")
17
- end
18
-
19
- # TODO: Gateway changed
20
- it "Visa avs result code should equal C" do
21
- charge = Hps::TestHelper.charge_valid_visa(90.02)
22
- #expect(charge.avs_result_code).to eql("C")
23
- expect(charge.avs_result_code).to eql("0")
24
- end
25
-
26
- # TODO: Gateway changed
27
- it "Visa avs result code should equal D" do
28
- charge = Hps::TestHelper.charge_valid_visa(90.03)
29
- #expect(charge.avs_result_code).to eql("D")
30
- expect(charge.avs_result_code).to eql("0")
31
- end
32
-
33
- # TODO: Gateway changed
34
- it "Visa avs result code should equal I" do
35
- charge = Hps::TestHelper.charge_valid_visa(90.05)
36
- #expect(charge.avs_result_code).to eql("I")
37
- expect(charge.avs_result_code).to eql("0")
38
- end
39
-
40
- # TODO: Gateway changed
41
- it "Visa avs result code should equal M" do
42
- charge = Hps::TestHelper.charge_valid_visa(90.06)
43
- #expect(charge.avs_result_code).to eql("M")
44
- expect(charge.avs_result_code).to eql("0")
45
- end
46
-
47
- # TODO: Gateway changed
48
- it "Visa avs result code should equal P" do
49
- charge = Hps::TestHelper.charge_valid_visa(90.07)
50
- #expect(charge.avs_result_code).to eql("P")
51
- expect(charge.avs_result_code).to eql("0")
52
- end
53
-
54
- # cvv tests
55
-
56
- it "Visa cvv result code should equal M" do
57
- charge = Hps::TestHelper.charge_valid_visa(96.01)
58
- expect(charge.cvv_result_code).to eql("M")
59
- end
60
-
61
- it "Visa cvv result code should equal N" do
62
- charge = Hps::TestHelper.charge_valid_visa(96.02)
63
- expect(charge.cvv_result_code).to eql("N")
64
- end
65
-
66
- it "Visa cvv result code should equal P" do
67
- charge = Hps::TestHelper.charge_valid_visa(96.03)
68
- expect(charge.cvv_result_code).to eql("P")
69
- end
70
-
71
- it "Visa cvv result code should equal S" do
72
- charge = Hps::TestHelper.charge_valid_visa(96.04)
73
- expect(charge.cvv_result_code).to eql("S")
74
- end
75
-
76
- it "Visa cvv result code should equal U" do
77
- charge = Hps::TestHelper.charge_valid_visa(96.05)
78
- expect(charge.cvv_result_code).to eql("U")
79
- end
80
-
81
- # visa to visa 2nd
82
-
83
- it "Visa response code should indicate refer card issuer" do
84
- expect {
85
- Hps::TestHelper.charge_valid_visa(10.34)
86
- }.to raise_error(Hps::CardException) { |error|
87
- expect(error.code).to eql("card_declined")
88
- expect(error.response_code).to eql("02")
89
- expect(error.response_text).to eql("CALL")
90
- }
91
- end
92
-
93
- it "Visa response code should indicate invalid merchant" do
94
- expect {
95
- Hps::TestHelper.charge_valid_visa(10.22)
96
- }.to raise_error(Hps::CardException) { |error|
97
- expect(error.code).to eql("card_declined")
98
- expect(error.response_code).to eql("03")
99
- expect(error.response_text).to eql("TERM ID ERROR")
100
- }
101
- end
102
-
103
- it "Visa response code should indicate pickup card" do
104
- expect {
105
- Hps::TestHelper.charge_valid_visa(10.04)
106
- }.to raise_error(Hps::CardException) { |error|
107
- expect(error.code).to eql("card_declined")
108
- expect(error.response_code).to eql("44")
109
- expect(error.response_text).to eql("HOLD-CALL")
110
- }
111
- end
112
-
113
- it "Visa response code should indicate do not honor" do
114
- expect {
115
- Hps::TestHelper.charge_valid_visa(10.25)
116
- }.to raise_error(Hps::CardException) { |error|
117
- expect(error.code).to eql("card_declined")
118
- expect(error.response_code).to eql("05")
119
- expect(error.response_text).to eql("DECLINE")
120
- }
121
- end
122
-
123
- it "Visa response code should indicate invalid transaction" do
124
- expect {
125
- Hps::TestHelper.charge_valid_visa(10.26)
126
- }.to raise_error(Hps::CardException) { |error|
127
- expect(error.code).to eql("processing_error")
128
- expect(error.response_code).to eql("12")
129
- expect(error.response_text).to eql("INVALID TRANS")
130
- }
131
- end
132
-
133
- it "Visa response code should indicate invalid amount" do
134
- expect {
135
- Hps::TestHelper.charge_valid_visa(10.27)
136
- }.to raise_error(Hps::CardException) { |error|
137
- expect(error.code).to eql("invalid_amount")
138
- expect(error.response_code).to eql("13")
139
- expect(error.response_text).to eql("AMOUNT ERROR")
140
- }
141
- end
142
-
143
- it "Visa response code should indicate invalid card" do
144
- expect {
145
- Hps::TestHelper.charge_valid_visa(10.28)
146
- }.to raise_error(Hps::CardException) { |error|
147
- expect(error.code).to eql("incorrect_number")
148
- expect(error.response_code).to eql("14")
149
- expect(error.response_text).to eql("CARD NO. ERROR")
150
- }
151
- end
152
-
153
- it "Visa response code should indicate invalid issuer" do
154
- expect {
155
- Hps::TestHelper.charge_valid_visa(10.18)
156
- }.to raise_error(Hps::CardException) { |error|
157
- expect(error.code).to eql("processing_error")
158
- expect(error.response_code).to eql("15")
159
- expect(error.response_text).to eql("NO SUCH ISSUER")
160
- }
161
- end
162
-
163
- it "Visa response code should indicate system error re-enter" do
164
- expect {
165
- Hps::TestHelper.charge_valid_visa(10.29)
166
- }.to raise_error(Hps::CardException) { |error|
167
- expect(error.code).to eql("processing_error")
168
- expect(error.response_code).to eql("19")
169
- expect(error.response_text).to eql("RE ENTER")
170
- }
171
- end
172
-
173
- it "Visa response code should indicate lost card" do
174
- expect {
175
- Hps::TestHelper.charge_valid_visa(10.31)
176
- }.to raise_error(Hps::CardException) { |error|
177
- expect(error.code).to eql("card_declined")
178
- expect(error.response_code).to eql("41")
179
- expect(error.response_text).to eql("HOLD-CALL")
180
- }
181
- end
182
-
183
- it "Visa response code should indicate hot card pickup" do
184
- expect {
185
- Hps::TestHelper.charge_valid_visa(10.03)
186
- }.to raise_error(Hps::CardException) { |error|
187
- expect(error.code).to eql("card_declined")
188
- expect(error.response_code).to eql("43")
189
- expect(error.response_text).to eql("HOLD-CALL")
190
- }
191
- end
192
-
193
- it "Visa response code should indicate insufficient fund" do
194
- expect {
195
- Hps::TestHelper.charge_valid_visa(10.08)
196
- }.to raise_error(Hps::CardException) { |error|
197
- expect(error.code).to eql("card_declined")
198
- # TODO: Gateway changed
199
- #expect(error.response_code).to eql("05")
200
- expect(error.response_code).to eql("51")
201
- expect(error.response_text).to eql("DECLINE")
202
- }
203
- end
204
-
205
- it "Visa response code should indicate no checking account" do
206
- expect {
207
- Hps::TestHelper.charge_valid_visa(10.16)
208
- }.to raise_error(Hps::CardException) { |error|
209
- expect(error.code).to eql("processing_error")
210
- expect(error.response_code).to eql("52")
211
- expect(error.response_text).to eql("NO CHECK ACCOUNT")
212
- }
213
- end
214
-
215
- it "Visa response code should indicate no savings account" do
216
- expect {
217
- Hps::TestHelper.charge_valid_visa(10.17)
218
- }.to raise_error(Hps::CardException) { |error|
219
- expect(error.code).to eql("processing_error")
220
- expect(error.response_code).to eql("53")
221
- expect(error.response_text).to eql("NO SAVE ACCOUNT")
222
- }
223
- end
224
-
225
- it "Visa response code should indicate expired card" do
226
- expect {
227
- Hps::TestHelper.charge_valid_visa(10.32)
228
- }.to raise_error(Hps::CardException) { |error|
229
- expect(error.code).to eql("expired_card")
230
- expect(error.response_code).to eql("54")
231
- expect(error.response_text).to eql("EXPIRED CARD")
232
- }
233
- end
234
-
235
- it "Visa response code should indicate txn not permitted on card card" do
236
- expect {
237
- Hps::TestHelper.charge_valid_visa(10.20)
238
- }.to raise_error(Hps::CardException) { |error|
239
- # TODO: Gateway changed
240
- #expect(error.code).to eql("processing_error")
241
- #expect(error.response_code).to eql("57")
242
- #expect(error.response_text).to eql("SERV NOT ALLOWED")
243
- expect(error.code).to eql("unknown_card_exception")
244
- expect(error.response_code).to eql("R1")
245
- expect(error.response_text).to eql("STOP RECURRING")
246
- }
247
- end
248
-
249
- it "Visa response code should indicate invalid acquirer" do
250
- expect {
251
- Hps::TestHelper.charge_valid_visa(10.30)
252
- }.to raise_error(Hps::CardException) { |error|
253
- expect(error.code).to eql("processing_error")
254
- expect(error.response_code).to eql("58")
255
- expect(error.response_text).to eql("SERV NOT ALLOWED")
256
- }
257
- end
258
-
259
- it "Visa response code should indicate exceeds limit" do
260
- expect {
261
- Hps::TestHelper.charge_valid_visa(10.09)
262
- }.to raise_error(Hps::CardException) { |error|
263
- expect(error.code).to eql("card_declined")
264
- expect(error.response_code).to eql("61")
265
- expect(error.response_text).to eql("DECLINE")
266
- }
267
- end
268
-
269
- it "Visa response code should indicate restricted card" do
270
- expect {
271
- Hps::TestHelper.charge_valid_visa(10.10)
272
- }.to raise_error(Hps::CardException) { |error|
273
- expect(error.code).to eql("card_declined")
274
- expect(error.response_code).to eql("62")
275
- expect(error.response_text).to eql("DECLINE")
276
- }
277
- end
278
-
279
- it "Visa response code should indicate security violation" do
280
- expect {
281
- Hps::TestHelper.charge_valid_visa(10.11)
282
- }.to raise_error(Hps::CardException) { |error|
283
- expect(error.code).to eql("card_declined")
284
- expect(error.response_code).to eql("65")
285
- expect(error.response_text).to eql("DECLINE")
286
- }
287
- end
288
-
289
- it "Visa response code should indicate check digit error" do
290
- expect {
291
- Hps::TestHelper.charge_valid_visa(10.05)
292
- }.to raise_error(Hps::CardException) { |error|
293
- expect(error.code).to eql("incorrect_cvc")
294
- expect(error.response_code).to eql("EB")
295
- expect(error.response_text).to eql("CHECK DIGIT ERR")
296
- }
297
- end
298
-
299
- it "Visa response code should indicate switch not available" do
300
- expect {
301
- Hps::TestHelper.charge_valid_visa(10.33)
302
- }.to raise_error(Hps::HpsException) { |error|
303
- #}.to raise_error(Hps::CardException) { |error|
304
- #expect(error.code).to eql("processing_error")
305
- #expect(error.response_code).to eql("14")
306
- expect(error.code).to eql("issuer_timeout")
307
- expect(error.response_code).to eql("91")
308
- expect(error.response_text).to eql("NO REPLY")
309
- }
310
- end
311
-
312
- it "Visa response code should indicate system error" do
313
- expect {
314
- Hps::TestHelper.charge_valid_visa(10.21)
315
- }.to raise_error(Hps::CardException) { |error|
316
- expect(error.code).to eql("processing_error")
317
- expect(error.response_code).to eql("96")
318
- expect(error.response_text).to eql("SYSTEM ERROR")
319
- }
320
- end
321
-
322
- it "Visa response code should indicate CVV2 mismatch" do
323
- expect {
324
- Hps::TestHelper.charge_valid_visa(10.23)
325
- }.to raise_error(Hps::CardException) { |error|
326
- expect(error.code).to eql("incorrect_cvc")
327
- expect(error.response_code).to eql("N7")
328
- expect(error.response_text).to eql("CVV2 MISMATCH")
329
- }
330
- end
331
-
332
- # verify, authorize, refund, and capture
333
-
334
- it "Visa verify should return OK" do
335
- service = Hps::HpsChargeService.new()
336
- result = service.verify(Hps::TestData.valid_visa, Hps::TestData.valid_cardholder)
337
- expect(result.response_code).to eql("85")
338
- end
339
-
340
- it "Visa verify should return Token" do
341
- service = Hps::HpsChargeService.new()
342
- result = service.verify(Hps::TestData.valid_visa, Hps::TestData.valid_cardholder,true)
343
- expect(result.response_code).to eql("85")
344
- expect(result.token_data.response_message).to eql("Success")
345
- expect(result.token_data.token_value).to_not eql(nil)
346
-
347
- end
348
-
349
- it "Visa authorize should return OK" do
350
- service = Hps::HpsChargeService.new()
351
- result = service.authorize(50.00, "usd", Hps::TestData.valid_visa, Hps::TestData.valid_cardholder)
352
- expect(result.response_code).to eql("00")
353
- end
354
-
355
- it "Visa authorize and request token should return OK" do
356
- service = Hps::HpsChargeService.new()
357
- result = service.authorize(50.00, "usd", Hps::TestData.valid_visa, Hps::TestData.valid_cardholder, true)
358
- expect(result.token_data.response_code).to eql("0")
359
- expect(result.response_code).to eql("00")
360
- end
361
-
362
- it "Visa should refund OK" do
363
- service = Hps::HpsChargeService.new()
364
- charge = service.charge(25.00, "usd", Hps::TestData.valid_visa, Hps::TestData.valid_cardholder)
365
- refund = service.refund_transaction(25.00, "usd", charge.transaction_id)
366
- expect(refund.response_code).to eql("00")
367
- end
368
-
369
- it "Visa authorize and capture should return OK" do
370
- service = Hps::HpsChargeService.new()
371
- result = service.authorize(50.00, "usd", Hps::TestData.valid_visa, Hps::TestData.valid_cardholder)
372
- expect(result.response_code).to eql("00")
373
-
374
- capture_result = service.capture(result.transaction_id)
375
- expect(capture_result.response_code).to eql("00")
376
- end
377
-
378
- # Card Present
379
-
380
- it "Visa card present and reader not present" do
381
- Hps::TestHelper.valid_multi_use_config
382
- service = Hps::HpsChargeService.new()
383
- card = Hps::TestData.valid_visa
384
- card.card_present = true
385
- result = service.charge(10.00, "usd", card, Hps::TestData.valid_cardholder)
386
- expect(result.response_code).to eql("00")
387
- end
388
-
389
- it "Visa card present and reader present" do
390
- Hps::TestHelper.valid_multi_use_config
391
- service = Hps::HpsChargeService.new()
392
- card = Hps::TestData.valid_visa
393
- card.card_present = true
394
- card.reader_present = true
395
- result = service.charge(10.00, "usd", card, Hps::TestData.valid_cardholder)
396
- expect(result.response_code).to eql("00")
397
- end
398
-
399
- it "Visa Dynamic Descriptor Authorize" do
400
- Hps::TestHelper.valid_multi_use_config
401
- service = Hps::HpsChargeService.new()
402
- txn_descriptor = "Best Company Ever"
403
- result = service.authorize(10.00, "usd", Hps::TestData.valid_visa, Hps::TestData.valid_cardholder, false, nil, txn_descriptor)
404
- expect(result.response_code).to eql("00")
405
- p result.transaction_id
406
- end
407
-
408
- it "Visa Dynamic Descriptor Charge" do
409
- Hps::TestHelper.valid_multi_use_config
410
- service = Hps::HpsChargeService.new()
411
- txn_descriptor = "Best Company Ever"
412
- result = service.charge(10.00, "usd", Hps::TestData.valid_visa, Hps::TestData.valid_cardholder, false, nil, txn_descriptor)
413
- expect(result.response_code).to eql("00")
414
- p result.transaction_id
415
- end
416
-
417
- it "should charge with visa swipe and txn descriptor" do
418
- Hps::TestHelper.valid_multi_use_config
419
- service = Hps::HpsChargeService.new
420
- txn_descriptor = "Best Company Ever"
421
- track_data = Hps::HpsTrackData.new
422
- track_data.value = '%B4012002000060016^VI TEST CREDIT^251210118039000000000396?;4012002000060016=25121011803939600000?'
423
- track_data.method_obtained = Hps::HpsTrackDataMethod::SWIPE
424
-
425
- charge = service.charge_swipe(10.00, "usd", track_data, nil, 0, false, txn_descriptor)
426
-
427
- expect(charge).to_not be_nil
428
- expect(charge.response_code).to eql("00")
429
- end
430
-
431
- it "should authorize with visa swipe and txn descriptor" do
432
- Hps::TestHelper.valid_multi_use_config
433
- service = Hps::HpsChargeService.new
434
- txn_descriptor = "Best Company Ever"
435
- track_data = Hps::HpsTrackData.new
436
- track_data.value = '%B4012002000060016^VI TEST CREDIT^251210118039000000000396?;4012002000060016=25121011803939600000?'
437
- track_data.method_obtained = Hps::HpsTrackDataMethod::SWIPE
438
-
439
- authorize = service.authorize_swipe(10.00, "usd", track_data, nil, 0, false, txn_descriptor)
440
-
441
- expect(authorize).to_not be_nil
442
- expect(authorize.response_code).to eql("00")
443
- end
444
-
445
- end
1
+ require File.join( File.dirname(__FILE__), "test_helper" )
2
+
3
+ describe "Visa Tests" do
4
+
5
+ it "Visa when card is ok, should return valid result" do
6
+ charge = Hps::TestHelper.charge_valid_visa(50)
7
+ expect(charge.response_code).to eql("00")
8
+ end
9
+
10
+ # avs tests
11
+
12
+ # TODO: Gateway changed
13
+ it "Visa avs result code should equal B" do
14
+ charge = Hps::TestHelper.charge_valid_visa(90.01)
15
+ #expect(charge.avs_result_code).to eql("B")
16
+ expect(charge.avs_result_code).to eql("0")
17
+ end
18
+
19
+ # TODO: Gateway changed
20
+ it "Visa avs result code should equal C" do
21
+ charge = Hps::TestHelper.charge_valid_visa(90.02)
22
+ #expect(charge.avs_result_code).to eql("C")
23
+ expect(charge.avs_result_code).to eql("0")
24
+ end
25
+
26
+ # TODO: Gateway changed
27
+ it "Visa avs result code should equal D" do
28
+ charge = Hps::TestHelper.charge_valid_visa(90.03)
29
+ #expect(charge.avs_result_code).to eql("D")
30
+ expect(charge.avs_result_code).to eql("0")
31
+ end
32
+
33
+ # TODO: Gateway changed
34
+ it "Visa avs result code should equal I" do
35
+ charge = Hps::TestHelper.charge_valid_visa(90.05)
36
+ #expect(charge.avs_result_code).to eql("I")
37
+ expect(charge.avs_result_code).to eql("0")
38
+ end
39
+
40
+ # TODO: Gateway changed
41
+ it "Visa avs result code should equal M" do
42
+ charge = Hps::TestHelper.charge_valid_visa(90.06)
43
+ #expect(charge.avs_result_code).to eql("M")
44
+ expect(charge.avs_result_code).to eql("0")
45
+ end
46
+
47
+ # TODO: Gateway changed
48
+ it "Visa avs result code should equal P" do
49
+ charge = Hps::TestHelper.charge_valid_visa(90.07)
50
+ #expect(charge.avs_result_code).to eql("P")
51
+ expect(charge.avs_result_code).to eql("0")
52
+ end
53
+
54
+ # cvv tests
55
+
56
+ it "Visa cvv result code should equal M" do
57
+ charge = Hps::TestHelper.charge_valid_visa(96.01)
58
+ expect(charge.cvv_result_code).to eql("M")
59
+ end
60
+
61
+ it "Visa cvv result code should equal N" do
62
+ charge = Hps::TestHelper.charge_valid_visa(96.02)
63
+ expect(charge.cvv_result_code).to eql("N")
64
+ end
65
+
66
+ it "Visa cvv result code should equal P" do
67
+ charge = Hps::TestHelper.charge_valid_visa(96.03)
68
+ expect(charge.cvv_result_code).to eql("P")
69
+ end
70
+
71
+ it "Visa cvv result code should equal S" do
72
+ charge = Hps::TestHelper.charge_valid_visa(96.04)
73
+ expect(charge.cvv_result_code).to eql("S")
74
+ end
75
+
76
+ it "Visa cvv result code should equal U" do
77
+ charge = Hps::TestHelper.charge_valid_visa(96.05)
78
+ expect(charge.cvv_result_code).to eql("U")
79
+ end
80
+
81
+ # visa to visa 2nd
82
+
83
+ it "Visa response code should indicate refer card issuer" do
84
+ expect {
85
+ Hps::TestHelper.charge_valid_visa(10.34)
86
+ }.to raise_error(Hps::CardException) { |error|
87
+ expect(error.code).to eql("card_declined")
88
+ expect(error.response_code).to eql("02")
89
+ expect(error.response_text).to eql("CALL")
90
+ }
91
+ end
92
+
93
+ it "Visa response code should indicate invalid merchant" do
94
+ expect {
95
+ Hps::TestHelper.charge_valid_visa(10.22)
96
+ }.to raise_error(Hps::CardException) { |error|
97
+ expect(error.code).to eql("card_declined")
98
+ expect(error.response_code).to eql("03")
99
+ expect(error.response_text).to eql("TERM ID ERROR")
100
+ }
101
+ end
102
+
103
+ it "Visa response code should indicate pickup card" do
104
+ expect {
105
+ Hps::TestHelper.charge_valid_visa(10.04)
106
+ }.to raise_error(Hps::CardException) { |error|
107
+ expect(error.code).to eql("card_declined")
108
+ expect(error.response_code).to eql("44")
109
+ expect(error.response_text).to eql("HOLD-CALL")
110
+ }
111
+ end
112
+
113
+ it "Visa response code should indicate do not honor" do
114
+ expect {
115
+ Hps::TestHelper.charge_valid_visa(10.25)
116
+ }.to raise_error(Hps::CardException) { |error|
117
+ expect(error.code).to eql("card_declined")
118
+ expect(error.response_code).to eql("05")
119
+ expect(error.response_text).to eql("DECLINE")
120
+ }
121
+ end
122
+
123
+ it "Visa response code should indicate invalid transaction" do
124
+ expect {
125
+ Hps::TestHelper.charge_valid_visa(10.26)
126
+ }.to raise_error(Hps::CardException) { |error|
127
+ expect(error.code).to eql("processing_error")
128
+ expect(error.response_code).to eql("12")
129
+ expect(error.response_text).to eql("INVALID TRANS")
130
+ }
131
+ end
132
+
133
+ it "Visa response code should indicate invalid amount" do
134
+ expect {
135
+ Hps::TestHelper.charge_valid_visa(10.27)
136
+ }.to raise_error(Hps::CardException) { |error|
137
+ expect(error.code).to eql("invalid_amount")
138
+ expect(error.response_code).to eql("13")
139
+ expect(error.response_text).to eql("AMOUNT ERROR")
140
+ }
141
+ end
142
+
143
+ it "Visa response code should indicate invalid card" do
144
+ expect {
145
+ Hps::TestHelper.charge_valid_visa(10.28)
146
+ }.to raise_error(Hps::CardException) { |error|
147
+ expect(error.code).to eql("incorrect_number")
148
+ expect(error.response_code).to eql("14")
149
+ expect(error.response_text).to eql("CARD NO. ERROR")
150
+ }
151
+ end
152
+
153
+ it "Visa response code should indicate invalid issuer" do
154
+ expect {
155
+ Hps::TestHelper.charge_valid_visa(10.18)
156
+ }.to raise_error(Hps::CardException) { |error|
157
+ expect(error.code).to eql("processing_error")
158
+ expect(error.response_code).to eql("15")
159
+ expect(error.response_text).to eql("NO SUCH ISSUER")
160
+ }
161
+ end
162
+
163
+ it "Visa response code should indicate system error re-enter" do
164
+ expect {
165
+ Hps::TestHelper.charge_valid_visa(10.29)
166
+ }.to raise_error(Hps::CardException) { |error|
167
+ expect(error.code).to eql("processing_error")
168
+ expect(error.response_code).to eql("19")
169
+ expect(error.response_text).to eql("RE ENTER")
170
+ }
171
+ end
172
+
173
+ it "Visa response code should indicate lost card" do
174
+ expect {
175
+ Hps::TestHelper.charge_valid_visa(10.31)
176
+ }.to raise_error(Hps::CardException) { |error|
177
+ expect(error.code).to eql("card_declined")
178
+ expect(error.response_code).to eql("41")
179
+ expect(error.response_text).to eql("HOLD-CALL")
180
+ }
181
+ end
182
+
183
+ it "Visa response code should indicate hot card pickup" do
184
+ expect {
185
+ Hps::TestHelper.charge_valid_visa(10.03)
186
+ }.to raise_error(Hps::CardException) { |error|
187
+ expect(error.code).to eql("card_declined")
188
+ expect(error.response_code).to eql("43")
189
+ expect(error.response_text).to eql("HOLD-CALL")
190
+ }
191
+ end
192
+
193
+ it "Visa response code should indicate insufficient fund" do
194
+ expect {
195
+ Hps::TestHelper.charge_valid_visa(10.08)
196
+ }.to raise_error(Hps::CardException) { |error|
197
+ expect(error.code).to eql("card_declined")
198
+ # TODO: Gateway changed
199
+ #expect(error.response_code).to eql("05")
200
+ expect(error.response_code).to eql("51")
201
+ expect(error.response_text).to eql("DECLINE")
202
+ }
203
+ end
204
+
205
+ it "Visa response code should indicate no checking account" do
206
+ expect {
207
+ Hps::TestHelper.charge_valid_visa(10.16)
208
+ }.to raise_error(Hps::CardException) { |error|
209
+ expect(error.code).to eql("processing_error")
210
+ expect(error.response_code).to eql("52")
211
+ expect(error.response_text).to eql("NO CHECK ACCOUNT")
212
+ }
213
+ end
214
+
215
+ it "Visa response code should indicate no savings account" do
216
+ expect {
217
+ Hps::TestHelper.charge_valid_visa(10.17)
218
+ }.to raise_error(Hps::CardException) { |error|
219
+ expect(error.code).to eql("processing_error")
220
+ expect(error.response_code).to eql("53")
221
+ expect(error.response_text).to eql("NO SAVE ACCOUNT")
222
+ }
223
+ end
224
+
225
+ it "Visa response code should indicate expired card" do
226
+ expect {
227
+ Hps::TestHelper.charge_valid_visa(10.32)
228
+ }.to raise_error(Hps::CardException) { |error|
229
+ expect(error.code).to eql("expired_card")
230
+ expect(error.response_code).to eql("54")
231
+ expect(error.response_text).to eql("EXPIRED CARD")
232
+ }
233
+ end
234
+
235
+ it "Visa response code should indicate txn not permitted on card card" do
236
+ expect {
237
+ Hps::TestHelper.charge_valid_visa(10.20)
238
+ }.to raise_error(Hps::CardException) { |error|
239
+ # TODO: Gateway changed
240
+ #expect(error.code).to eql("processing_error")
241
+ #expect(error.response_code).to eql("57")
242
+ #expect(error.response_text).to eql("SERV NOT ALLOWED")
243
+ expect(error.code).to eql("unknown_card_exception")
244
+ expect(error.response_code).to eql("R1")
245
+ expect(error.response_text).to eql("STOP RECURRING")
246
+ }
247
+ end
248
+
249
+ it "Visa response code should indicate invalid acquirer" do
250
+ expect {
251
+ Hps::TestHelper.charge_valid_visa(10.30)
252
+ }.to raise_error(Hps::CardException) { |error|
253
+ expect(error.code).to eql("processing_error")
254
+ expect(error.response_code).to eql("58")
255
+ expect(error.response_text).to eql("SERV NOT ALLOWED")
256
+ }
257
+ end
258
+
259
+ it "Visa response code should indicate exceeds limit" do
260
+ expect {
261
+ Hps::TestHelper.charge_valid_visa(10.09)
262
+ }.to raise_error(Hps::CardException) { |error|
263
+ expect(error.code).to eql("card_declined")
264
+ expect(error.response_code).to eql("61")
265
+ expect(error.response_text).to eql("DECLINE")
266
+ }
267
+ end
268
+
269
+ it "Visa response code should indicate restricted card" do
270
+ expect {
271
+ Hps::TestHelper.charge_valid_visa(10.10)
272
+ }.to raise_error(Hps::CardException) { |error|
273
+ expect(error.code).to eql("card_declined")
274
+ expect(error.response_code).to eql("62")
275
+ expect(error.response_text).to eql("DECLINE")
276
+ }
277
+ end
278
+
279
+ it "Visa response code should indicate security violation" do
280
+ expect {
281
+ Hps::TestHelper.charge_valid_visa(10.11)
282
+ }.to raise_error(Hps::CardException) { |error|
283
+ expect(error.code).to eql("card_declined")
284
+ expect(error.response_code).to eql("65")
285
+ expect(error.response_text).to eql("DECLINE")
286
+ }
287
+ end
288
+
289
+ it "Visa response code should indicate check digit error" do
290
+ expect {
291
+ Hps::TestHelper.charge_valid_visa(10.05)
292
+ }.to raise_error(Hps::CardException) { |error|
293
+ expect(error.code).to eql("incorrect_cvc")
294
+ expect(error.response_code).to eql("EB")
295
+ expect(error.response_text).to eql("CHECK DIGIT ERR")
296
+ }
297
+ end
298
+
299
+ it "Visa response code should indicate switch not available" do
300
+ expect {
301
+ Hps::TestHelper.charge_valid_visa(10.33)
302
+ }.to raise_error(Hps::HpsException) { |error|
303
+ #}.to raise_error(Hps::CardException) { |error|
304
+ #expect(error.code).to eql("processing_error")
305
+ #expect(error.response_code).to eql("14")
306
+ expect(error.code).to eql("issuer_timeout")
307
+ expect(error.response_code).to eql("91")
308
+ expect(error.response_text).to eql("NO REPLY")
309
+ }
310
+ end
311
+
312
+ it "Visa response code should indicate system error" do
313
+ expect {
314
+ Hps::TestHelper.charge_valid_visa(10.21)
315
+ }.to raise_error(Hps::CardException) { |error|
316
+ expect(error.code).to eql("processing_error")
317
+ expect(error.response_code).to eql("96")
318
+ expect(error.response_text).to eql("SYSTEM ERROR")
319
+ }
320
+ end
321
+
322
+ it "Visa response code should indicate CVV2 mismatch" do
323
+ expect {
324
+ Hps::TestHelper.charge_valid_visa(10.23)
325
+ }.to raise_error(Hps::CardException) { |error|
326
+ expect(error.code).to eql("incorrect_cvc")
327
+ expect(error.response_code).to eql("N7")
328
+ expect(error.response_text).to eql("CVV2 MISMATCH")
329
+ }
330
+ end
331
+
332
+ # verify, authorize, refund, and capture
333
+
334
+ it "Visa verify should return OK" do
335
+ service = Hps::HpsChargeService.new()
336
+ result = service.verify(Hps::TestData.valid_visa, Hps::TestData.valid_cardholder)
337
+ expect(result.response_code).to eql("85")
338
+ end
339
+
340
+ it "Visa verify should return Token" do
341
+ service = Hps::HpsChargeService.new()
342
+ result = service.verify(Hps::TestData.valid_visa, Hps::TestData.valid_cardholder,true)
343
+ expect(result.response_code).to eql("85")
344
+ expect(result.token_data.response_message).to eql("Success")
345
+ expect(result.token_data.token_value).to_not eql(nil)
346
+
347
+ end
348
+
349
+ it "Visa authorize should return OK" do
350
+ service = Hps::HpsChargeService.new()
351
+ result = service.authorize(50.00, "usd", Hps::TestData.valid_visa, Hps::TestData.valid_cardholder)
352
+ expect(result.response_code).to eql("00")
353
+ end
354
+
355
+ it "Visa authorize and request token should return OK" do
356
+ service = Hps::HpsChargeService.new()
357
+ result = service.authorize(50.00, "usd", Hps::TestData.valid_visa, Hps::TestData.valid_cardholder, true)
358
+ expect(result.token_data.response_code).to eql("0")
359
+ expect(result.response_code).to eql("00")
360
+ end
361
+
362
+ it "Visa should refund OK" do
363
+ service = Hps::HpsChargeService.new()
364
+ charge = service.charge(25.00, "usd", Hps::TestData.valid_visa, Hps::TestData.valid_cardholder)
365
+ refund = service.refund_transaction(25.00, "usd", charge.transaction_id)
366
+ expect(refund.response_code).to eql("00")
367
+ end
368
+
369
+ it "Visa authorize and capture should return OK" do
370
+ service = Hps::HpsChargeService.new()
371
+ result = service.authorize(50.00, "usd", Hps::TestData.valid_visa, Hps::TestData.valid_cardholder)
372
+ expect(result.response_code).to eql("00")
373
+
374
+ capture_result = service.capture(result.transaction_id)
375
+ expect(capture_result.response_code).to eql("00")
376
+ end
377
+
378
+ # Card Present
379
+
380
+ it "Visa card present and reader not present" do
381
+ Hps::TestHelper.valid_multi_use_config
382
+ service = Hps::HpsChargeService.new()
383
+ card = Hps::TestData.valid_visa
384
+ card.card_present = true
385
+ result = service.charge(10.00, "usd", card, Hps::TestData.valid_cardholder)
386
+ expect(result.response_code).to eql("00")
387
+ end
388
+
389
+ it "Visa card present and reader present" do
390
+ Hps::TestHelper.valid_multi_use_config
391
+ service = Hps::HpsChargeService.new()
392
+ card = Hps::TestData.valid_visa
393
+ card.card_present = true
394
+ card.reader_present = true
395
+ result = service.charge(10.00, "usd", card, Hps::TestData.valid_cardholder)
396
+ expect(result.response_code).to eql("00")
397
+ end
398
+
399
+ it "Visa Dynamic Descriptor Authorize" do
400
+ Hps::TestHelper.valid_multi_use_config
401
+ service = Hps::HpsChargeService.new()
402
+ txn_descriptor = "Best Company Ever"
403
+ result = service.authorize(10.00, "usd", Hps::TestData.valid_visa, Hps::TestData.valid_cardholder, false, nil, txn_descriptor)
404
+ expect(result.response_code).to eql("00")
405
+ p result.transaction_id
406
+ end
407
+
408
+ it "Visa Dynamic Descriptor Charge" do
409
+ Hps::TestHelper.valid_multi_use_config
410
+ service = Hps::HpsChargeService.new()
411
+ txn_descriptor = "Best Company Ever"
412
+ result = service.charge(10.00, "usd", Hps::TestData.valid_visa, Hps::TestData.valid_cardholder, false, nil, txn_descriptor)
413
+ expect(result.response_code).to eql("00")
414
+ p result.transaction_id
415
+ end
416
+
417
+ it "should charge with visa swipe and txn descriptor" do
418
+ Hps::TestHelper.valid_multi_use_config
419
+ service = Hps::HpsChargeService.new
420
+ txn_descriptor = "Best Company Ever"
421
+ track_data = Hps::HpsTrackData.new
422
+ track_data.value = '%B4012002000060016^VI TEST CREDIT^251210118039000000000396?;4012002000060016=25121011803939600000?'
423
+ track_data.method_obtained = Hps::HpsTrackDataMethod::SWIPE
424
+
425
+ charge = service.charge_swipe(10.00, "usd", track_data, nil, 0, false, txn_descriptor)
426
+
427
+ expect(charge).to_not be_nil
428
+ expect(charge.response_code).to eql("00")
429
+ end
430
+
431
+ it "should authorize with visa swipe and txn descriptor" do
432
+ Hps::TestHelper.valid_multi_use_config
433
+ service = Hps::HpsChargeService.new
434
+ txn_descriptor = "Best Company Ever"
435
+ track_data = Hps::HpsTrackData.new
436
+ track_data.value = '%B4012002000060016^VI TEST CREDIT^251210118039000000000396?;4012002000060016=25121011803939600000?'
437
+ track_data.method_obtained = Hps::HpsTrackDataMethod::SWIPE
438
+
439
+ authorize = service.authorize_swipe(10.00, "usd", track_data, nil, 0, false, txn_descriptor)
440
+
441
+ expect(authorize).to_not be_nil
442
+ expect(authorize.response_code).to eql("00")
443
+ end
444
+
445
+ end