hps 1.0.2 → 2.1.2

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 (57) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +4 -8
  3. data/LICENSE.txt +32 -32
  4. data/PRIVACY.txt +65 -65
  5. data/README.md +214 -41
  6. data/Rakefile +15 -15
  7. data/hps.gemspec +28 -26
  8. data/lib/hps.rb +48 -45
  9. data/lib/hps/configuration.rb +16 -16
  10. data/lib/hps/entities/hps_account_verify.rb +8 -8
  11. data/lib/hps/entities/hps_address.rb +6 -6
  12. data/lib/hps/entities/hps_authorization.rb +12 -12
  13. data/lib/hps/entities/hps_batch.rb +6 -6
  14. data/lib/hps/entities/hps_cardholder.rb +6 -10
  15. data/lib/hps/entities/hps_charge.rb +8 -8
  16. data/lib/hps/entities/hps_charge_exceptions.rb +6 -6
  17. data/lib/hps/entities/hps_credit_card.rb +34 -33
  18. data/lib/hps/entities/hps_direct_market_data.rb +5 -0
  19. data/lib/hps/entities/hps_encryption_data.rb +6 -0
  20. data/lib/hps/entities/hps_refund.rb +8 -8
  21. data/lib/hps/entities/hps_report_transaction_details.rb +10 -10
  22. data/lib/hps/entities/hps_report_transaction_summary.rb +6 -6
  23. data/lib/hps/entities/hps_reversal.rb +10 -10
  24. data/lib/hps/entities/hps_token_data.rb +10 -10
  25. data/lib/hps/entities/hps_track_data.rb +5 -0
  26. data/lib/hps/entities/hps_transaction.rb +161 -161
  27. data/lib/hps/entities/hps_transaction_details.rb +6 -6
  28. data/lib/hps/entities/hps_transaction_header.rb +8 -8
  29. data/lib/hps/entities/hps_transaction_type.rb +16 -16
  30. data/lib/hps/entities/hps_void.rb +8 -8
  31. data/lib/hps/infrastructure/api_connection_exception.rb +11 -11
  32. data/lib/hps/infrastructure/authentication_exception.rb +11 -11
  33. data/lib/hps/infrastructure/card_exception.rb +15 -15
  34. data/lib/hps/infrastructure/exceptions.json +468 -468
  35. data/lib/hps/infrastructure/hps_exception.rb +25 -25
  36. data/lib/hps/infrastructure/hps_exception_mapper.rb +134 -134
  37. data/lib/hps/infrastructure/hps_sdk_codes.rb +48 -48
  38. data/lib/hps/infrastructure/hps_track_data_method.rb +6 -0
  39. data/lib/hps/infrastructure/invalid_request_exception.rb +15 -15
  40. data/lib/hps/services/hps_batch_service.rb +29 -29
  41. data/lib/hps/services/hps_charge_service.rb +735 -635
  42. data/lib/hps/services/hps_service.rb +127 -128
  43. data/lib/hps/version.rb +3 -3
  44. data/tests/amex_tests.rb +292 -231
  45. data/tests/cert_tests.rb +80 -80
  46. data/tests/certification/card_present_spec.rb +320 -0
  47. data/tests/discover_tests.rb +386 -325
  48. data/tests/exception_mapper_tests.rb +244 -244
  49. data/tests/general_tests.rb +65 -57
  50. data/tests/hps_token_service.rb +56 -56
  51. data/tests/mastercard_tests.rb +387 -326
  52. data/tests/secret_key.rb +11 -11
  53. data/tests/test_data.rb +128 -128
  54. data/tests/test_helper.rb +115 -108
  55. data/tests/token_tests.rb +512 -512
  56. data/tests/visa_tests.rb +445 -378
  57. metadata +36 -3
