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,387 +1,387 @@
1
- require File.join( File.dirname(__FILE__), "test_helper" )
2
-
3
- describe "Mastercard Tests" do
4
-
5
- it "Mastercard when card is ok, should return valid result" do
6
- charge = Hps::TestHelper.charge_valid_mastercard(50)
7
- expect(charge.response_code).to eql("00")
8
- end
9
-
10
- # avs tests
11
-
12
- it "Mastercard avs result code should equal A" do
13
- charge = Hps::TestHelper.charge_valid_mastercard(90.01)
14
- expect(charge.avs_result_code).to eql("A")
15
- end
16
-
17
- it "Mastercard avs result code should equal N" do
18
- charge = Hps::TestHelper.charge_valid_mastercard(90.02)
19
- expect(charge.avs_result_code).to eql("N")
20
- end
21
-
22
- it "Mastercard avs result code should equal R" do
23
- charge = Hps::TestHelper.charge_valid_mastercard(90.03)
24
- expect(charge.avs_result_code).to eql("R")
25
- end
26
-
27
- it "Mastercard avs result code should equal S" do
28
- charge = Hps::TestHelper.charge_valid_mastercard(90.04)
29
- expect(charge.avs_result_code).to eql("S")
30
- end
31
-
32
- it "Mastercard avs result code should equal U" do
33
- charge = Hps::TestHelper.charge_valid_mastercard(90.05)
34
- expect(charge.avs_result_code).to eql("U")
35
- end
36
-
37
- it "Mastercard avs result code should equal W" do
38
- charge = Hps::TestHelper.charge_valid_mastercard(90.06)
39
- expect(charge.avs_result_code).to eql("W")
40
- end
41
-
42
- it "Mastercard avs result code should equal X" do
43
- charge = Hps::TestHelper.charge_valid_mastercard(90.07)
44
- expect(charge.avs_result_code).to eql("X")
45
- end
46
-
47
- it "Mastercard avs result code should equal Y" do
48
- charge = Hps::TestHelper.charge_valid_mastercard(90.08)
49
- expect(charge.avs_result_code).to eql("Y")
50
- end
51
-
52
- it "Mastercard avs result code should equal Z" do
53
- charge = Hps::TestHelper.charge_valid_mastercard(90.09)
54
- expect(charge.avs_result_code).to eql("Z")
55
- end
56
-
57
- # cvv tests
58
-
59
- it "Mastercard cvv result code should equal M" do
60
- charge = Hps::TestHelper.charge_valid_mastercard(95.01)
61
- expect(charge.cvv_result_code).to eql("M")
62
- end
63
-
64
- it "Mastercard cvv result code should equal N" do
65
- charge = Hps::TestHelper.charge_valid_mastercard(95.02)
66
- expect(charge.cvv_result_code).to eql("N")
67
- end
68
-
69
- it "Mastercard cvv result code should equal P" do
70
- charge = Hps::TestHelper.charge_valid_mastercard(95.03)
71
- expect(charge.cvv_result_code).to eql("P")
72
- end
73
-
74
- it "Mastercard cvv result code should equal U" do
75
- charge = Hps::TestHelper.charge_valid_mastercard(95.04)
76
- expect(charge.cvv_result_code).to eql("U")
77
- end
78
-
79
- # mastercard to 8583
80
-
81
- it "Mastercard response code should indicate refer card issuer" do
82
- expect {
83
- Hps::TestHelper.charge_valid_mastercard(10.34)
84
- }.to raise_error(Hps::CardException) { |error|
85
- expect(error.code).to eql("card_declined")
86
- expect(error.response_code).to eql("02")
87
- expect(error.response_text).to eql("CALL")
88
- }
89
- end
90
-
91
- it "Mastercard response code should indicate term id error" do
92
- expect {
93
- Hps::TestHelper.charge_valid_mastercard(10.22)
94
- }.to raise_error(Hps::CardException) { |error|
95
- expect(error.code).to eql("card_declined")
96
- expect(error.response_code).to eql("03")
97
- expect(error.response_text).to eql("TERM ID ERROR")
98
- }
99
- end
100
-
101
- # TODO: Gateway not throwing error
102
- # it "Mastercard response code should indicate invalid merchant" do
103
- # expect {
104
- # Hps::TestHelper.charge_valid_mastercard(10.01)
105
- # }.to raise_error(Hps::CardException) { |error|
106
- # expect(error.code).to eql("card_declined")
107
- # expect(error.response_code).to eql("04")
108
- # expect(error.response_text).to eql("HOLD-CALL")
109
- # }
110
- # end
111
-
112
- it "Mastercard response code should indicate do not honor" do
113
- expect {
114
- Hps::TestHelper.charge_valid_mastercard(10.25)
115
- }.to raise_error(Hps::CardException) { |error|
116
- expect(error.code).to eql("card_declined")
117
- expect(error.response_code).to eql("05")
118
- expect(error.response_text).to eql("DECLINE")
119
- }
120
- end
121
-
122
- # TODO: Gateway not throwing error
123
- # it "Mastercard response code should indicate invalid transaction" do
124
- # expect {
125
- # Hps::TestHelper.charge_valid_amex(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 "Mastercard response code should indicate invalid amount" do
134
- expect {
135
- Hps::TestHelper.charge_valid_mastercard(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 "Mastercard response code should indicate invalid card" do
144
- expect {
145
- Hps::TestHelper.charge_valid_mastercard(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 "Mastercard response code should indicate invalid issuer" do
154
- expect {
155
- Hps::TestHelper.charge_valid_mastercard(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 "Mastercard response code should indicate lost card" do
164
- expect {
165
- Hps::TestHelper.charge_valid_mastercard(10.31)
166
- }.to raise_error(Hps::CardException) { |error|
167
- expect(error.code).to eql("card_declined")
168
- expect(error.response_code).to eql("41")
169
- expect(error.response_text).to eql("HOLD-CALL")
170
- }
171
- end
172
-
173
- it "Mastercard response code should indicate hold call" do
174
- expect {
175
- Hps::TestHelper.charge_valid_mastercard(10.03)
176
- }.to raise_error(Hps::CardException) { |error|
177
- expect(error.code).to eql("card_declined")
178
- expect(error.response_code).to eql("43")
179
- expect(error.response_text).to eql("HOLD-CALL")
180
- }
181
- end
182
-
183
- it "Mastercard response code should indicate decline" do
184
- expect {
185
- Hps::TestHelper.charge_valid_mastercard(10.08)
186
- }.to raise_error(Hps::CardException) { |error|
187
- expect(error.code).to eql("card_declined")
188
- expect(error.response_code).to eql("51")
189
- expect(error.response_text).to eql("DECLINE")
190
- }
191
- end
192
-
193
- it "Mastercard response code should indicate expired card" do
194
- expect {
195
- Hps::TestHelper.charge_valid_mastercard(10.32)
196
- }.to raise_error(Hps::CardException) { |error|
197
- expect(error.code).to eql("expired_card")
198
- expect(error.response_code).to eql("54")
199
- expect(error.response_text).to eql("EXPIRED CARD")
200
- }
201
- end
202
-
203
- it "Mastercard response code should indicate exceeds limit" do
204
- expect {
205
- Hps::TestHelper.charge_valid_mastercard(10.09)
206
- }.to raise_error(Hps::CardException) { |error|
207
- expect(error.code).to eql("card_declined")
208
- expect(error.response_code).to eql("61")
209
- expect(error.response_text).to eql("DECLINE")
210
- }
211
- end
212
-
213
- it "Mastercard response code should indicate restricted card" do
214
- expect {
215
- Hps::TestHelper.charge_valid_mastercard(10.10)
216
- }.to raise_error(Hps::CardException) { |error|
217
- expect(error.code).to eql("card_declined")
218
- expect(error.response_code).to eql("62")
219
- expect(error.response_text).to eql("DECLINE")
220
- }
221
- end
222
-
223
- it "Mastercard response code should indicate security violation" do
224
- expect {
225
- Hps::TestHelper.charge_valid_mastercard(10.19)
226
- }.to raise_error(Hps::CardException) { |error|
227
- expect(error.code).to eql("card_declined")
228
- expect(error.response_code).to eql("63")
229
- expect(error.response_text).to eql("SEC VIOLATION")
230
- }
231
- end
232
-
233
- it "Mastercard response code should indicate exceeds freq limit" do
234
- expect {
235
- Hps::TestHelper.charge_valid_mastercard(10.11)
236
- }.to raise_error(Hps::CardException) { |error|
237
- expect(error.code).to eql("card_declined")
238
- expect(error.response_code).to eql("65")
239
- expect(error.response_text).to eql("DECLINE")
240
- }
241
- end
242
-
243
- it "Mastercard response code should indicate card no error" do
244
- expect {
245
- Hps::TestHelper.charge_valid_mastercard(10.14)
246
- }.to raise_error(Hps::CardException) { |error|
247
- expect(error.code).to eql("incorrect_number")
248
- expect(error.response_code).to eql("14")
249
- expect(error.response_text).to eql("CARD NO. ERROR")
250
- }
251
- end
252
-
253
- it "Mastercard response code should indicate invalid account" do
254
- expect {
255
- Hps::TestHelper.charge_valid_mastercard(10.06)
256
- }.to raise_error(Hps::CardException) { |error|
257
- expect(error.code).to eql("processing_error")
258
- # TODO: Gateway change
259
- #expect(error.response_code).to eql("79")
260
- expect(error.response_code).to eql("EC")
261
- expect(error.response_text).to eql("CID FORMAT ERROR")
262
- }
263
- end
264
-
265
- # TODO: Gateway change, used to throw exception but now it doesn't
266
- it "Mastercard response code should indicate switch not available" do
267
- expect {
268
- Hps::TestHelper.charge_valid_mastercard(10.33)
269
- }.to raise_error(Hps::HpsException) { |error|
270
- #}.to raise_error(Hps::CardException) { |error|
271
- #expect(error.code).to eql("processing_error")
272
- #expect(error.response_code).to eql("14")
273
- expect(error.code).to eql("issuer_timeout")
274
- expect(error.response_code).to eql("91")
275
- expect(error.response_text).to eql("NO REPLY")
276
- }
277
- end
278
-
279
- it "Mastercard response code should indicate system error" do
280
- expect {
281
- Hps::TestHelper.charge_valid_mastercard(10.21)
282
- }.to raise_error(Hps::CardException) { |error|
283
- expect(error.code).to eql("processing_error")
284
- expect(error.response_code).to eql("96")
285
- expect(error.response_text).to eql("SYSTEM ERROR")
286
- }
287
- end
288
-
289
- # verify, authorize, refund, and capture
290
-
291
- it "Mastercard verify should return OK" do
292
- service = Hps::HpsChargeService.new()
293
- result = service.verify(Hps::TestData.valid_mastercard, Hps::TestData.valid_cardholder)
294
- expect(result.response_code).to eql("85")
295
- end
296
-
297
- it "Mastercard authorize should return OK" do
298
- service = Hps::HpsChargeService.new()
299
- result = service.authorize(50.00, "usd", Hps::TestData.valid_mastercard, Hps::TestData.valid_cardholder)
300
- expect(result.response_code).to eql("00")
301
- end
302
-
303
- it "Mastercard authorize and request token should return OK" do
304
- service = Hps::HpsChargeService.new()
305
- result = service.authorize(50.00, "usd", Hps::TestData.valid_mastercard, Hps::TestData.valid_cardholder, true)
306
- expect(result.token_data.response_code).to eql("0")
307
- expect(result.response_code).to eql("00")
308
- end
309
-
310
- it "Mastercard should refund OK" do
311
- service = Hps::HpsChargeService.new()
312
- charge = service.charge(25.00, "usd", Hps::TestData.valid_mastercard, Hps::TestData.valid_cardholder)
313
- refund = service.refund_transaction(25.00, "usd", charge.transaction_id)
314
- expect(refund.response_code).to eql("00")
315
- end
316
-
317
- it "Mastercard authorize and capture should return OK" do
318
- service = Hps::HpsChargeService.new()
319
- result = service.authorize(50.00, "usd", Hps::TestData.valid_mastercard, Hps::TestData.valid_cardholder)
320
- expect(result.response_code).to eql("00")
321
-
322
- capture_result = service.capture(result.transaction_id)
323
- expect(capture_result.response_code).to eql("00")
324
- end
325
-
326
- it "Mastercard card present and reader not present" do
327
- service = Hps::HpsChargeService.new()
328
- card = Hps::TestData.valid_mastercard
329
- card.card_present = true
330
- result = service.charge(10.00, "usd", card, Hps::TestData.valid_cardholder)
331
- expect(result.response_code).to eql("00")
332
- end
333
-
334
- it "Mastercard card present and reader present" do
335
- service = Hps::HpsChargeService.new()
336
- card = Hps::TestData.valid_mastercard
337
- card.card_present = true
338
- card.reader_present = true
339
- result = service.charge(10.00, "usd", card, Hps::TestData.valid_cardholder)
340
- expect(result.response_code).to eql("00")
341
- end
342
-
343
- it "Mastercard Dynamic Descriptor Authorize" do
344
- service = Hps::HpsChargeService.new()
345
- txn_descriptor = "Best Company Ever"
346
- result = service.authorize(10.00, "usd", Hps::TestData.valid_mastercard, Hps::TestData.valid_cardholder, false, nil, txn_descriptor)
347
- expect(result.response_code).to eql("00")
348
- p result.transaction_id
349
- end
350
-
351
- it "Mastercard Dynamic Descriptor Charge" do
352
- service = Hps::HpsChargeService.new()
353
- txn_descriptor = "Best Company Ever"
354
- result = service.charge(10.00, "usd", Hps::TestData.valid_mastercard, Hps::TestData.valid_cardholder, false, nil, txn_descriptor)
355
- expect(result.response_code).to eql("00")
356
- p result.transaction_id
357
- end
358
-
359
- it "should charge with mastercard swipe and txn descriptor" do
360
- Hps::TestHelper.valid_multi_use_config
361
- service = Hps::HpsChargeService.new
362
- txn_descriptor = "Best Company Ever"
363
- track_data = Hps::HpsTrackData.new
364
- track_data.value = '%B5473500000000014^MC TEST CARD^251210199998888777766665555444433332?;5473500000000014=25121019999888877776?'
365
- track_data.method_obtained = Hps::HpsTrackDataMethod::SWIPE
366
-
367
- charge = service.charge_swipe(10.00, "usd", track_data, nil, 0, false, txn_descriptor)
368
-
369
- expect(charge).to_not be_nil
370
- expect(charge.response_code).to eql("00")
371
- end
372
-
373
- it "should authorize with mastercard swipe and txn descriptor" do
374
- Hps::TestHelper.valid_multi_use_config
375
- service = Hps::HpsChargeService.new
376
- txn_descriptor = "Best Company Ever"
377
- track_data = Hps::HpsTrackData.new
378
- track_data.value = '%B5473500000000014^MC TEST CARD^251210199998888777766665555444433332?;5473500000000014=25121019999888877776?'
379
- track_data.method_obtained = Hps::HpsTrackDataMethod::SWIPE
380
-
381
- authorize = service.authorize_swipe(10.00, "usd", track_data, nil, 0, false, txn_descriptor)
382
-
383
- expect(authorize).to_not be_nil
384
- expect(authorize.response_code).to eql("00")
385
- end
386
-
387
- end
1
+ require File.join( File.dirname(__FILE__), "test_helper" )
2
+
3
+ describe "Mastercard Tests" do
4
+
5
+ it "Mastercard when card is ok, should return valid result" do
6
+ charge = Hps::TestHelper.charge_valid_mastercard(50)
7
+ expect(charge.response_code).to eql("00")
8
+ end
9
+
10
+ # avs tests
11
+
12
+ it "Mastercard avs result code should equal A" do
13
+ charge = Hps::TestHelper.charge_valid_mastercard(90.01)
14
+ expect(charge.avs_result_code).to eql("A")
15
+ end
16
+
17
+ it "Mastercard avs result code should equal N" do
18
+ charge = Hps::TestHelper.charge_valid_mastercard(90.02)
19
+ expect(charge.avs_result_code).to eql("N")
20
+ end
21
+
22
+ it "Mastercard avs result code should equal R" do
23
+ charge = Hps::TestHelper.charge_valid_mastercard(90.03)
24
+ expect(charge.avs_result_code).to eql("R")
25
+ end
26
+
27
+ it "Mastercard avs result code should equal S" do
28
+ charge = Hps::TestHelper.charge_valid_mastercard(90.04)
29
+ expect(charge.avs_result_code).to eql("S")
30
+ end
31
+
32
+ it "Mastercard avs result code should equal U" do
33
+ charge = Hps::TestHelper.charge_valid_mastercard(90.05)
34
+ expect(charge.avs_result_code).to eql("U")
35
+ end
36
+
37
+ it "Mastercard avs result code should equal W" do
38
+ charge = Hps::TestHelper.charge_valid_mastercard(90.06)
39
+ expect(charge.avs_result_code).to eql("W")
40
+ end
41
+
42
+ it "Mastercard avs result code should equal X" do
43
+ charge = Hps::TestHelper.charge_valid_mastercard(90.07)
44
+ expect(charge.avs_result_code).to eql("X")
45
+ end
46
+
47
+ it "Mastercard avs result code should equal Y" do
48
+ charge = Hps::TestHelper.charge_valid_mastercard(90.08)
49
+ expect(charge.avs_result_code).to eql("Y")
50
+ end
51
+
52
+ it "Mastercard avs result code should equal Z" do
53
+ charge = Hps::TestHelper.charge_valid_mastercard(90.09)
54
+ expect(charge.avs_result_code).to eql("Z")
55
+ end
56
+
57
+ # cvv tests
58
+
59
+ it "Mastercard cvv result code should equal M" do
60
+ charge = Hps::TestHelper.charge_valid_mastercard(95.01)
61
+ expect(charge.cvv_result_code).to eql("M")
62
+ end
63
+
64
+ it "Mastercard cvv result code should equal N" do
65
+ charge = Hps::TestHelper.charge_valid_mastercard(95.02)
66
+ expect(charge.cvv_result_code).to eql("N")
67
+ end
68
+
69
+ it "Mastercard cvv result code should equal P" do
70
+ charge = Hps::TestHelper.charge_valid_mastercard(95.03)
71
+ expect(charge.cvv_result_code).to eql("P")
72
+ end
73
+
74
+ it "Mastercard cvv result code should equal U" do
75
+ charge = Hps::TestHelper.charge_valid_mastercard(95.04)
76
+ expect(charge.cvv_result_code).to eql("U")
77
+ end
78
+
79
+ # mastercard to 8583
80
+
81
+ it "Mastercard response code should indicate refer card issuer" do
82
+ expect {
83
+ Hps::TestHelper.charge_valid_mastercard(10.34)
84
+ }.to raise_error(Hps::CardException) { |error|
85
+ expect(error.code).to eql("card_declined")
86
+ expect(error.response_code).to eql("02")
87
+ expect(error.response_text).to eql("CALL")
88
+ }
89
+ end
90
+
91
+ it "Mastercard response code should indicate term id error" do
92
+ expect {
93
+ Hps::TestHelper.charge_valid_mastercard(10.22)
94
+ }.to raise_error(Hps::CardException) { |error|
95
+ expect(error.code).to eql("card_declined")
96
+ expect(error.response_code).to eql("03")
97
+ expect(error.response_text).to eql("TERM ID ERROR")
98
+ }
99
+ end
100
+
101
+ # TODO: Gateway not throwing error
102
+ # it "Mastercard response code should indicate invalid merchant" do
103
+ # expect {
104
+ # Hps::TestHelper.charge_valid_mastercard(10.01)
105
+ # }.to raise_error(Hps::CardException) { |error|
106
+ # expect(error.code).to eql("card_declined")
107
+ # expect(error.response_code).to eql("04")
108
+ # expect(error.response_text).to eql("HOLD-CALL")
109
+ # }
110
+ # end
111
+
112
+ it "Mastercard response code should indicate do not honor" do
113
+ expect {
114
+ Hps::TestHelper.charge_valid_mastercard(10.25)
115
+ }.to raise_error(Hps::CardException) { |error|
116
+ expect(error.code).to eql("card_declined")
117
+ expect(error.response_code).to eql("05")
118
+ expect(error.response_text).to eql("DECLINE")
119
+ }
120
+ end
121
+
122
+ # TODO: Gateway not throwing error
123
+ # it "Mastercard response code should indicate invalid transaction" do
124
+ # expect {
125
+ # Hps::TestHelper.charge_valid_amex(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 "Mastercard response code should indicate invalid amount" do
134
+ expect {
135
+ Hps::TestHelper.charge_valid_mastercard(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 "Mastercard response code should indicate invalid card" do
144
+ expect {
145
+ Hps::TestHelper.charge_valid_mastercard(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 "Mastercard response code should indicate invalid issuer" do
154
+ expect {
155
+ Hps::TestHelper.charge_valid_mastercard(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 "Mastercard response code should indicate lost card" do
164
+ expect {
165
+ Hps::TestHelper.charge_valid_mastercard(10.31)
166
+ }.to raise_error(Hps::CardException) { |error|
167
+ expect(error.code).to eql("card_declined")
168
+ expect(error.response_code).to eql("41")
169
+ expect(error.response_text).to eql("HOLD-CALL")
170
+ }
171
+ end
172
+
173
+ it "Mastercard response code should indicate hold call" do
174
+ expect {
175
+ Hps::TestHelper.charge_valid_mastercard(10.03)
176
+ }.to raise_error(Hps::CardException) { |error|
177
+ expect(error.code).to eql("card_declined")
178
+ expect(error.response_code).to eql("43")
179
+ expect(error.response_text).to eql("HOLD-CALL")
180
+ }
181
+ end
182
+
183
+ it "Mastercard response code should indicate decline" do
184
+ expect {
185
+ Hps::TestHelper.charge_valid_mastercard(10.08)
186
+ }.to raise_error(Hps::CardException) { |error|
187
+ expect(error.code).to eql("card_declined")
188
+ expect(error.response_code).to eql("51")
189
+ expect(error.response_text).to eql("DECLINE")
190
+ }
191
+ end
192
+
193
+ it "Mastercard response code should indicate expired card" do
194
+ expect {
195
+ Hps::TestHelper.charge_valid_mastercard(10.32)
196
+ }.to raise_error(Hps::CardException) { |error|
197
+ expect(error.code).to eql("expired_card")
198
+ expect(error.response_code).to eql("54")
199
+ expect(error.response_text).to eql("EXPIRED CARD")
200
+ }
201
+ end
202
+
203
+ it "Mastercard response code should indicate exceeds limit" do
204
+ expect {
205
+ Hps::TestHelper.charge_valid_mastercard(10.09)
206
+ }.to raise_error(Hps::CardException) { |error|
207
+ expect(error.code).to eql("card_declined")
208
+ expect(error.response_code).to eql("61")
209
+ expect(error.response_text).to eql("DECLINE")
210
+ }
211
+ end
212
+
213
+ it "Mastercard response code should indicate restricted card" do
214
+ expect {
215
+ Hps::TestHelper.charge_valid_mastercard(10.10)
216
+ }.to raise_error(Hps::CardException) { |error|
217
+ expect(error.code).to eql("card_declined")
218
+ expect(error.response_code).to eql("62")
219
+ expect(error.response_text).to eql("DECLINE")
220
+ }
221
+ end
222
+
223
+ it "Mastercard response code should indicate security violation" do
224
+ expect {
225
+ Hps::TestHelper.charge_valid_mastercard(10.19)
226
+ }.to raise_error(Hps::CardException) { |error|
227
+ expect(error.code).to eql("card_declined")
228
+ expect(error.response_code).to eql("63")
229
+ expect(error.response_text).to eql("SEC VIOLATION")
230
+ }
231
+ end
232
+
233
+ it "Mastercard response code should indicate exceeds freq limit" do
234
+ expect {
235
+ Hps::TestHelper.charge_valid_mastercard(10.11)
236
+ }.to raise_error(Hps::CardException) { |error|
237
+ expect(error.code).to eql("card_declined")
238
+ expect(error.response_code).to eql("65")
239
+ expect(error.response_text).to eql("DECLINE")
240
+ }
241
+ end
242
+
243
+ it "Mastercard response code should indicate card no error" do
244
+ expect {
245
+ Hps::TestHelper.charge_valid_mastercard(10.14)
246
+ }.to raise_error(Hps::CardException) { |error|
247
+ expect(error.code).to eql("incorrect_number")
248
+ expect(error.response_code).to eql("14")
249
+ expect(error.response_text).to eql("CARD NO. ERROR")
250
+ }
251
+ end
252
+
253
+ it "Mastercard response code should indicate invalid account" do
254
+ expect {
255
+ Hps::TestHelper.charge_valid_mastercard(10.06)
256
+ }.to raise_error(Hps::CardException) { |error|
257
+ expect(error.code).to eql("processing_error")
258
+ # TODO: Gateway change
259
+ #expect(error.response_code).to eql("79")
260
+ expect(error.response_code).to eql("EC")
261
+ expect(error.response_text).to eql("CID FORMAT ERROR")
262
+ }
263
+ end
264
+
265
+ # TODO: Gateway change, used to throw exception but now it doesn't
266
+ it "Mastercard response code should indicate switch not available" do
267
+ expect {
268
+ Hps::TestHelper.charge_valid_mastercard(10.33)
269
+ }.to raise_error(Hps::HpsException) { |error|
270
+ #}.to raise_error(Hps::CardException) { |error|
271
+ #expect(error.code).to eql("processing_error")
272
+ #expect(error.response_code).to eql("14")
273
+ expect(error.code).to eql("issuer_timeout")
274
+ expect(error.response_code).to eql("91")
275
+ expect(error.response_text).to eql("NO REPLY")
276
+ }
277
+ end
278
+
279
+ it "Mastercard response code should indicate system error" do
280
+ expect {
281
+ Hps::TestHelper.charge_valid_mastercard(10.21)
282
+ }.to raise_error(Hps::CardException) { |error|
283
+ expect(error.code).to eql("processing_error")
284
+ expect(error.response_code).to eql("96")
285
+ expect(error.response_text).to eql("SYSTEM ERROR")
286
+ }
287
+ end
288
+
289
+ # verify, authorize, refund, and capture
290
+
291
+ it "Mastercard verify should return OK" do
292
+ service = Hps::HpsChargeService.new()
293
+ result = service.verify(Hps::TestData.valid_mastercard, Hps::TestData.valid_cardholder)
294
+ expect(result.response_code).to eql("85")
295
+ end
296
+
297
+ it "Mastercard authorize should return OK" do
298
+ service = Hps::HpsChargeService.new()
299
+ result = service.authorize(50.00, "usd", Hps::TestData.valid_mastercard, Hps::TestData.valid_cardholder)
300
+ expect(result.response_code).to eql("00")
301
+ end
302
+
303
+ it "Mastercard authorize and request token should return OK" do
304
+ service = Hps::HpsChargeService.new()
305
+ result = service.authorize(50.00, "usd", Hps::TestData.valid_mastercard, Hps::TestData.valid_cardholder, true)
306
+ expect(result.token_data.response_code).to eql("0")
307
+ expect(result.response_code).to eql("00")
308
+ end
309
+
310
+ it "Mastercard should refund OK" do
311
+ service = Hps::HpsChargeService.new()
312
+ charge = service.charge(25.00, "usd", Hps::TestData.valid_mastercard, Hps::TestData.valid_cardholder)
313
+ refund = service.refund_transaction(25.00, "usd", charge.transaction_id)
314
+ expect(refund.response_code).to eql("00")
315
+ end
316
+
317
+ it "Mastercard authorize and capture should return OK" do
318
+ service = Hps::HpsChargeService.new()
319
+ result = service.authorize(50.00, "usd", Hps::TestData.valid_mastercard, Hps::TestData.valid_cardholder)
320
+ expect(result.response_code).to eql("00")
321
+
322
+ capture_result = service.capture(result.transaction_id)
323
+ expect(capture_result.response_code).to eql("00")
324
+ end
325
+
326
+ it "Mastercard card present and reader not present" do
327
+ service = Hps::HpsChargeService.new()
328
+ card = Hps::TestData.valid_mastercard
329
+ card.card_present = true
330
+ result = service.charge(10.00, "usd", card, Hps::TestData.valid_cardholder)
331
+ expect(result.response_code).to eql("00")
332
+ end
333
+
334
+ it "Mastercard card present and reader present" do
335
+ service = Hps::HpsChargeService.new()
336
+ card = Hps::TestData.valid_mastercard
337
+ card.card_present = true
338
+ card.reader_present = true
339
+ result = service.charge(10.00, "usd", card, Hps::TestData.valid_cardholder)
340
+ expect(result.response_code).to eql("00")
341
+ end
342
+
343
+ it "Mastercard Dynamic Descriptor Authorize" do
344
+ service = Hps::HpsChargeService.new()
345
+ txn_descriptor = "Best Company Ever"
346
+ result = service.authorize(10.00, "usd", Hps::TestData.valid_mastercard, Hps::TestData.valid_cardholder, false, nil, txn_descriptor)
347
+ expect(result.response_code).to eql("00")
348
+ p result.transaction_id
349
+ end
350
+
351
+ it "Mastercard Dynamic Descriptor Charge" do
352
+ service = Hps::HpsChargeService.new()
353
+ txn_descriptor = "Best Company Ever"
354
+ result = service.charge(10.00, "usd", Hps::TestData.valid_mastercard, Hps::TestData.valid_cardholder, false, nil, txn_descriptor)
355
+ expect(result.response_code).to eql("00")
356
+ p result.transaction_id
357
+ end
358
+
359
+ it "should charge with mastercard swipe and txn descriptor" do
360
+ Hps::TestHelper.valid_multi_use_config
361
+ service = Hps::HpsChargeService.new
362
+ txn_descriptor = "Best Company Ever"
363
+ track_data = Hps::HpsTrackData.new
364
+ track_data.value = '%B5473500000000014^MC TEST CARD^251210199998888777766665555444433332?;5473500000000014=25121019999888877776?'
365
+ track_data.method_obtained = Hps::HpsTrackDataMethod::SWIPE
366
+
367
+ charge = service.charge_swipe(10.00, "usd", track_data, nil, 0, false, txn_descriptor)
368
+
369
+ expect(charge).to_not be_nil
370
+ expect(charge.response_code).to eql("00")
371
+ end
372
+
373
+ it "should authorize with mastercard swipe and txn descriptor" do
374
+ Hps::TestHelper.valid_multi_use_config
375
+ service = Hps::HpsChargeService.new
376
+ txn_descriptor = "Best Company Ever"
377
+ track_data = Hps::HpsTrackData.new
378
+ track_data.value = '%B5473500000000014^MC TEST CARD^251210199998888777766665555444433332?;5473500000000014=25121019999888877776?'
379
+ track_data.method_obtained = Hps::HpsTrackDataMethod::SWIPE
380
+
381
+ authorize = service.authorize_swipe(10.00, "usd", track_data, nil, 0, false, txn_descriptor)
382
+
383
+ expect(authorize).to_not be_nil
384
+ expect(authorize.response_code).to eql("00")
385
+ end
386
+
387
+ end