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.
- checksums.yaml +4 -4
- data/Gemfile +4 -4
- data/Gemfile.lock +59 -0
- data/LICENSE.md +264 -264
- data/PRIVACY.txt +65 -65
- data/README.md +213 -213
- data/Rakefile +15 -15
- data/examples/sinatra-verify-only/Gemfile +4 -4
- data/examples/sinatra-verify-only/app.rb +32 -32
- data/examples/sinatra-verify-only/views/index.erb +478 -478
- data/examples/sinatra-verify-only/views/result.erb +39 -39
- data/hps.gemspec +28 -27
- data/lib/hps/configuration.rb +17 -17
- data/lib/hps/entities/hps_account_verify.rb +8 -8
- data/lib/hps/entities/hps_address.rb +6 -6
- data/lib/hps/entities/hps_authorization.rb +12 -12
- data/lib/hps/entities/hps_batch.rb +6 -6
- data/lib/hps/entities/hps_cardholder.rb +6 -6
- data/lib/hps/entities/hps_charge.rb +8 -8
- data/lib/hps/entities/hps_charge_exceptions.rb +6 -6
- data/lib/hps/entities/hps_check.rb +18 -18
- data/lib/hps/entities/hps_check_holder.rb +10 -10
- data/lib/hps/entities/hps_check_response.rb +45 -45
- data/lib/hps/entities/hps_check_response_details.rb +9 -9
- data/lib/hps/entities/hps_credit_card.rb +34 -34
- data/lib/hps/entities/hps_direct_market_data.rb +5 -5
- data/lib/hps/entities/hps_encryption_data.rb +6 -6
- data/lib/hps/entities/hps_gift_card.rb +133 -133
- data/lib/hps/entities/hps_manage_tokens.rb +8 -8
- data/lib/hps/entities/hps_refund.rb +8 -8
- data/lib/hps/entities/hps_report_transaction_details.rb +10 -10
- data/lib/hps/entities/hps_report_transaction_summary.rb +6 -6
- data/lib/hps/entities/hps_reversal.rb +10 -10
- data/lib/hps/entities/hps_token_data.rb +10 -10
- data/lib/hps/entities/hps_track_data.rb +5 -5
- data/lib/hps/entities/hps_transaction.rb +161 -161
- data/lib/hps/entities/hps_transaction_details.rb +6 -6
- data/lib/hps/entities/hps_transaction_header.rb +8 -8
- data/lib/hps/entities/hps_transaction_type.rb +16 -16
- data/lib/hps/entities/hps_void.rb +8 -8
- data/lib/hps/infrastructure/api_connection_exception.rb +11 -11
- data/lib/hps/infrastructure/authentication_exception.rb +11 -11
- data/lib/hps/infrastructure/card_exception.rb +15 -15
- data/lib/hps/infrastructure/exceptions.json +547 -547
- data/lib/hps/infrastructure/hps_account_type.rb +11 -11
- data/lib/hps/infrastructure/hps_check_exception.rb +13 -13
- data/lib/hps/infrastructure/hps_check_type.rb +11 -11
- data/lib/hps/infrastructure/hps_data_entry_mode.rb +11 -11
- data/lib/hps/infrastructure/hps_exception.rb +25 -25
- data/lib/hps/infrastructure/hps_exception_mapper.rb +145 -145
- data/lib/hps/infrastructure/hps_gateway_response_validation.rb +20 -20
- data/lib/hps/infrastructure/hps_input_validation.rb +13 -13
- data/lib/hps/infrastructure/hps_sdk_codes.rb +48 -48
- data/lib/hps/infrastructure/hps_sec_code.rb +27 -27
- data/lib/hps/infrastructure/hps_track_data_method.rb +6 -6
- data/lib/hps/infrastructure/invalid_request_exception.rb +15 -15
- data/lib/hps/services/hps_batch_service.rb +29 -29
- data/lib/hps/services/hps_charge_service.rb +773 -773
- data/lib/hps/services/hps_check_service.rb +110 -110
- data/lib/hps/services/hps_gift_card_service.rb +301 -301
- data/lib/hps/services/hps_service.rb +141 -136
- data/lib/hps/version.rb +3 -3
- data/lib/hps.rb +63 -63
- data/tests/amex_tests.rb +292 -292
- data/tests/cert_tests.rb +80 -80
- data/tests/certification/card_present_spec.rb +320 -320
- data/tests/certification/gift_card_certification_test.rb +106 -106
- data/tests/certification/gift_card_certification_tests.rb +107 -107
- data/tests/check_tests.rb +50 -50
- data/tests/discover_tests.rb +386 -386
- data/tests/exception_mapper_tests.rb +311 -311
- data/tests/general_tests.rb +140 -140
- data/tests/giftcard_tests.rb +212 -212
- data/tests/hps_token_service.rb +56 -56
- data/tests/mastercard_tests.rb +387 -387
- data/tests/secret_key.rb +11 -11
- data/tests/test_check.rb +77 -77
- data/tests/test_data.rb +138 -138
- data/tests/test_helper.rb +179 -179
- data/tests/token_tests.rb +512 -512
- data/tests/visa_tests.rb +445 -445
- metadata +31 -11
@@ -1,39 +1,39 @@
|
|
1
|
-
<!--[if IE]><![endif]-->
|
2
|
-
<!--[if lt IE 7 ]> <html lang="en" class="ie6"> <![endif]-->
|
3
|
-
<!--[if IE 7 ]> <html lang="en" class="ie7"> <![endif]-->
|
4
|
-
<!--[if IE 8 ]> <html lang="en" class="ie8"> <![endif]-->
|
5
|
-
<!--[if IE 9 ]> <html lang="en" class="ie9"> <![endif]-->
|
6
|
-
<!--[if (gt IE 9)|!(IE)]><!-->
|
7
|
-
<html lang="en"><!--<![endif]-->
|
8
|
-
<head>
|
9
|
-
<meta charset="utf-8">
|
10
|
-
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
11
|
-
<meta name="viewport" content="width=device-width, initial-scale=1">
|
12
|
-
<meta name="description" content="SecureSubmit Ruby end-to-end payment example using tokenization.">
|
13
|
-
<meta name="author" content="Mark Hagan">
|
14
|
-
<title>Simple Payment Form Demo</title>
|
15
|
-
|
16
|
-
<link src="https://cdnjs.cloudflare.com/ajax/libs/normalize/5.0.0/normalize.css">
|
17
|
-
<script src="https://cdnjs.cloudflare.com/ajax/libs/modernizr/2.8.3/modernizr.min.js"></script>
|
18
|
-
</head>
|
19
|
-
<body>
|
20
|
-
<div class="container">
|
21
|
-
<div class="row col-xs-12">
|
22
|
-
<h1>Ruby SecureSubmit Example</h1>
|
23
|
-
</div>
|
24
|
-
|
25
|
-
<h2>Results</h2>
|
26
|
-
|
27
|
-
<table>
|
28
|
-
<tr>
|
29
|
-
<td>Response Code</td>
|
30
|
-
<td><%= verification.response_code %>
|
31
|
-
</tr>
|
32
|
-
<tr>
|
33
|
-
<td>Multi-use Token</td>
|
34
|
-
<td><%= verification.token_data.token_value unless verification.token_data.nil? %>
|
35
|
-
</tr>
|
36
|
-
</table>
|
37
|
-
</div>
|
38
|
-
</body>
|
39
|
-
</html>
|
1
|
+
<!--[if IE]><![endif]-->
|
2
|
+
<!--[if lt IE 7 ]> <html lang="en" class="ie6"> <![endif]-->
|
3
|
+
<!--[if IE 7 ]> <html lang="en" class="ie7"> <![endif]-->
|
4
|
+
<!--[if IE 8 ]> <html lang="en" class="ie8"> <![endif]-->
|
5
|
+
<!--[if IE 9 ]> <html lang="en" class="ie9"> <![endif]-->
|
6
|
+
<!--[if (gt IE 9)|!(IE)]><!-->
|
7
|
+
<html lang="en"><!--<![endif]-->
|
8
|
+
<head>
|
9
|
+
<meta charset="utf-8">
|
10
|
+
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
11
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
12
|
+
<meta name="description" content="SecureSubmit Ruby end-to-end payment example using tokenization.">
|
13
|
+
<meta name="author" content="Mark Hagan">
|
14
|
+
<title>Simple Payment Form Demo</title>
|
15
|
+
|
16
|
+
<link src="https://cdnjs.cloudflare.com/ajax/libs/normalize/5.0.0/normalize.css">
|
17
|
+
<script src="https://cdnjs.cloudflare.com/ajax/libs/modernizr/2.8.3/modernizr.min.js"></script>
|
18
|
+
</head>
|
19
|
+
<body>
|
20
|
+
<div class="container">
|
21
|
+
<div class="row col-xs-12">
|
22
|
+
<h1>Ruby SecureSubmit Example</h1>
|
23
|
+
</div>
|
24
|
+
|
25
|
+
<h2>Results</h2>
|
26
|
+
|
27
|
+
<table>
|
28
|
+
<tr>
|
29
|
+
<td>Response Code</td>
|
30
|
+
<td><%= verification.response_code %>
|
31
|
+
</tr>
|
32
|
+
<tr>
|
33
|
+
<td>Multi-use Token</td>
|
34
|
+
<td><%= verification.token_data.token_value unless verification.token_data.nil? %>
|
35
|
+
</tr>
|
36
|
+
</table>
|
37
|
+
</div>
|
38
|
+
</body>
|
39
|
+
</html>
|
data/hps.gemspec
CHANGED
@@ -1,27 +1,28 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
lib = File.expand_path('../lib', __FILE__)
|
3
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require 'hps/version'
|
5
|
-
|
6
|
-
Gem::Specification.new do |spec|
|
7
|
-
spec.name = "hps"
|
8
|
-
spec.version = Hps::VERSION
|
9
|
-
spec.authors = ["Heartland Payment Systems"]
|
10
|
-
spec.email = ["IntegrationSupportTeam@e-hps.com"]
|
11
|
-
spec.description = %q{Ruby SDK for processing payments via Portico Gateway}
|
12
|
-
spec.summary = %q{Heartland Payment Systems - Portico Gateway SDK}
|
13
|
-
spec.homepage = ""
|
14
|
-
spec.license = "GPL-2.0"
|
15
|
-
|
16
|
-
spec.files = `git ls-files`.split($/)
|
17
|
-
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
-
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
-
spec.require_paths = ["lib"]
|
20
|
-
|
21
|
-
spec.add_development_dependency "bundler", "~>
|
22
|
-
spec.add_development_dependency "rake"
|
23
|
-
spec.add_development_dependency "rspec"
|
24
|
-
spec.add_development_dependency "pry"
|
25
|
-
spec.add_dependency('builder', '>= 2.1.2', '< 4.0.0')
|
26
|
-
spec.add_dependency('activesupport', '>= 2.3.14', '<=
|
27
|
-
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'hps/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "hps"
|
8
|
+
spec.version = Hps::VERSION
|
9
|
+
spec.authors = ["Heartland Payment Systems"]
|
10
|
+
spec.email = ["IntegrationSupportTeam@e-hps.com"]
|
11
|
+
spec.description = %q{Ruby SDK for processing payments via Portico Gateway}
|
12
|
+
spec.summary = %q{Heartland Payment Systems - Portico Gateway SDK}
|
13
|
+
spec.homepage = ""
|
14
|
+
spec.license = "GPL-2.0"
|
15
|
+
|
16
|
+
spec.files = `git ls-files`.split($/)
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ["lib"]
|
20
|
+
|
21
|
+
spec.add_development_dependency "bundler", "~> 2.5.6"
|
22
|
+
spec.add_development_dependency "rake"
|
23
|
+
spec.add_development_dependency "rspec"
|
24
|
+
spec.add_development_dependency "pry"
|
25
|
+
spec.add_dependency('builder', '>= 2.1.2', '< 4.0.0')
|
26
|
+
spec.add_dependency('activesupport', '>= 2.3.14', '<= 7.1.3')
|
27
|
+
spec.add_dependency('rexml', '~> 3.2', '>= 3.2.4')
|
28
|
+
end
|
data/lib/hps/configuration.rb
CHANGED
@@ -1,17 +1,17 @@
|
|
1
|
-
module Hps
|
2
|
-
module Configuration
|
3
|
-
|
4
|
-
VALID_CONFIG_KEYS = [ :service_uri, :user_name, :password, :developer_id, :version_number, :license_id, :device_id, :site_id, :site_trace, :secret_api_key, :http_options ].freeze
|
5
|
-
|
6
|
-
attr_accessor *VALID_CONFIG_KEYS
|
7
|
-
|
8
|
-
def configure
|
9
|
-
yield self
|
10
|
-
end
|
11
|
-
|
12
|
-
def options
|
13
|
-
Hash[ * VALID_CONFIG_KEYS.map { |key| [key, send(key)] }.flatten ]
|
14
|
-
end
|
15
|
-
|
16
|
-
end
|
17
|
-
end
|
1
|
+
module Hps
|
2
|
+
module Configuration
|
3
|
+
|
4
|
+
VALID_CONFIG_KEYS = [ :service_uri, :user_name, :password, :developer_id, :version_number, :license_id, :device_id, :site_id, :site_trace, :secret_api_key, :http_options ].freeze
|
5
|
+
|
6
|
+
attr_accessor *VALID_CONFIG_KEYS
|
7
|
+
|
8
|
+
def configure
|
9
|
+
yield self
|
10
|
+
end
|
11
|
+
|
12
|
+
def options
|
13
|
+
Hash[ * VALID_CONFIG_KEYS.map { |key| [key, send(key)] }.flatten ]
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
@@ -1,9 +1,9 @@
|
|
1
|
-
module Hps
|
2
|
-
class HpsAccountVerify < HpsAuthorization
|
3
|
-
|
4
|
-
def initialize(header)
|
5
|
-
super(header)
|
6
|
-
end
|
7
|
-
|
8
|
-
end
|
1
|
+
module Hps
|
2
|
+
class HpsAccountVerify < HpsAuthorization
|
3
|
+
|
4
|
+
def initialize(header)
|
5
|
+
super(header)
|
6
|
+
end
|
7
|
+
|
8
|
+
end
|
9
9
|
end
|
@@ -1,7 +1,7 @@
|
|
1
|
-
module Hps
|
2
|
-
class HpsAddress
|
3
|
-
|
4
|
-
attr_accessor :address, :city, :state, :zip, :country
|
5
|
-
|
6
|
-
end
|
1
|
+
module Hps
|
2
|
+
class HpsAddress
|
3
|
+
|
4
|
+
attr_accessor :address, :city, :state, :zip, :country
|
5
|
+
|
6
|
+
end
|
7
7
|
end
|
@@ -1,13 +1,13 @@
|
|
1
|
-
module Hps
|
2
|
-
class HpsAuthorization < HpsTransaction
|
3
|
-
|
4
|
-
attr_accessor :avs_result_code, :avs_result_text, :cvv_result_code,
|
5
|
-
:cvv_result_text, :cpc_indicator, :authorization_code,
|
6
|
-
:authorized_amount, :card_type, :token_data
|
7
|
-
|
8
|
-
def initialize(header)
|
9
|
-
super(header)
|
10
|
-
end
|
11
|
-
|
12
|
-
end
|
1
|
+
module Hps
|
2
|
+
class HpsAuthorization < HpsTransaction
|
3
|
+
|
4
|
+
attr_accessor :avs_result_code, :avs_result_text, :cvv_result_code,
|
5
|
+
:cvv_result_text, :cpc_indicator, :authorization_code,
|
6
|
+
:authorized_amount, :card_type, :token_data
|
7
|
+
|
8
|
+
def initialize(header)
|
9
|
+
super(header)
|
10
|
+
end
|
11
|
+
|
12
|
+
end
|
13
13
|
end
|
@@ -1,7 +1,7 @@
|
|
1
|
-
module Hps
|
2
|
-
class HpsBatch
|
3
|
-
|
4
|
-
attr_accessor :id, :transaction_count, :total_amount, :sequence_number
|
5
|
-
|
6
|
-
end
|
1
|
+
module Hps
|
2
|
+
class HpsBatch
|
3
|
+
|
4
|
+
attr_accessor :id, :transaction_count, :total_amount, :sequence_number
|
5
|
+
|
6
|
+
end
|
7
7
|
end
|
@@ -1,7 +1,7 @@
|
|
1
|
-
module Hps
|
2
|
-
class HpsCardHolder
|
3
|
-
|
4
|
-
attr_accessor :first_name, :last_name, :phone, :email_address, :address
|
5
|
-
|
6
|
-
end
|
1
|
+
module Hps
|
2
|
+
class HpsCardHolder
|
3
|
+
|
4
|
+
attr_accessor :first_name, :last_name, :phone, :email_address, :address
|
5
|
+
|
6
|
+
end
|
7
7
|
end
|
@@ -1,9 +1,9 @@
|
|
1
|
-
module Hps
|
2
|
-
class HpsCharge < HpsAuthorization
|
3
|
-
|
4
|
-
def initialize(header)
|
5
|
-
super(header)
|
6
|
-
end
|
7
|
-
|
8
|
-
end
|
1
|
+
module Hps
|
2
|
+
class HpsCharge < HpsAuthorization
|
3
|
+
|
4
|
+
def initialize(header)
|
5
|
+
super(header)
|
6
|
+
end
|
7
|
+
|
8
|
+
end
|
9
9
|
end
|
@@ -1,7 +1,7 @@
|
|
1
|
-
module Hps
|
2
|
-
class HpsChargeExceptions
|
3
|
-
|
4
|
-
attr_accessor :card_exception, :hps_exception
|
5
|
-
|
6
|
-
end
|
1
|
+
module Hps
|
2
|
+
class HpsChargeExceptions
|
3
|
+
|
4
|
+
attr_accessor :card_exception, :hps_exception
|
5
|
+
|
6
|
+
end
|
7
7
|
end
|
@@ -1,18 +1,18 @@
|
|
1
|
-
module Hps
|
2
|
-
class HpsCheck
|
3
|
-
attr_accessor :routing_number,
|
4
|
-
:account_number,
|
5
|
-
:check_number,
|
6
|
-
:check_type,
|
7
|
-
:check_holder,
|
8
|
-
:micr_number,
|
9
|
-
:account_type,
|
10
|
-
:data_entry_mode,
|
11
|
-
:check_verify,
|
12
|
-
:sec_code
|
13
|
-
|
14
|
-
def initialize
|
15
|
-
@data_entry_mode = HpsDataEntryMode.manual
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
1
|
+
module Hps
|
2
|
+
class HpsCheck
|
3
|
+
attr_accessor :routing_number,
|
4
|
+
:account_number,
|
5
|
+
:check_number,
|
6
|
+
:check_type,
|
7
|
+
:check_holder,
|
8
|
+
:micr_number,
|
9
|
+
:account_type,
|
10
|
+
:data_entry_mode,
|
11
|
+
:check_verify,
|
12
|
+
:sec_code
|
13
|
+
|
14
|
+
def initialize
|
15
|
+
@data_entry_mode = HpsDataEntryMode.manual
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -1,10 +1,10 @@
|
|
1
|
-
module Hps
|
2
|
-
class HpsCheckHolder < HpsCardHolder
|
3
|
-
attr_accessor :check_name,
|
4
|
-
:dl_state,
|
5
|
-
:dl_number,
|
6
|
-
:ssl4,
|
7
|
-
:dob_year,
|
8
|
-
:courtesy_card
|
9
|
-
end
|
10
|
-
end
|
1
|
+
module Hps
|
2
|
+
class HpsCheckHolder < HpsCardHolder
|
3
|
+
attr_accessor :check_name,
|
4
|
+
:dl_state,
|
5
|
+
:dl_number,
|
6
|
+
:ssl4,
|
7
|
+
:dob_year,
|
8
|
+
:courtesy_card
|
9
|
+
end
|
10
|
+
end
|
@@ -1,45 +1,45 @@
|
|
1
|
-
module Hps
|
2
|
-
class HpsCheckResponse < HpsTransaction
|
3
|
-
attr_accessor :authorization_code,
|
4
|
-
:customer_id,
|
5
|
-
:details
|
6
|
-
|
7
|
-
def self.from_hash(rsp, txn_type)
|
8
|
-
header = rsp["Header"]
|
9
|
-
data = rsp["Transaction"][txn_type.to_s]
|
10
|
-
|
11
|
-
result = HpsCheckResponse.new(HpsService.new.hydrate_transaction_header(header))
|
12
|
-
result.transaction_id = header["GatewayTxnId"]
|
13
|
-
result.authorization_code = data["AuthCode"]
|
14
|
-
result.reference_number = data["RefNbr"]
|
15
|
-
result.response_code = data["RspCode"]
|
16
|
-
result.response_text = data["RspMessage"]
|
17
|
-
|
18
|
-
if data["CheckRspInfo"]
|
19
|
-
result.details = []
|
20
|
-
check_info = data["CheckRspInfo"]
|
21
|
-
if check_info.is_a? Hash
|
22
|
-
result.details = HpsCheckResponse.hydrate_rsp_details(check_info)
|
23
|
-
else
|
24
|
-
check_info.map { |details|
|
25
|
-
result.details.push HpsCheckResponse.hydrate_rsp_details(details)
|
26
|
-
}
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
result
|
31
|
-
end
|
32
|
-
|
33
|
-
private
|
34
|
-
|
35
|
-
def self.hydrate_rsp_details(check_info)
|
36
|
-
details = HpsCheckResponseDetails.new
|
37
|
-
details.message_type = check_info["Type"]
|
38
|
-
details.code = check_info["Code"]
|
39
|
-
details.message = check_info["Message"]
|
40
|
-
details.field_number = check_info["FieldNumber"]
|
41
|
-
details.field_name = check_info["FieldName"]
|
42
|
-
details
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
1
|
+
module Hps
|
2
|
+
class HpsCheckResponse < HpsTransaction
|
3
|
+
attr_accessor :authorization_code,
|
4
|
+
:customer_id,
|
5
|
+
:details
|
6
|
+
|
7
|
+
def self.from_hash(rsp, txn_type)
|
8
|
+
header = rsp["Header"]
|
9
|
+
data = rsp["Transaction"][txn_type.to_s]
|
10
|
+
|
11
|
+
result = HpsCheckResponse.new(HpsService.new.hydrate_transaction_header(header))
|
12
|
+
result.transaction_id = header["GatewayTxnId"]
|
13
|
+
result.authorization_code = data["AuthCode"]
|
14
|
+
result.reference_number = data["RefNbr"]
|
15
|
+
result.response_code = data["RspCode"]
|
16
|
+
result.response_text = data["RspMessage"]
|
17
|
+
|
18
|
+
if data["CheckRspInfo"]
|
19
|
+
result.details = []
|
20
|
+
check_info = data["CheckRspInfo"]
|
21
|
+
if check_info.is_a? Hash
|
22
|
+
result.details = HpsCheckResponse.hydrate_rsp_details(check_info)
|
23
|
+
else
|
24
|
+
check_info.map { |details|
|
25
|
+
result.details.push HpsCheckResponse.hydrate_rsp_details(details)
|
26
|
+
}
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
result
|
31
|
+
end
|
32
|
+
|
33
|
+
private
|
34
|
+
|
35
|
+
def self.hydrate_rsp_details(check_info)
|
36
|
+
details = HpsCheckResponseDetails.new
|
37
|
+
details.message_type = check_info["Type"]
|
38
|
+
details.code = check_info["Code"]
|
39
|
+
details.message = check_info["Message"]
|
40
|
+
details.field_number = check_info["FieldNumber"]
|
41
|
+
details.field_name = check_info["FieldName"]
|
42
|
+
details
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -1,9 +1,9 @@
|
|
1
|
-
module Hps
|
2
|
-
class HpsCheckResponseDetails
|
3
|
-
attr_accessor :message_type,
|
4
|
-
:code,
|
5
|
-
:message,
|
6
|
-
:field_number,
|
7
|
-
:field_name
|
8
|
-
end
|
9
|
-
end
|
1
|
+
module Hps
|
2
|
+
class HpsCheckResponseDetails
|
3
|
+
attr_accessor :message_type,
|
4
|
+
:code,
|
5
|
+
:message,
|
6
|
+
:field_number,
|
7
|
+
:field_name
|
8
|
+
end
|
9
|
+
end
|
@@ -1,34 +1,34 @@
|
|
1
|
-
module Hps
|
2
|
-
class HpsCreditCard
|
3
|
-
|
4
|
-
attr_accessor :number, :cvv, :exp_month,
|
5
|
-
:exp_year, :card_present, :reader_present
|
6
|
-
|
7
|
-
def initialize
|
8
|
-
|
9
|
-
@regex_map = {
|
10
|
-
:Amex => /^3[47][0-9]{13}$/,
|
11
|
-
:MasterCard => /^5[1-5][0-9]{14}$/,
|
12
|
-
:Visa => /^4[0-9]{12}(?:[0-9]{3})?$/,
|
13
|
-
:DinersClub => /^3(?:0[0-5]|[68][0-9])[0-9]{11}$/,
|
14
|
-
:EnRoute => /^(2014|2149)/,
|
15
|
-
:Discover => /^6(?:011|5[0-9]{2})[0-9]{12}$/,
|
16
|
-
:Jcb => /^(?:2131|1800|35\\d{3})\\d{11}$/
|
17
|
-
}
|
18
|
-
|
19
|
-
end
|
20
|
-
|
21
|
-
def card_type
|
22
|
-
|
23
|
-
@regex_map.each { |key, value|
|
24
|
-
unless value.match(number.to_s).nil?
|
25
|
-
return key
|
26
|
-
end
|
27
|
-
}
|
28
|
-
|
29
|
-
"Unknown"
|
30
|
-
|
31
|
-
end
|
32
|
-
|
33
|
-
end
|
34
|
-
end
|
1
|
+
module Hps
|
2
|
+
class HpsCreditCard
|
3
|
+
|
4
|
+
attr_accessor :number, :cvv, :exp_month,
|
5
|
+
:exp_year, :card_present, :reader_present
|
6
|
+
|
7
|
+
def initialize
|
8
|
+
|
9
|
+
@regex_map = {
|
10
|
+
:Amex => /^3[47][0-9]{13}$/,
|
11
|
+
:MasterCard => /^5[1-5][0-9]{14}$/,
|
12
|
+
:Visa => /^4[0-9]{12}(?:[0-9]{3})?$/,
|
13
|
+
:DinersClub => /^3(?:0[0-5]|[68][0-9])[0-9]{11}$/,
|
14
|
+
:EnRoute => /^(2014|2149)/,
|
15
|
+
:Discover => /^6(?:011|5[0-9]{2})[0-9]{12}$/,
|
16
|
+
:Jcb => /^(?:2131|1800|35\\d{3})\\d{11}$/
|
17
|
+
}
|
18
|
+
|
19
|
+
end
|
20
|
+
|
21
|
+
def card_type
|
22
|
+
|
23
|
+
@regex_map.each { |key, value|
|
24
|
+
unless value.match(number.to_s).nil?
|
25
|
+
return key
|
26
|
+
end
|
27
|
+
}
|
28
|
+
|
29
|
+
"Unknown"
|
30
|
+
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
end
|
@@ -1,5 +1,5 @@
|
|
1
|
-
module Hps
|
2
|
-
class HpsDirectMarketData
|
3
|
-
attr_accessor :invoice_number, :ship_month, :ship_day
|
4
|
-
end
|
5
|
-
end
|
1
|
+
module Hps
|
2
|
+
class HpsDirectMarketData
|
3
|
+
attr_accessor :invoice_number, :ship_month, :ship_day
|
4
|
+
end
|
5
|
+
end
|
@@ -1,6 +1,6 @@
|
|
1
|
-
module Hps
|
2
|
-
class HpsEncryptionData
|
3
|
-
attr_accessor :version, :encrypted_track_number,
|
4
|
-
:ktb, :ksn
|
5
|
-
end
|
6
|
-
end
|
1
|
+
module Hps
|
2
|
+
class HpsEncryptionData
|
3
|
+
attr_accessor :version, :encrypted_track_number,
|
4
|
+
:ktb, :ksn
|
5
|
+
end
|
6
|
+
end
|