@@ -1,58 +1,66 @@
1
- require File.join( File.dirname(__FILE__), "test_helper.rb" )
2
-
3
- describe "General Tests" do
4
-
5
- before(:each) do
6
- Hps::TestHelper.configure_hps_module()
7
- @service = Hps::HpsChargeService.new()
8
- end
9
-
10
- it "charge when amount is less than zero should throw invalid request exception" do
11
- expect {
12
- @service.charge(-5, "usd", Hps::TestData::valid_visa, Hps::TestData::valid_cardholder)
13
- }.to raise_error(Hps::InvalidRequestException)
14
- end
15
-
16
- it "charge when currency is empty should throw invalid request exception" do
17
- expect {
18
- @service.charge(50, "", Hps::TestData::valid_visa, Hps::TestData::valid_cardholder)
19
- }.to raise_error(Hps::InvalidRequestException)
20
- end
21
-
22
- it "charge when currency is not usd should throw invalid request exception" do
23
- expect {
24
- @service.charge(50, "eur", Hps::TestData::valid_visa, Hps::TestData::valid_cardholder)
25
- }.to raise_error(Hps::InvalidRequestException)
26
- end
27
-
28
- it "charge when configuration is invalid should throw hps exception" do
29
- expect {
30
- @service = Hps::HpsChargeService.new :service_uri => nil
31
- @service.charge(50, "usd", Hps::TestData::valid_visa, Hps::TestData::valid_cardholder)
32
- }.to raise_error(Hps::HpsException)
33
- end
34
-
35
- it "charge when license_id is invalid should throw authentication exception" do
36
- expect {
37
- @service = Hps::HpsChargeService.new :license_id => 11111
38
- @service.charge(50, "usd", Hps::TestData::valid_visa, Hps::TestData::valid_cardholder)
39
- }.to raise_error(Hps::AuthenticationException)
40
- end
41
-
42
- it "charge when card number is invalid should throw hps exception" do
43
- expect {
44
- @service.charge(50, "usd", Hps::TestData::invalid_card, Hps::TestData::valid_cardholder)
45
- }.to raise_error(Hps::HpsException)
46
- end
47
-
48
- it "list when charge is in filter range should show in list" do
49
- start_date = DateTime.now - 12.hours
50
- charge = @service.charge(50, "usd", Hps::TestData::valid_visa, Hps::TestData::valid_cardholder)
51
- end_date = DateTime.now
52
-
53
- charges = @service.list(start_date, end_date)
54
- expect(charges).to have_at_least(1).items
55
- expect(charges.any? { |c| c.transaction_id = charge.transaction_id }).to be_true
56
- end
57
-
1
+ require File.join( File.dirname(__FILE__), "test_helper.rb" )
2
+
3
+ describe "General Tests" do
4
+
5
+ before(:each) do
6
+ Hps::TestHelper.configure_hps_module()
7
+ @service = Hps::HpsChargeService.new()
8
+ end
9
+
10
+ it "SecretAPIKey with spaces on Visa charge should return OK" do
11
+ Hps::TestHelper.configure_hps_module_secret_key_with_spaces
12
+ @service = Hps::HpsChargeService.new()
13
+ result = @service.charge(5, "usd", Hps::TestData::valid_visa, Hps::TestData::valid_cardholder)
14
+ expect(result.response_code).to eql("00")
15
+ end
16
+
17
+
18
+ it "charge when amount is less than zero should throw invalid request exception" do
19
+ expect {
20
+ @service.charge(-5, "usd", Hps::TestData::valid_visa, Hps::TestData::valid_cardholder)
21
+ }.to raise_error(Hps::InvalidRequestException)
22
+ end
23
+
24
+ it "charge when currency is empty should throw invalid request exception" do
25
+ expect {
26
+ @service.charge(50, "", Hps::TestData::valid_visa, Hps::TestData::valid_cardholder)
27
+ }.to raise_error(Hps::InvalidRequestException)
28
+ end
29
+
30
+ it "charge when currency is not usd should throw invalid request exception" do
31
+ expect {
32
+ @service.charge(50, "eur", Hps::TestData::valid_visa, Hps::TestData::valid_cardholder)
33
+ }.to raise_error(Hps::InvalidRequestException)
34
+ end
35
+
36
+ it "charge when configuration is invalid should throw hps exception" do
37
+ expect {
38
+ @service = Hps::HpsChargeService.new :service_uri => nil
39
+ @service.charge(50, "usd", Hps::TestData::valid_visa, Hps::TestData::valid_cardholder)
40
+ }.to raise_error(Hps::HpsException)
41
+ end
42
+
43
+ it "charge when license_id is invalid should throw authentication exception" do
44
+ expect {
45
+ @service = Hps::HpsChargeService.new :license_id => 11111
46
+ @service.charge(50, "usd", Hps::TestData::valid_visa, Hps::TestData::valid_cardholder)
47
+ }.to raise_error(Hps::AuthenticationException)
48
+ end
49
+
50
+ it "charge when card number is invalid should throw hps exception" do
51
+ expect {
52
+ @service.charge(50, "usd", Hps::TestData::invalid_card, Hps::TestData::valid_cardholder)
53
+ }.to raise_error(Hps::HpsException)
54
+ end
55
+
56
+ it "list when charge is in filter range should show in list" do
57
+ start_date = DateTime.now - 12.hours
58
+ charge = @service.charge(50, "usd", Hps::TestData::valid_visa, Hps::TestData::valid_cardholder)
59
+ end_date = DateTime.now
60
+
61
+ charges = @service.list(start_date, end_date)
62
+ expect(charges).to have_at_least(1).items
63
+ expect(charges.any? { |c| c.transaction_id = charge.transaction_id }).to be_true
64
+ end
65
+
58
66
  end
