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/secret_key.rb CHANGED
@@ -1,12 +1,12 @@
1
- require File.join( File.dirname(__FILE__), "test_helper" )
2
-
3
- describe "Secret Key Tests" do
4
-
5
- it "can charge with secret key" do
6
- Hps::TestHelper.configure_hps_module_secret_key()
7
- service = Hps::HpsChargeService.new()
8
- charge = service.charge(1.00, "usd", Hps::TestData.valid_visa, Hps::TestData.valid_cardholder)
9
- expect(charge.response_code).to eql("00")
10
- end
11
-
1
+ require File.join( File.dirname(__FILE__), "test_helper" )
2
+
3
+ describe "Secret Key Tests" do
4
+
5
+ it "can charge with secret key" do
6
+ Hps::TestHelper.configure_hps_module_secret_key()
7
+ service = Hps::HpsChargeService.new()
8
+ charge = service.charge(1.00, "usd", Hps::TestData.valid_visa, Hps::TestData.valid_cardholder)
9
+ expect(charge.response_code).to eql("00")
10
+ end
11
+
12
12
  end
data/tests/test_check.rb CHANGED
@@ -1,77 +1,77 @@
1
- require 'hps'
2
-
3
- module Hps
4
- module TestCheck
5
- def self.approve
6
- check = HpsCheck.new()
7
- check.account_number = '24413815'
8
- check.routing_number = '490000018'
9
- check.check_type = HpsCheckType.personal
10
- check.account_type = HpsAccountType.checking
11
- check.sec_code = HpsSECCode.ppd
12
-
13
- check.check_holder = HpsCheckHolder.new()
14
- check.check_holder.first_name = "Bill"
15
- check.check_holder.last_name = "Johnson"
16
- check.check_holder.address = HpsAddress.new
17
- check.check_holder.address.address = "One Heartland Way"
18
- check.check_holder.address.city = "Jeffersonville"
19
- check.check_holder.address.state = "IN"
20
- check.check_holder.address.zip = "47130"
21
- check.check_holder.address.country = "United States"
22
- check.check_holder.dl_number = '1234567'
23
- check.check_holder.dl_state = 'TX'
24
- check.check_holder.phone = '1234567890'
25
-
26
- check
27
- end
28
-
29
- def self.invalid_check_holder
30
- check = HpsCheck.new()
31
- check.account_number = '24413815'
32
- check.routing_number = '490000018'
33
- check.check_type = HpsCheckType.personal
34
- check.account_type = HpsAccountType.checking
35
- check.sec_code = HpsSECCode.ppd
36
-
37
- check.check_holder = HpsCheckHolder.new()
38
- check.check_holder.first_name = "Bill"
39
- check.check_holder.last_name = "Johnson"
40
- check.check_holder.address = HpsAddress.new
41
- check.check_holder.address.address = "One Heartland Way"
42
- check.check_holder.address.city = "Jeffersonville"
43
- check.check_holder.address.state = "IN"
44
- check.check_holder.address.zip = "47130"
45
- check.check_holder.address.country = "United States"
46
- check.check_holder.dl_number = ''
47
- check.check_holder.dl_state = ''
48
- check.check_holder.phone = '1234567890'
49
-
50
- check
51
- end
52
-
53
- def self.decline
54
- check = HpsCheck.new()
55
- check.account_number = '24413815'
56
- check.routing_number = '490000034'
57
- check.check_type = HpsCheckType.personal
58
- check.account_type = HpsAccountType.checking
59
- check.sec_code = HpsSECCode.ppd
60
-
61
- check.check_holder = HpsCheckHolder.new()
62
- check.check_holder.first_name = "Bill"
63
- check.check_holder.last_name = "Johnson"
64
- check.check_holder.address = HpsAddress.new
65
- check.check_holder.address.address = "One Heartland Way"
66
- check.check_holder.address.city = "Jeffersonville"
67
- check.check_holder.address.state = "IN"
68
- check.check_holder.address.zip = "47130"
69
- check.check_holder.address.country = "United States"
70
- check.check_holder.dl_number = '1234567'
71
- check.check_holder.dl_state = 'TX'
72
- check.check_holder.phone = '1234567890'
73
-
74
- check
75
- end
76
- end
77
- end
1
+ require 'hps'
2
+
3
+ module Hps
4
+ module TestCheck
5
+ def self.approve
6
+ check = HpsCheck.new()
7
+ check.account_number = '24413815'
8
+ check.routing_number = '490000018'
9
+ check.check_type = HpsCheckType.personal
10
+ check.account_type = HpsAccountType.checking
11
+ check.sec_code = HpsSECCode.ppd
12
+
13
+ check.check_holder = HpsCheckHolder.new()
14
+ check.check_holder.first_name = "Bill"
15
+ check.check_holder.last_name = "Johnson"
16
+ check.check_holder.address = HpsAddress.new
17
+ check.check_holder.address.address = "One Heartland Way"
18
+ check.check_holder.address.city = "Jeffersonville"
19
+ check.check_holder.address.state = "IN"
20
+ check.check_holder.address.zip = "47130"
21
+ check.check_holder.address.country = "United States"
22
+ check.check_holder.dl_number = '1234567'
23
+ check.check_holder.dl_state = 'TX'
24
+ check.check_holder.phone = '1234567890'
25
+
26
+ check
27
+ end
28
+
29
+ def self.invalid_check_holder
30
+ check = HpsCheck.new()
31
+ check.account_number = '24413815'
32
+ check.routing_number = '490000018'
33
+ check.check_type = HpsCheckType.personal
34
+ check.account_type = HpsAccountType.checking
35
+ check.sec_code = HpsSECCode.ppd
36
+
37
+ check.check_holder = HpsCheckHolder.new()
38
+ check.check_holder.first_name = "Bill"
39
+ check.check_holder.last_name = "Johnson"
40
+ check.check_holder.address = HpsAddress.new
41
+ check.check_holder.address.address = "One Heartland Way"
42
+ check.check_holder.address.city = "Jeffersonville"
43
+ check.check_holder.address.state = "IN"
44
+ check.check_holder.address.zip = "47130"
45
+ check.check_holder.address.country = "United States"
46
+ check.check_holder.dl_number = ''
47
+ check.check_holder.dl_state = ''
48
+ check.check_holder.phone = '1234567890'
49
+
50
+ check
51
+ end
52
+
53
+ def self.decline
54
+ check = HpsCheck.new()
55
+ check.account_number = '24413815'
56
+ check.routing_number = '490000034'
57
+ check.check_type = HpsCheckType.personal
58
+ check.account_type = HpsAccountType.checking
59
+ check.sec_code = HpsSECCode.ppd
60
+
61
+ check.check_holder = HpsCheckHolder.new()
62
+ check.check_holder.first_name = "Bill"
63
+ check.check_holder.last_name = "Johnson"
64
+ check.check_holder.address = HpsAddress.new
65
+ check.check_holder.address.address = "One Heartland Way"
66
+ check.check_holder.address.city = "Jeffersonville"
67
+ check.check_holder.address.state = "IN"
68
+ check.check_holder.address.zip = "47130"
69
+ check.check_holder.address.country = "United States"
70
+ check.check_holder.dl_number = '1234567'
71
+ check.check_holder.dl_state = 'TX'
72
+ check.check_holder.phone = '1234567890'
73
+
74
+ check
75
+ end
76
+ end
77
+ end
data/tests/test_data.rb CHANGED
@@ -1,138 +1,138 @@
1
- require 'hps'
2
-
3
- module Hps
4
- module TestData
5
-
6
- # card holders
7
-
8
- def self.valid_cardholder
9
- result = HpsCardHolder.new()
10
- result.first_name = "Bill"
11
- result.last_name = "Johnson"
12
- result.address = HpsAddress.new
13
- result.address.address = "One Heartland Way"
14
- result.address.city = "Jeffersonville"
15
- result.address.state = "IN"
16
- result.address.zip = "47130"
17
- result.address.country = "United States"
18
- result
19
- end
20
-
21
- def self.cert_cardholder_shortzip
22
- result = HpsCardHolder.new()
23
- result.first_name = "Bill"
24
- result.last_name = "Johnson"
25
- result.address = HpsAddress.new
26
- result.address.address = "6860 Dallas Pkwy"
27
- result.address.city = "Irvine"
28
- result.address.state = "TX"
29
- result.address.zip = "75024"
30
- result.address.country = "United States"
31
- result
32
- end
33
-
34
- def self.cert_cardholder_shortzip_no_street
35
- result = HpsCardHolder.new()
36
- result.first_name = "Bill"
37
- result.last_name = "Johnson"
38
- result.address = HpsAddress.new
39
- result.address.city = "Irvine"
40
- result.address.state = "TX"
41
- result.address.zip = "75024"
42
- result.address.country = "United States"
43
- result
44
- end
45
-
46
- def self.cert_cardholder_longzip
47
- result = HpsCardHolder.new()
48
- result.first_name = "Bill"
49
- result.last_name = "Johnson"
50
- result.address = HpsAddress.new
51
- result.address.address = "6860 Dallas Pkwy"
52
- result.address.city = "Irvine"
53
- result.address.state = "TX"
54
- result.address.zip = "750241234"
55
- result.address.country = "United States"
56
- result
57
- end
58
-
59
- def self.cert_cardholder_longzip_no_street
60
- result = HpsCardHolder.new()
61
- result.first_name = "Bill"
62
- result.last_name = "Johnson"
63
- result.address = HpsAddress.new
64
- result.address.city = "Irvine"
65
- result.address.state = "TX"
66
- result.address.zip = "750241234"
67
- result.address.country = "United States"
68
- result
69
- end
70
-
71
- # credit cards
72
-
73
- def self.valid_visa
74
- result = HpsCreditCard.new
75
- result.cvv = 123
76
- result.exp_month = 12
77
- result.exp_year = 2025
78
- result.number = 4012002000060016
79
- result
80
- end
81
-
82
- def self.valid_mastercard
83
- result = HpsCreditCard.new
84
- result.cvv = 123
85
- result.exp_month = 12
86
- result.exp_year = 2025
87
- result.number = 5473500000000014
88
- result
89
- end
90
-
91
- def self.valid_discover
92
- result = HpsCreditCard.new
93
- result.cvv = 123
94
- result.exp_month = 12
95
- result.exp_year = 2025
96
- result.number = 6011000990156527
97
- result
98
- end
99
-
100
- def self.valid_amex
101
- result = HpsCreditCard.new
102
- result.cvv = 1234
103
- result.exp_month = 12
104
- result.exp_year = 2025
105
- result.number = 372700699251018
106
- result
107
- end
108
-
109
- def self.valid_jcb
110
- result = HpsCreditCard.new
111
- result.cvv = 123
112
- result.exp_month = 12
113
- result.exp_year = 2025
114
- result.number = 3566007770007321
115
- result
116
- end
117
-
118
- def self.invalid_card
119
- result = HpsCreditCard.new
120
- result.cvv = 123
121
- result.exp_month = 12
122
- result.exp_year = 2025
123
- result.number = 12345
124
- result
125
- end
126
-
127
- # =============
128
- # = Giftcards =
129
- # =============
130
- TEST_CARD_NUMBERS = (6277200000000001..6277200000000099)
131
-
132
- def self.valid_gift_card_not_encrypted(random = true)
133
- return HpsGiftCard.new(Random.rand(TEST_CARD_NUMBERS)) if random
134
- return HpsGiftCard.new(TEST_CARD_NUMBERS.first) if !random
135
- end # valid_gift_card_not_encrypted
136
-
137
- end
138
- end
1
+ require 'hps'
2
+
3
+ module Hps
4
+ module TestData
5
+
6
+ # card holders
7
+
8
+ def self.valid_cardholder
9
+ result = HpsCardHolder.new()
10
+ result.first_name = "Bill"
11
+ result.last_name = "Johnson"
12
+ result.address = HpsAddress.new
13
+ result.address.address = "One Heartland Way"
14
+ result.address.city = "Jeffersonville"
15
+ result.address.state = "IN"
16
+ result.address.zip = "47130"
17
+ result.address.country = "United States"
18
+ result
19
+ end
20
+
21
+ def self.cert_cardholder_shortzip
22
+ result = HpsCardHolder.new()
23
+ result.first_name = "Bill"
24
+ result.last_name = "Johnson"
25
+ result.address = HpsAddress.new
26
+ result.address.address = "6860 Dallas Pkwy"
27
+ result.address.city = "Irvine"
28
+ result.address.state = "TX"
29
+ result.address.zip = "75024"
30
+ result.address.country = "United States"
31
+ result
32
+ end
33
+
34
+ def self.cert_cardholder_shortzip_no_street
35
+ result = HpsCardHolder.new()
36
+ result.first_name = "Bill"
37
+ result.last_name = "Johnson"
38
+ result.address = HpsAddress.new
39
+ result.address.city = "Irvine"
40
+ result.address.state = "TX"
41
+ result.address.zip = "75024"
42
+ result.address.country = "United States"
43
+ result
44
+ end
45
+
46
+ def self.cert_cardholder_longzip
47
+ result = HpsCardHolder.new()
48
+ result.first_name = "Bill"
49
+ result.last_name = "Johnson"
50
+ result.address = HpsAddress.new
51
+ result.address.address = "6860 Dallas Pkwy"
52
+ result.address.city = "Irvine"
53
+ result.address.state = "TX"
54
+ result.address.zip = "750241234"
55
+ result.address.country = "United States"
56
+ result
57
+ end
58
+
59
+ def self.cert_cardholder_longzip_no_street
60
+ result = HpsCardHolder.new()
61
+ result.first_name = "Bill"
62
+ result.last_name = "Johnson"
63
+ result.address = HpsAddress.new
64
+ result.address.city = "Irvine"
65
+ result.address.state = "TX"
66
+ result.address.zip = "750241234"
67
+ result.address.country = "United States"
68
+ result
69
+ end
70
+
71
+ # credit cards
72
+
73
+ def self.valid_visa
74
+ result = HpsCreditCard.new
75
+ result.cvv = 123
76
+ result.exp_month = 12
77
+ result.exp_year = 2025
78
+ result.number = 4012002000060016
79
+ result
80
+ end
81
+
82
+ def self.valid_mastercard
83
+ result = HpsCreditCard.new
84
+ result.cvv = 123
85
+ result.exp_month = 12
86
+ result.exp_year = 2025
87
+ result.number = 5473500000000014
88
+ result
89
+ end
90
+
91
+ def self.valid_discover
92
+ result = HpsCreditCard.new
93
+ result.cvv = 123
94
+ result.exp_month = 12
95
+ result.exp_year = 2025
96
+ result.number = 6011000990156527
97
+ result
98
+ end
99
+
100
+ def self.valid_amex
101
+ result = HpsCreditCard.new
102
+ result.cvv = 1234
103
+ result.exp_month = 12
104
+ result.exp_year = 2025
105
+ result.number = 372700699251018
106
+ result
107
+ end
108
+
109
+ def self.valid_jcb
110
+ result = HpsCreditCard.new
111
+ result.cvv = 123
112
+ result.exp_month = 12
113
+ result.exp_year = 2025
114
+ result.number = 3566007770007321
115
+ result
116
+ end
117
+
118
+ def self.invalid_card
119
+ result = HpsCreditCard.new
120
+ result.cvv = 123
121
+ result.exp_month = 12
122
+ result.exp_year = 2025
123
+ result.number = 12345
124
+ result
125
+ end
126
+
127
+ # =============
128
+ # = Giftcards =
129
+ # =============
130
+ TEST_CARD_NUMBERS = (6277200000000001..6277200000000099)
131
+
132
+ def self.valid_gift_card_not_encrypted(random = true)
133
+ return HpsGiftCard.new(Random.rand(TEST_CARD_NUMBERS)) if random
134
+ return HpsGiftCard.new(TEST_CARD_NUMBERS.first) if !random
135
+ end # valid_gift_card_not_encrypted
136
+
137
+ end
138
+ end