@@ -1,56 +1,56 @@
1
- require 'net/http'
2
-
3
- require 'rubygems'
4
- require 'json'
5
-
6
- module Hps
7
- class HpsTokenService
8
- attr_accessor :public_api_key, :url
9
-
10
- def initialize(public_api_key)
11
- @public_api_key = public_api_key
12
- if @public_api_key.nil? || @public_api_key.eql?('')
13
- raise HpsException.new('Public Key Not Found', '0')
14
- end
15
-
16
- components = @public_api_key.split '_'
17
- if components.size < 3
18
- raise HpsException.new('Public API Key must contain at least two underscores','0')
19
- end
20
-
21
- if components[1].downcase.eql? 'prod'
22
- @url = 'https://api.heartlandportico.com/SecureSubmit.v1/api/token'
23
- else
24
- @url = 'https://posgateway.cert.secureexchange.net/Hps.Exchange.PosGateway.Hpf.v1/api/token'
25
- end
26
-
27
- end
28
-
29
- def get_token(card_data)
30
- data = {
31
- 'api_key' => @public_api_key,
32
- 'object' => 'token',
33
- 'token_type' => 'supt',
34
- '_method' => 'post',
35
- 'card[number]' => card_data.number,
36
- 'card[cvv]' => card_data.cvv,
37
- 'card[exp_month]' => card_data.exp_month,
38
- 'card[exp_year]' => card_data.exp_year
39
- }
40
- get_result = get(data)
41
- JSON.parse(get_result)
42
- end
43
-
44
- def get(data)
45
- begin
46
- uri = URI(@url)
47
- uri.query = URI.encode_www_form(data)
48
- res = Net::HTTP.get_response(uri)
49
- res.body
50
-
51
- rescue Exception => e
52
- raise HpsException.new(e.message,'0')
53
- end
54
- end
55
- end
56
- end
1
+ require 'net/http'
2
+
3
+ require 'rubygems'
4
+ require 'json'
5
+
6
+ module Hps
7
+ class HpsTokenService
8
+ attr_accessor :public_api_key, :url
9
+
10
+ def initialize(public_api_key)
11
+ @public_api_key = public_api_key
12
+ if @public_api_key.nil? || @public_api_key.eql?('')
13
+ raise HpsException.new('Public Key Not Found', '0')
14
+ end
15
+
16
+ components = @public_api_key.split '_'
17
+ if components.size < 3
18
+ raise HpsException.new('Public API Key must contain at least two underscores','0')
19
+ end
20
+
21
+ if components[1].downcase.eql? 'prod'
22
+ @url = 'https://api2.heartlandportico.com/SecureSubmit.v1/api/token'
23
+ else
24
+ @url = 'https://cert.api2.heartlandportico.com/Hps.Exchange.PosGateway.Hpf.v1/api/token'
25
+ end
26
+
27
+ end
28
+
29
+ def get_token(card_data)
30
+ data = {
31
+ 'api_key' => @public_api_key,
32
+ 'object' => 'token',
33
+ 'token_type' => 'supt',
34
+ '_method' => 'post',
35
+ 'card[number]' => card_data.number,
36
+ 'card[cvv]' => card_data.cvv,
37
+ 'card[exp_month]' => card_data.exp_month,
38
+ 'card[exp_year]' => card_data.exp_year
39
+ }
40
+ get_result = get(data)
41
+ JSON.parse(get_result)
42
+ end
43
+
44
+ def get(data)
45
+ begin
46
+ uri = URI(@url)
47
+ uri.query = URI.encode_www_form(data)
48
+ res = Net::HTTP.get_response(uri)
49
+ res.body
50
+
51
+ rescue Exception => e
52
+ raise HpsException.new(e.message,'0')
53
+ end
54
+ end
55
+ end
56
+ end
@@ -1,326 +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
- 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