bluepay 1.0.3 → 1.0.4
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 +7 -7
- data/Rakefile +1 -1
- data/bluepay.gemspec +3 -3
- data/lib/api_request.rb +125 -0
- data/lib/api_response.rb +150 -0
- data/lib/bluepay.rb +94 -332
- data/lib/cacert.pem +3860 -0
- data/test/Get_Data/Retrieve_Settlement_Data.rb +34 -0
- data/test/Get_Data/Retrieve_Transaction_Data.rb +33 -0
- data/test/Get_Data/Single_Transaction_Query.rb +42 -0
- data/test/Get_Data/Transaction_Notification.rb +61 -0
- data/test/Rebill/Cancel_Recurring_Payment.rb +82 -0
- data/test/Rebill/Create_Recurring_Payment_ACH.rb +60 -0
- data/test/Rebill/Create_Recurring_Payment_CC.rb +62 -0
- data/test/Rebill/Get_Recurring_Payment_Status.rb +82 -0
- data/test/Rebill/Update_Recurring_Payment.rb +111 -0
- data/test/Transactions/Cancel_Transaction.rb +74 -0
- data/test/Transactions/Charge_Customer_ACH.rb +54 -0
- data/test/Transactions/Charge_Customer_CC.rb +60 -0
- data/test/Transactions/Check_Customer_Credit.rb +58 -0
- data/test/Transactions/Customer_Defined_Data.rb +71 -0
- data/test/Transactions/How_To_Use_Token.rb +42 -0
- data/test/Transactions/Return_Funds.rb +77 -0
- data/test/Transactions/Store_Payment_Information.rb +58 -0
- metadata +42 -93
- data/doc/BluePay.html +0 -2699
- data/doc/README.html +0 -174
- data/doc/created.rid +0 -3
- data/doc/fonts.css +0 -167
- data/doc/fonts/Lato-Light.ttf +0 -0
- data/doc/fonts/Lato-LightItalic.ttf +0 -0
- data/doc/fonts/Lato-Regular.ttf +0 -0
- data/doc/fonts/Lato-RegularItalic.ttf +0 -0
- data/doc/fonts/SourceCodePro-Bold.ttf +0 -0
- data/doc/fonts/SourceCodePro-Regular.ttf +0 -0
- data/doc/images/add.png +0 -0
- data/doc/images/arrow_up.png +0 -0
- data/doc/images/brick.png +0 -0
- data/doc/images/brick_link.png +0 -0
- data/doc/images/bug.png +0 -0
- data/doc/images/bullet_black.png +0 -0
- data/doc/images/bullet_toggle_minus.png +0 -0
- data/doc/images/bullet_toggle_plus.png +0 -0
- data/doc/images/date.png +0 -0
- data/doc/images/delete.png +0 -0
- data/doc/images/find.png +0 -0
- data/doc/images/loadingAnimation.gif +0 -0
- data/doc/images/macFFBgHack.png +0 -0
- data/doc/images/package.png +0 -0
- data/doc/images/page_green.png +0 -0
- data/doc/images/page_white_text.png +0 -0
- data/doc/images/page_white_width.png +0 -0
- data/doc/images/plugin.png +0 -0
- data/doc/images/ruby.png +0 -0
- data/doc/images/tag_blue.png +0 -0
- data/doc/images/tag_green.png +0 -0
- data/doc/images/transparent.png +0 -0
- data/doc/images/wrench.png +0 -0
- data/doc/images/wrench_orange.png +0 -0
- data/doc/images/zoom.png +0 -0
- data/doc/index.html +0 -92
- data/doc/js/darkfish.js +0 -140
- data/doc/js/jquery.js +0 -18
- data/doc/js/navigation.js +0 -142
- data/doc/js/search.js +0 -109
- data/doc/js/search_index.js +0 -1
- data/doc/js/searcher.js +0 -228
- data/doc/rdoc.css +0 -580
- data/doc/table_of_contents.html +0 -405
- data/test/get_data/retrieve_settlement_data.rb +0 -39
- data/test/get_data/retrieve_transaction_data.rb +0 -37
- data/test/get_data/transaction_query.rb +0 -48
- data/test/getting_stuff_done/get_transaction_data.rb +0 -37
- data/test/getting_stuff_done/run_ach_payment.rb +0 -75
- data/test/getting_stuff_done/run_cc_payment.rb +0 -73
- data/test/getting_stuff_done/set_up_rebill_ach.rb +0 -85
- data/test/getting_stuff_done/set_up_rebill_cc.rb +0 -84
- data/test/rebills/cancel_rebill.rb +0 -96
- data/test/rebills/create_rebill.rb +0 -84
- data/test/rebills/get_rebill.rb +0 -97
- data/test/rebills/update_rebill.rb +0 -128
- data/test/transactions/cancel_transaction.rb +0 -85
- data/test/transactions/charge_customer.rb +0 -74
- data/test/transactions/check_customer_credit.rb +0 -74
- data/test/transactions/credit_customer.rb +0 -75
- data/test/transactions/customer_defined_data.rb +0 -99
- data/test/transactions/return_funds.rb +0 -86
- data/test/transactions/store_payment_information.rb +0 -74
- data/test/transactions/use_token.rb +0 -44
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
-
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
5
|
-
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 7535b98d5bd56bece87ec37a62ec281374bbd032
|
4
|
+
data.tar.gz: 4b461cf8c17e9bc247183298da6021f3e031e69e
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 18cb2fff25162948c844faafa6d43e6c7a862e6985c2e43ad1501d3b16b8426701b6a563a61cbbfce6120dfba8370008e1c3d34c1d6b62addc05024c291aa5b7
|
7
|
+
data.tar.gz: 5471afaf85203866ba10bad7c8ba69afdccf57543bbfbf9da00618d9d1472aa0f644c201eb0c4e253073a037e154b8843b4b9a5c29b85c1556c43b4f4257dbdf
|
data/Rakefile
CHANGED
data/bluepay.gemspec
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'bluepay'
|
3
|
-
s.version = '1.0.
|
4
|
-
s.date = '
|
5
|
-
s.summary = "BluePay gateway rubygem
|
3
|
+
s.version = '1.0.4'
|
4
|
+
s.date = '2015-11-30'
|
5
|
+
s.summary = "BluePay gateway rubygem"
|
6
6
|
s.description = "This gem is intended to be used along with a BluePay gateway account to process credit card and ACH transactions"
|
7
7
|
s.authors = ["Justin Slingerland"]
|
8
8
|
s.email = 'jslingerland@bluepay.com'
|
data/lib/api_request.rb
ADDED
@@ -0,0 +1,125 @@
|
|
1
|
+
class BluePay
|
2
|
+
|
3
|
+
# Turns a hash into a nvp style string
|
4
|
+
def uri_query(param_hash)
|
5
|
+
array = []
|
6
|
+
param_hash.each_pair {|key, val| array << (URI.escape(key) + "=" + URI.escape(val))}
|
7
|
+
array.join("&")
|
8
|
+
end
|
9
|
+
|
10
|
+
# Sets TAMPER_PROOF_SEAL in @PARAM_HASH
|
11
|
+
def calc_tps
|
12
|
+
@PARAM_HASH["TAMPER_PROOF_SEAL"] = Digest::MD5.hexdigest(
|
13
|
+
@SECRET_KEY +
|
14
|
+
@ACCOUNT_ID +
|
15
|
+
(@PARAM_HASH["TRANSACTION_TYPE"] || '') +
|
16
|
+
@PARAM_HASH["AMOUNT"] +
|
17
|
+
(@PARAM_HASH["REBILLING"] || '') +
|
18
|
+
(@PARAM_HASH["REB_FIRST_DATE"] || '') +
|
19
|
+
(@PARAM_HASH["REB_EXPR"] || '') +
|
20
|
+
(@PARAM_HASH["REB_CYCLES"] || '') +
|
21
|
+
(@PARAM_HASH["REB_AMOUNT"] || '') +
|
22
|
+
(@PARAM_HASH["RRNO"] || '') +
|
23
|
+
@PARAM_HASH["MODE"]
|
24
|
+
)
|
25
|
+
end
|
26
|
+
|
27
|
+
# Sets TAMPER_PROOF_SEAL in @PARAM_HASH for rebadmin API
|
28
|
+
def calc_rebill_tps
|
29
|
+
@PARAM_HASH["TAMPER_PROOF_SEAL"] = Digest::MD5.hexdigest(
|
30
|
+
@SECRET_KEY +
|
31
|
+
@ACCOUNT_ID +
|
32
|
+
@PARAM_HASH["TRANS_TYPE"] +
|
33
|
+
@PARAM_HASH["REBILL_ID"]
|
34
|
+
)
|
35
|
+
end
|
36
|
+
|
37
|
+
# Sets TAMPER_PROOF_SEAL in @PARAM_HASH for bpdailyreport2 API
|
38
|
+
def calc_report_tps
|
39
|
+
@PARAM_HASH["TAMPER_PROOF_SEAL"] = Digest::MD5.hexdigest(
|
40
|
+
@SECRET_KEY +
|
41
|
+
@ACCOUNT_ID +
|
42
|
+
@PARAM_HASH["REPORT_START_DATE"] +
|
43
|
+
@PARAM_HASH["REPORT_END_DATE"]
|
44
|
+
)
|
45
|
+
end
|
46
|
+
|
47
|
+
# Calculates TAMPER_PROOF_SEAL to be used with Trans Notify API
|
48
|
+
def self.calc_trans_notify_tps(secret_key, trans_id, trans_status, trans_type, amount, batch_id, batch_status, total_count, total_amount, batch_upload_id, rebill_id, rebill_amount, rebill_status)
|
49
|
+
Digest::MD5.hexdigest(
|
50
|
+
secret_key +
|
51
|
+
trans_id +
|
52
|
+
trans_status +
|
53
|
+
trans_type +
|
54
|
+
amount +
|
55
|
+
batch_id +
|
56
|
+
batch_status +
|
57
|
+
total_count +
|
58
|
+
total_amount +
|
59
|
+
batch_upload_id +
|
60
|
+
rebill_id +
|
61
|
+
rebill_amount +
|
62
|
+
rebill_status
|
63
|
+
)
|
64
|
+
end
|
65
|
+
|
66
|
+
# sends HTTPS POST to BluePay gateway for processing
|
67
|
+
def process
|
68
|
+
ua = Net::HTTP.new(SERVER, 443)
|
69
|
+
ua.use_ssl = true
|
70
|
+
if File.directory?(RootCA)
|
71
|
+
ua.ca_path = RootCA
|
72
|
+
ua.verify_mode = OpenSSL::SSL::VERIFY_PEER
|
73
|
+
ua.verify_depth = 3
|
74
|
+
else
|
75
|
+
puts "Invalid CA certificates directory. Exiting..."
|
76
|
+
exit
|
77
|
+
end
|
78
|
+
begin
|
79
|
+
@PARAM_HASH["REMOTE_IP"] = request.env['REMOTE_ADDR']
|
80
|
+
rescue Exception
|
81
|
+
end
|
82
|
+
# Generate the query string and headers
|
83
|
+
|
84
|
+
# Chooses which API to make request to
|
85
|
+
case @api
|
86
|
+
when "bpdailyreport2"
|
87
|
+
calc_report_tps
|
88
|
+
path = "/interfaces/bpdailyreport2"
|
89
|
+
query = "ACCOUNT_ID=#{@ACCOUNT_ID}&" + uri_query(@PARAM_HASH)
|
90
|
+
when "stq"
|
91
|
+
calc_report_tps
|
92
|
+
path = "/interfaces/stq"
|
93
|
+
query = "ACCOUNT_ID=#{@ACCOUNT_ID}&" + uri_query(@PARAM_HASH)
|
94
|
+
when "bp10emu"
|
95
|
+
calc_tps
|
96
|
+
path = "/interfaces/bp10emu"
|
97
|
+
query = "MERCHANT=#{@ACCOUNT_ID}&" + uri_query(@PARAM_HASH)
|
98
|
+
# puts "****"; puts uri_query(@PARAM_HASH).inspect
|
99
|
+
when "bp20rebadmin"
|
100
|
+
calc_rebill_tps
|
101
|
+
path = "/interfaces/bp20rebadmin"
|
102
|
+
query = "ACCOUNT_ID=#{@ACCOUNT_ID}&" + uri_query(@PARAM_HASH)
|
103
|
+
end
|
104
|
+
queryheaders = {
|
105
|
+
'User-Agent' => 'BluePay Ruby Library/1.0.4',
|
106
|
+
'Content-Type' => 'application/x-www-form-urlencoded'
|
107
|
+
}
|
108
|
+
# Response version to be returned
|
109
|
+
@PARAM_HASH["VERSION"] = '3'
|
110
|
+
# Post parameters to BluePay gateway
|
111
|
+
headers, body = ua.post(path, query, queryheaders)
|
112
|
+
# Split the response into the response hash.
|
113
|
+
@RESPONSE_HASH = {}
|
114
|
+
if path == "/interfaces/bp10emu"
|
115
|
+
response = headers["Location"].split("?")[1]
|
116
|
+
else
|
117
|
+
response = headers.body
|
118
|
+
end
|
119
|
+
response.split("&").each do |pair|
|
120
|
+
(key, val) = pair.split("=")
|
121
|
+
val = "" if val == nil
|
122
|
+
@RESPONSE_HASH[URI.unescape(key)] = URI.unescape(val)
|
123
|
+
end
|
124
|
+
end
|
125
|
+
end
|
data/lib/api_response.rb
ADDED
@@ -0,0 +1,150 @@
|
|
1
|
+
class BluePay
|
2
|
+
def get_response
|
3
|
+
@RESPONSE_HASH
|
4
|
+
end
|
5
|
+
|
6
|
+
# Returns true if response status is approved and not a duplicate, else returns false
|
7
|
+
def successful_response?
|
8
|
+
self.get_status == "APPROVED" && self.get_message != "DUPLICATE"
|
9
|
+
end
|
10
|
+
|
11
|
+
# Returns E for Error, 1 for Approved, 0 for Decline
|
12
|
+
def get_status
|
13
|
+
@RESPONSE_HASH['Result']
|
14
|
+
end
|
15
|
+
|
16
|
+
# Returns the human-readable response from Bluepay.
|
17
|
+
# Or a nasty error.
|
18
|
+
def get_message
|
19
|
+
m = @RESPONSE_HASH['MESSAGE']
|
20
|
+
if m == nil or m == ""
|
21
|
+
"ERROR - NO MESSAGE FROM BLUEPAY"
|
22
|
+
else
|
23
|
+
m
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
# Returns the single-character AVS response from the
|
28
|
+
# Card Issuing Bank
|
29
|
+
def get_avs_code
|
30
|
+
@RESPONSE_HASH['AVS']
|
31
|
+
end
|
32
|
+
|
33
|
+
# Same as avs_code, but for CVV2
|
34
|
+
def get_cvv2_code
|
35
|
+
@RESPONSE_HASH['CVV2']
|
36
|
+
end
|
37
|
+
|
38
|
+
# In the case of an approved transaction, contains the
|
39
|
+
# 6-character authorization code from the processing network.
|
40
|
+
# In the case of a decline or error, the contents may be junk.
|
41
|
+
def get_auth_code
|
42
|
+
@RESPONSE_HASH['AUTH_CODE']
|
43
|
+
end
|
44
|
+
|
45
|
+
# The all-important transaction ID.
|
46
|
+
def get_trans_id
|
47
|
+
@RESPONSE_HASH['RRNO']
|
48
|
+
end
|
49
|
+
|
50
|
+
# If you set up a rebilling, this'll get its ID.
|
51
|
+
def get_rebill_id
|
52
|
+
@RESPONSE_HASH['REBID']
|
53
|
+
end
|
54
|
+
|
55
|
+
# Masked credit card or ACH account
|
56
|
+
def get_masked_account
|
57
|
+
@RESPONSE_HASH['PAYMENT_ACCOUNT']
|
58
|
+
end
|
59
|
+
|
60
|
+
# Card type used in transaction
|
61
|
+
def get_card_type
|
62
|
+
@RESPONSE_HASH['CARD_TYPE']
|
63
|
+
end
|
64
|
+
|
65
|
+
# Bank account used in transaction
|
66
|
+
def get_bank_name
|
67
|
+
@RESPONSE_HASH['BANK_NAME']
|
68
|
+
end
|
69
|
+
|
70
|
+
# Rebill ID from bprebadmin API
|
71
|
+
def get_reb_id
|
72
|
+
@RESPONSE_HASH['rebill_id']
|
73
|
+
end
|
74
|
+
|
75
|
+
# Template ID of rebilling
|
76
|
+
def get_template_id
|
77
|
+
@RESPONSE_HASH['template_id']
|
78
|
+
end
|
79
|
+
|
80
|
+
# Status of rebilling
|
81
|
+
def get_rebill_status
|
82
|
+
@RESPONSE_HASH['status']
|
83
|
+
end
|
84
|
+
|
85
|
+
# Creation date of rebilling
|
86
|
+
def get_creation_date
|
87
|
+
@RESPONSE_HASH['creation_date']
|
88
|
+
end
|
89
|
+
|
90
|
+
# Next date that the rebilling is set to fire off on
|
91
|
+
def get_next_date
|
92
|
+
@RESPONSE_HASH['next_date']
|
93
|
+
end
|
94
|
+
|
95
|
+
# Last date that the rebilling fired off on
|
96
|
+
def get_last_date
|
97
|
+
@RESPONSE_HASH['last_date']
|
98
|
+
end
|
99
|
+
|
100
|
+
# Rebilling expression
|
101
|
+
def get_sched_expression
|
102
|
+
@RESPONSE_HASH['sched_expr']
|
103
|
+
end
|
104
|
+
|
105
|
+
# Number of cycles remaining on rebilling
|
106
|
+
def get_cycles_remaining
|
107
|
+
@RESPONSE_HASH['cycles_remain']
|
108
|
+
end
|
109
|
+
|
110
|
+
# Amount to charge when rebilling fires off
|
111
|
+
def get_rebill_amount
|
112
|
+
@RESPONSE_HASH['reb_amount']
|
113
|
+
end
|
114
|
+
|
115
|
+
# Next amount to charge when rebilling fires off
|
116
|
+
def get_next_amount
|
117
|
+
@RESPONSE_HASH['next_amount']
|
118
|
+
end
|
119
|
+
|
120
|
+
# Transaction ID used with stq API
|
121
|
+
def get_id
|
122
|
+
@RESPONSE_HASH['id']
|
123
|
+
end
|
124
|
+
|
125
|
+
# First name associated with the transaction
|
126
|
+
def get_name1
|
127
|
+
@RESPONSE_HASH['name1']
|
128
|
+
end
|
129
|
+
|
130
|
+
# Last name associated with the transaction
|
131
|
+
def get_name2
|
132
|
+
@RESPONSE_HASH['name2']
|
133
|
+
end
|
134
|
+
|
135
|
+
# Payment type associated with the transaction
|
136
|
+
def get_payment_type
|
137
|
+
@RESPONSE_HASH['payment_type']
|
138
|
+
end
|
139
|
+
|
140
|
+
# Transaction type associated with the transaction
|
141
|
+
def get_trans_type
|
142
|
+
@RESPONSE_HASH['trans_type']
|
143
|
+
end
|
144
|
+
|
145
|
+
# Amount associated with the transaction
|
146
|
+
def get_amount
|
147
|
+
@RESPONSE_HASH['amount']
|
148
|
+
end
|
149
|
+
|
150
|
+
end
|
data/lib/bluepay.rb
CHANGED
@@ -1,31 +1,30 @@
|
|
1
|
-
#!/usr/bin/ruby
|
2
1
|
require "net/http"
|
3
2
|
require "net/https"
|
4
3
|
require "uri"
|
5
4
|
require "digest/md5"
|
6
5
|
|
6
|
+
# Files
|
7
|
+
require_relative "api_request"
|
8
|
+
require_relative "api_response"
|
9
|
+
|
7
10
|
class BluePay
|
8
11
|
SERVER = "secure.bluepay.com"
|
9
12
|
# Make sure this is the correct path to your CA certificates directory
|
10
|
-
|
11
|
-
|
12
|
-
def initialize(account,key,mode='TEST')
|
13
|
-
@ACCOUNT_ID = account
|
14
|
-
@SECRET_KEY = key
|
15
|
-
@PARAM_HASH = { 'MODE' => mode }
|
16
|
-
@RETURN_HASH = Hash.new()
|
17
|
-
end
|
13
|
+
# For testing purposes, this gem comes with a CA bundle.
|
14
|
+
RootCA = "."
|
18
15
|
|
19
|
-
def
|
20
|
-
@
|
16
|
+
def initialize(params = {})
|
17
|
+
@ACCOUNT_ID = params[:account_id]
|
18
|
+
@SECRET_KEY = params[:secret_key]
|
19
|
+
@PARAM_HASH = {'MODE' => params[:mode]}
|
21
20
|
end
|
22
21
|
|
23
22
|
# Set up a credit card payment.
|
24
|
-
def set_cc_information(
|
23
|
+
def set_cc_information(params={})
|
25
24
|
@PARAM_HASH['PAYMENT_TYPE'] = 'CREDIT'
|
26
|
-
@PARAM_HASH['CC_NUM'] =
|
27
|
-
@PARAM_HASH['CC_EXPIRES'] =
|
28
|
-
@PARAM_HASH['CVCVV2'] =
|
25
|
+
@PARAM_HASH['CC_NUM'] = params[:cc_number] || ''
|
26
|
+
@PARAM_HASH['CC_EXPIRES'] = params[:cc_expiration] || ''
|
27
|
+
@PARAM_HASH['CVCVV2'] = params[:cvv2] || ''
|
29
28
|
end
|
30
29
|
|
31
30
|
# Set up an ACH transaction. Expects:
|
@@ -33,49 +32,44 @@ class BluePay
|
|
33
32
|
# routing: Bank routing number
|
34
33
|
# account: Customer's checking or savings account number
|
35
34
|
# doc_type: WEB, TEL, ARC, etc -- see docs. Optional.
|
36
|
-
|
37
|
-
# such as address and phone
|
38
|
-
def set_ach_information(routing, account, acc_type, doc_type='')
|
35
|
+
def set_ach_information(params = {})
|
39
36
|
@PARAM_HASH['PAYMENT_TYPE'] = 'ACH'
|
40
|
-
@PARAM_HASH['ACH_ROUTING'] =
|
41
|
-
@PARAM_HASH['ACH_ACCOUNT'] =
|
42
|
-
@PARAM_HASH['ACH_ACCOUNT_TYPE'] =
|
43
|
-
@PARAM_HASH['DOC_TYPE'] = doc_type
|
37
|
+
@PARAM_HASH['ACH_ROUTING'] = params[:ach_routing]
|
38
|
+
@PARAM_HASH['ACH_ACCOUNT'] = params[:ach_account]
|
39
|
+
@PARAM_HASH['ACH_ACCOUNT_TYPE'] = params[:ach_account_type]
|
40
|
+
@PARAM_HASH['DOC_TYPE'] = params[:doc_type] || ''
|
44
41
|
end
|
45
42
|
|
46
43
|
# Set up a sale
|
47
|
-
def sale(
|
44
|
+
def sale(params = {})
|
48
45
|
@PARAM_HASH['TRANSACTION_TYPE'] = 'SALE'
|
49
|
-
@PARAM_HASH['AMOUNT'] = amount
|
50
|
-
@PARAM_HASH['RRNO'] = trans_id
|
46
|
+
@PARAM_HASH['AMOUNT'] = params[:amount]
|
47
|
+
@PARAM_HASH['RRNO'] = params[:trans_id] || ''
|
48
|
+
@api = "bp10emu"
|
51
49
|
end
|
52
50
|
|
53
51
|
# Set up an Auth
|
54
|
-
def auth(
|
52
|
+
def auth(params ={})
|
55
53
|
@PARAM_HASH['TRANSACTION_TYPE'] = 'AUTH'
|
56
|
-
@PARAM_HASH['AMOUNT'] = amount
|
57
|
-
@PARAM_HASH['RRNO'] = trans_id
|
54
|
+
@PARAM_HASH['AMOUNT'] = params[:amount]
|
55
|
+
@PARAM_HASH['RRNO'] = params[:trans_id] || ''
|
56
|
+
@api = "bp10emu"
|
58
57
|
end
|
59
58
|
|
60
|
-
# Credit
|
61
|
-
def credit(amount, trans_id='')
|
62
|
-
@PARAM_HASH['TRANSACTION_TYPE'] = 'CREDIT'
|
63
|
-
@PARAM_HASH['AMOUNT'] = amount
|
64
|
-
@PARAM_HASH['RRNO'] = trans_id
|
65
|
-
end
|
66
|
-
|
67
59
|
# Capture an Auth
|
68
60
|
def capture(trans_id, amount='')
|
69
61
|
@PARAM_HASH['TRANSACTION_TYPE'] = 'CAPTURE'
|
70
62
|
@PARAM_HASH['AMOUNT'] = amount
|
71
63
|
@PARAM_HASH['RRNO'] = trans_id
|
64
|
+
@api = "bp10emu"
|
72
65
|
end
|
73
66
|
|
74
67
|
# Refund
|
75
|
-
def refund(
|
68
|
+
def refund(params = {})
|
76
69
|
@PARAM_HASH['TRANSACTION_TYPE'] = 'REFUND'
|
77
|
-
@PARAM_HASH['RRNO'] = trans_id
|
78
|
-
@PARAM_HASH['AMOUNT'] = amount
|
70
|
+
@PARAM_HASH['RRNO'] = params[:trans_id]
|
71
|
+
@PARAM_HASH['AMOUNT'] = params[:amount] || ''
|
72
|
+
@api = "bp10emu"
|
79
73
|
end
|
80
74
|
|
81
75
|
# Void
|
@@ -83,94 +77,99 @@ class BluePay
|
|
83
77
|
@PARAM_HASH['TRANSACTION_TYPE'] = 'VOID'
|
84
78
|
@PARAM_HASH['AMOUNT'] = ''
|
85
79
|
@PARAM_HASH['RRNO'] = trans_id
|
80
|
+
@api = "bp10emu"
|
86
81
|
end
|
87
82
|
|
88
83
|
# Sets customer information for the transaction
|
89
|
-
def set_customer_information(
|
90
|
-
@PARAM_HASH['NAME1'] =
|
91
|
-
@PARAM_HASH['NAME2'] =
|
92
|
-
@PARAM_HASH['ADDR1'] =
|
93
|
-
@PARAM_HASH['
|
94
|
-
@PARAM_HASH['
|
95
|
-
@PARAM_HASH['
|
96
|
-
@PARAM_HASH['
|
97
|
-
@PARAM_HASH['COUNTRY'] = country
|
84
|
+
def set_customer_information(params={})
|
85
|
+
@PARAM_HASH['NAME1'] = params[:first_name]
|
86
|
+
@PARAM_HASH['NAME2'] = params[:last_name]
|
87
|
+
@PARAM_HASH['ADDR1'] = params[:address1]
|
88
|
+
@PARAM_HASH['ADDR2'] = params[:address2]
|
89
|
+
@PARAM_HASH['CITY'] = params[:city]
|
90
|
+
@PARAM_HASH['STATE'] = params[:state]
|
91
|
+
@PARAM_HASH['ZIPCODE'] = params[:zip_code]
|
92
|
+
@PARAM_HASH['COUNTRY'] = params[:country]
|
93
|
+
@PARAM_HASH['PHONE'] = params[:phone]
|
94
|
+
@PARAM_HASH['EMAIL'] = params[:email]
|
98
95
|
end
|
99
96
|
|
100
|
-
# Set customer
|
101
|
-
def
|
102
|
-
@PARAM_HASH['PHONE'] =
|
97
|
+
# Set customer Phone
|
98
|
+
def phone=(number)
|
99
|
+
@PARAM_HASH['PHONE'] = number
|
103
100
|
end
|
104
101
|
|
105
102
|
# Set customer E-mail address
|
106
|
-
def
|
103
|
+
def email=(email)
|
107
104
|
@PARAM_HASH['EMAIL'] = email
|
108
105
|
end
|
109
106
|
|
110
107
|
# Set MEMO field
|
111
|
-
def
|
108
|
+
def memo=(memo)
|
112
109
|
@PARAM_HASH['COMMENT'] = memo
|
113
110
|
end
|
114
111
|
|
115
112
|
# Set CUSTOM_ID field
|
116
|
-
def
|
113
|
+
def custom_id1=(custom_id1)
|
117
114
|
@PARAM_HASH['CUSTOM_ID'] = custom_id1
|
118
115
|
end
|
119
116
|
|
120
117
|
# Set CUSTOM_ID2 field
|
121
|
-
def
|
118
|
+
def custom_id2=(custom_id2)
|
122
119
|
@PARAM_HASH['CUSTOM_ID2'] = custom_id2
|
123
120
|
end
|
124
121
|
|
125
122
|
# Set INVOICE_ID field
|
126
|
-
def
|
123
|
+
def invoice_id=(invoice_id)
|
127
124
|
@PARAM_HASH['INVOICE_ID'] = invoice_id
|
128
125
|
end
|
129
126
|
|
130
127
|
# Set ORDER_ID field
|
131
|
-
def
|
128
|
+
def order_id=(order_id)
|
132
129
|
@PARAM_HASH['ORDER_ID'] = order_id
|
133
130
|
end
|
134
131
|
|
135
132
|
# Set AMOUNT_TIP field
|
136
|
-
def
|
133
|
+
def amount_tip=(amount_tip)
|
137
134
|
@PARAM_HASH['AMOUNT_TIP'] = amount_tip
|
138
135
|
end
|
139
136
|
|
140
137
|
# Set AMOUNT_TAX field
|
141
|
-
def
|
138
|
+
def amount_tax=(amount_tax)
|
142
139
|
@PARAM_HASH['AMOUNT_TAX'] = amount_tax
|
143
140
|
end
|
144
141
|
|
145
142
|
# Set AMOUNT_FOOD field
|
146
|
-
def
|
143
|
+
def amount_food=(amount_food)
|
147
144
|
@PARAM_HASH['AMOUNT_FOOD'] = amount_food
|
148
145
|
end
|
149
146
|
|
150
147
|
# Set AMOUNT_MISC field
|
151
|
-
def
|
148
|
+
def amount_misc=(amount_misc)
|
152
149
|
@PARAM_HASH['AMOUNT_MISC'] = amount_misc
|
153
150
|
end
|
154
151
|
|
155
152
|
# Set fields for a recurring payment
|
156
|
-
def
|
153
|
+
def set_recurring_payment(params = {})
|
157
154
|
@PARAM_HASH['REBILLING'] = '1'
|
158
|
-
@PARAM_HASH['REB_FIRST_DATE'] =
|
159
|
-
@PARAM_HASH['REB_EXPR'] =
|
160
|
-
@PARAM_HASH['REB_CYCLES'] = reb_cycles
|
161
|
-
@PARAM_HASH['REB_AMOUNT'] = reb_amount
|
155
|
+
@PARAM_HASH['REB_FIRST_DATE'] = params[:reb_first_date]
|
156
|
+
@PARAM_HASH['REB_EXPR'] = params[:reb_expr]
|
157
|
+
@PARAM_HASH['REB_CYCLES'] = params[:reb_cycles]
|
158
|
+
@PARAM_HASH['REB_AMOUNT'] = params[:reb_amount]
|
159
|
+
# @api = "bp10emu"
|
162
160
|
end
|
163
161
|
|
164
162
|
# Set fields to do an update on an existing rebilling cycle
|
165
|
-
def
|
166
|
-
rebill_next_amount)
|
163
|
+
def update_rebill(params = {})
|
167
164
|
@PARAM_HASH['TRANS_TYPE'] = "SET"
|
168
|
-
@PARAM_HASH['REBILL_ID'] = rebill_id
|
169
|
-
@PARAM_HASH['NEXT_DATE'] =
|
170
|
-
@PARAM_HASH['REB_EXPR'] =
|
171
|
-
@PARAM_HASH['REB_CYCLES'] =
|
172
|
-
@PARAM_HASH['REB_AMOUNT'] =
|
173
|
-
@PARAM_HASH['NEXT_AMOUNT'] =
|
165
|
+
@PARAM_HASH['REBILL_ID'] = params[:rebill_id]
|
166
|
+
@PARAM_HASH['NEXT_DATE'] = params[:next_date] || ''
|
167
|
+
@PARAM_HASH['REB_EXPR'] = params[:reb_expr] || ''
|
168
|
+
@PARAM_HASH['REB_CYCLES'] = params[:reb_cycles] || ''
|
169
|
+
@PARAM_HASH['REB_AMOUNT'] = params[:reb_amount] || ''
|
170
|
+
@PARAM_HASH['NEXT_AMOUNT'] = params[:next_amount] || ''
|
171
|
+
@PARAM_HASH["TEMPLATE_ID"] = params[:template_id] || ''
|
172
|
+
@api = "bp20rebadmin"
|
174
173
|
end
|
175
174
|
|
176
175
|
# Set fields to cancel an existing rebilling cycle
|
@@ -178,12 +177,14 @@ class BluePay
|
|
178
177
|
@PARAM_HASH["TRANS_TYPE"] = "SET"
|
179
178
|
@PARAM_HASH["STATUS"] = "stopped"
|
180
179
|
@PARAM_HASH["REBILL_ID"] = rebill_id
|
180
|
+
@api = "bp20rebadmin"
|
181
181
|
end
|
182
182
|
|
183
183
|
# Set fields to get the status of an existing rebilling cycle
|
184
184
|
def get_rebilling_cycle_status(rebill_id)
|
185
185
|
@PARAM_HASH["TRANS_TYPE"] = "GET"
|
186
186
|
@PARAM_HASH["REBILL_ID"] = rebill_id
|
187
|
+
@api = "bp20rebadmin"
|
187
188
|
end
|
188
189
|
|
189
190
|
# Updates an existing rebilling cycle's payment information.
|
@@ -192,35 +193,34 @@ class BluePay
|
|
192
193
|
end
|
193
194
|
|
194
195
|
# Gets a report on all transactions within a specified date range
|
195
|
-
def get_transaction_report(
|
196
|
+
def get_transaction_report(params = {})
|
196
197
|
@PARAM_HASH["QUERY_BY_SETTLEMENT"] = '0'
|
197
|
-
@PARAM_HASH["REPORT_START_DATE"] =
|
198
|
-
@PARAM_HASH["REPORT_END_DATE"] =
|
199
|
-
@PARAM_HASH["QUERY_BY_HIERARCHY"] =
|
200
|
-
@PARAM_HASH["DO_NOT_ESCAPE"] = do_not_escape
|
201
|
-
@PARAM_HASH["EXCLUDE_ERRORS"] =
|
198
|
+
@PARAM_HASH["REPORT_START_DATE"] = params[:report_start_date]
|
199
|
+
@PARAM_HASH["REPORT_END_DATE"] = params[:report_end_date]
|
200
|
+
@PARAM_HASH["QUERY_BY_HIERARCHY"] = params[:query_by_hierarchy]
|
201
|
+
@PARAM_HASH["DO_NOT_ESCAPE"] = params[:do_not_escape] || ''
|
202
|
+
@PARAM_HASH["EXCLUDE_ERRORS"] = params[:exclude_errors] || ''
|
203
|
+
@api = "bpdailyreport2"
|
202
204
|
end
|
203
205
|
|
204
206
|
# Gets a report on all settled transactions within a specified date range
|
205
|
-
def get_settled_transaction_report(
|
207
|
+
def get_settled_transaction_report(params = {})
|
206
208
|
@PARAM_HASH["QUERY_BY_SETTLEMENT"] = '1'
|
207
|
-
@PARAM_HASH["REPORT_START_DATE"] =
|
208
|
-
@PARAM_HASH["REPORT_END_DATE"] =
|
209
|
-
@PARAM_HASH["QUERY_BY_HIERARCHY"] =
|
210
|
-
@PARAM_HASH["DO_NOT_ESCAPE"] = do_not_escape
|
211
|
-
@PARAM_HASH["EXCLUDE_ERRORS"] =
|
209
|
+
@PARAM_HASH["REPORT_START_DATE"] = params[:report_start_date]
|
210
|
+
@PARAM_HASH["REPORT_END_DATE"] = params[:report_end_date]
|
211
|
+
@PARAM_HASH["QUERY_BY_HIERARCHY"] = params[:query_by_hierarchy]
|
212
|
+
@PARAM_HASH["DO_NOT_ESCAPE"] = params[:do_not_escape] || ''
|
213
|
+
@PARAM_HASH["EXCLUDE_ERRORS"] = params[:exclude_errors] || ''
|
214
|
+
@api = "bpdailyreport2"
|
212
215
|
end
|
213
216
|
|
214
217
|
# Gets data on a specific transaction
|
215
|
-
def
|
216
|
-
@PARAM_HASH["REPORT_START_DATE"] =
|
217
|
-
@PARAM_HASH["REPORT_END_DATE"] =
|
218
|
-
@PARAM_HASH["
|
219
|
-
|
220
|
-
|
221
|
-
# Queries by a specific Transaction ID. To be used with get_single_trans_query
|
222
|
-
def query_by_transaction_id(trans_id)
|
223
|
-
@PARAM_HASH["id"] = trans_id;
|
218
|
+
def get_single_transaction_query(params = {})
|
219
|
+
@PARAM_HASH["REPORT_START_DATE"] = params[:report_start_date]
|
220
|
+
@PARAM_HASH["REPORT_END_DATE"] = params[:report_end_date]
|
221
|
+
@PARAM_HASH["id"] = params[:transaction_id]
|
222
|
+
@PARAM_HASH["EXCLUDE_ERRORS"] = params[:exclude_errors] || ''
|
223
|
+
@api = "stq"
|
224
224
|
end
|
225
225
|
|
226
226
|
# Queries by a specific Payment Type. To be used with get_single_trans_query
|
@@ -247,242 +247,4 @@ class BluePay
|
|
247
247
|
def query_by_name2(name2)
|
248
248
|
@PARAM_HASH["name2"] = name2
|
249
249
|
end
|
250
|
-
|
251
|
-
# Turns a hash into a nvp style string
|
252
|
-
def uri_query(h)
|
253
|
-
a = Array.new()
|
254
|
-
h.each_pair {|key, val| a.push(URI.escape(key) + "=" + URI.escape(val)) }
|
255
|
-
return a.join("&")
|
256
|
-
end
|
257
|
-
|
258
|
-
# Sets TAMPER_PROOF_SEAL in @PARAM_HASH
|
259
|
-
def calc_tps()
|
260
|
-
@PARAM_HASH["TAMPER_PROOF_SEAL"] = Digest::MD5.hexdigest(@SECRET_KEY + @ACCOUNT_ID +
|
261
|
-
(@PARAM_HASH["TRANSACTION_TYPE"] || '') + @PARAM_HASH["AMOUNT"] + (@PARAM_HASH["REBILLING"] || '') +
|
262
|
-
(@PARAM_HASH["REB_FIRST_DATE"] || '') + (@PARAM_HASH["REB_EXPR"] || '') + (@PARAM_HASH["REB_CYCLES"] || '') +
|
263
|
-
(@PARAM_HASH["REB_AMOUNT"] || '') + (@PARAM_HASH["RRNO"] || '') + @PARAM_HASH["MODE"])
|
264
|
-
end
|
265
|
-
|
266
|
-
# Sets TAMPER_PROOF_SEAL in @PARAM_HASH for rebadmin API
|
267
|
-
def calc_rebill_tps()
|
268
|
-
@PARAM_HASH["TAMPER_PROOF_SEAL"] = Digest::MD5.hexdigest(@SECRET_KEY + @ACCOUNT_ID +
|
269
|
-
@PARAM_HASH["TRANS_TYPE"] + @PARAM_HASH["REBILL_ID"])
|
270
|
-
end
|
271
|
-
|
272
|
-
# Sets TAMPER_PROOF_SEAL in @PARAM_HASH for bpdailyreport2 API
|
273
|
-
def calc_report_tps()
|
274
|
-
@PARAM_HASH["TAMPER_PROOF_SEAL"] = Digest::MD5.hexdigest(@SECRET_KEY + @ACCOUNT_ID +
|
275
|
-
@PARAM_HASH["REPORT_START_DATE"] + @PARAM_HASH["REPORT_END_DATE"])
|
276
|
-
end
|
277
|
-
|
278
|
-
# Calculates TAMPER_PROOF_SEAL to be used with Trans Notify API
|
279
|
-
def self.calc_trans_notify_tps(secret_key, trans_id, trans_status, trans_type, amount, batch_id, batch_status,
|
280
|
-
total_count, total_amount, batch_upload_id, rebill_id, rebill_amount, rebill_status)
|
281
|
-
return Digest::MD5.hexdigest(@SECRET_KEY + trans_id + trans_status + transtype +
|
282
|
-
amount + batch_id + batch_status + total_count + total_amount + batch_upload_id + rebill_id + rebill_amount + rebill_status)
|
283
|
-
end
|
284
|
-
|
285
|
-
# sends HTTPS POST to BluePay gateway for processing
|
286
|
-
def process()
|
287
|
-
ua = Net::HTTP.new(SERVER, 443)
|
288
|
-
ua.use_ssl = true
|
289
|
-
if File.directory? RootCA
|
290
|
-
ua.ca_path = RootCA
|
291
|
-
ua.verify_mode = OpenSSL::SSL::VERIFY_PEER
|
292
|
-
ua.verify_depth = 3
|
293
|
-
else
|
294
|
-
puts "Invalid CA certificates directory. Exiting..."
|
295
|
-
exit
|
296
|
-
end
|
297
|
-
begin
|
298
|
-
@PARAM_HASH["REMOTE_IP"] = request.env['REMOTE_ADDR']
|
299
|
-
rescue Exception
|
300
|
-
end
|
301
|
-
# Generate the query string and headers
|
302
|
-
if (@PARAM_HASH.has_key?("QUERY_BY_HIERARCHY"))
|
303
|
-
calc_report_tps()
|
304
|
-
path = "/interfaces/bpdailyreport2"
|
305
|
-
query = "ACCOUNT_ID=#{@ACCOUNT_ID}&"
|
306
|
-
query += uri_query(@PARAM_HASH)
|
307
|
-
elsif (@PARAM_HASH.has_key?("REPORT_START_DATE"))
|
308
|
-
calc_report_tps()
|
309
|
-
path = "/interfaces/stq"
|
310
|
-
query = "ACCOUNT_ID=#{@ACCOUNT_ID}&"
|
311
|
-
query += uri_query(@PARAM_HASH)
|
312
|
-
elsif (@PARAM_HASH["TRANS_TYPE"] != "SET" and @PARAM_HASH["TRANS_TYPE"] != "GET")
|
313
|
-
calc_tps()
|
314
|
-
path = "/interfaces/bp10emu"
|
315
|
-
query = "MERCHANT=#{@ACCOUNT_ID}&"
|
316
|
-
query += uri_query(@PARAM_HASH)
|
317
|
-
else
|
318
|
-
calc_rebill_tps()
|
319
|
-
path = "/interfaces/bp20rebadmin"
|
320
|
-
query = "ACCOUNT_ID=#{@ACCOUNT_ID}&"
|
321
|
-
query += uri_query(@PARAM_HASH)
|
322
|
-
end
|
323
|
-
|
324
|
-
queryheaders = {
|
325
|
-
'User-Agent' => 'Bluepay Ruby Client',
|
326
|
-
'Content-Type' => 'application/x-www-form-urlencoded'
|
327
|
-
}
|
328
|
-
@PARAM_HASH["VERSION"] = '3'
|
329
|
-
# Post parameters to BluePay gateway
|
330
|
-
headers, body = ua.post(path, query, queryheaders)
|
331
|
-
# Split the response into the response hash.
|
332
|
-
@RESPONSE_HASH = {}
|
333
|
-
if path == "/interfaces/bp10emu"
|
334
|
-
response = headers["Location"].split("?")[1]
|
335
|
-
else
|
336
|
-
response = headers.body
|
337
|
-
end
|
338
|
-
response.split("&").each { |pair|
|
339
|
-
(key, val) = pair.split("=")
|
340
|
-
val = "" if(val == nil)
|
341
|
-
@RESPONSE_HASH[URI.unescape(key)] = URI.unescape(val)
|
342
|
-
}
|
343
|
-
end
|
344
|
-
|
345
|
-
def get_response()
|
346
|
-
return @RESPONSE_HASH
|
347
|
-
end
|
348
|
-
|
349
|
-
# Returns E for Error, 1 for Approved, 0 for Decline
|
350
|
-
def get_status()
|
351
|
-
return @RESPONSE_HASH['Result']
|
352
|
-
end
|
353
|
-
|
354
|
-
# Returns the human-readable response from Bluepay.
|
355
|
-
# Or a nasty error.
|
356
|
-
def get_message()
|
357
|
-
m = @RESPONSE_HASH['MESSAGE']
|
358
|
-
if (m == nil or m == "")
|
359
|
-
return "ERROR - NO MESSAGE FROM BLUEPAY"
|
360
|
-
end
|
361
|
-
return m
|
362
|
-
end
|
363
|
-
|
364
|
-
# Returns the single-character AVS response from the
|
365
|
-
# Card Issuing Bank
|
366
|
-
def get_avs_code()
|
367
|
-
return @RESPONSE_HASH['AVS']
|
368
|
-
end
|
369
|
-
|
370
|
-
# Same as avs_code, but for CVV2
|
371
|
-
|
372
|
-
def get_cvv2_code()
|
373
|
-
return @RESPONSE_HASH['CVV2']
|
374
|
-
end
|
375
|
-
|
376
|
-
# In the case of an approved transaction, contains the
|
377
|
-
# 6-character authorization code from the processing network.
|
378
|
-
# In the case of a decline or error, the contents may be junk.
|
379
|
-
def get_auth_code()
|
380
|
-
return @RESPONSE_HASH['AUTH_CODE']
|
381
|
-
end
|
382
|
-
|
383
|
-
# The all-important transaction ID.
|
384
|
-
def get_trans_id()
|
385
|
-
return @RESPONSE_HASH['RRNO']
|
386
|
-
end
|
387
|
-
|
388
|
-
# If you set up a rebilling, this'll get its ID.
|
389
|
-
def get_rebill_id()
|
390
|
-
return @RESPONSE_HASH['REBID']
|
391
|
-
end
|
392
|
-
|
393
|
-
# Masked credit card or ACH account
|
394
|
-
def get_masked_account()
|
395
|
-
return @RESPONSE_HASH['PAYMENT_ACCOUNT']
|
396
|
-
end
|
397
|
-
|
398
|
-
# Card type used in transaction
|
399
|
-
def get_card_type()
|
400
|
-
return @RESPONSE_HASH['CARD_TYPE']
|
401
|
-
end
|
402
|
-
|
403
|
-
# Bank account used in transaction
|
404
|
-
def get_bank_name()
|
405
|
-
return @RESPONSE_HASH['BANK_NAME']
|
406
|
-
end
|
407
|
-
|
408
|
-
# Rebill ID from bprebadmin API
|
409
|
-
def get_reb_id()
|
410
|
-
return @RESPONSE_HASH['rebill_id']
|
411
|
-
end
|
412
|
-
|
413
|
-
# Template ID of rebilling
|
414
|
-
def get_template_id()
|
415
|
-
return @RESPONSE_HASH['template_id']
|
416
|
-
end
|
417
|
-
|
418
|
-
# Status of rebilling
|
419
|
-
def get_rebill_status()
|
420
|
-
return @RESPONSE_HASH['status']
|
421
|
-
end
|
422
|
-
|
423
|
-
# Creation date of rebilling
|
424
|
-
def get_creation_date()
|
425
|
-
return @RESPONSE_HASH['creation_date']
|
426
|
-
end
|
427
|
-
|
428
|
-
# Next date that the rebilling is set to fire off on
|
429
|
-
def get_next_date()
|
430
|
-
return @RESPONSE_HASH['next_date']
|
431
|
-
end
|
432
|
-
|
433
|
-
# Last date that the rebilling fired off on
|
434
|
-
def get_last_date()
|
435
|
-
return @RESPONSE_HASH['last_date']
|
436
|
-
end
|
437
|
-
|
438
|
-
# Rebilling expression
|
439
|
-
def get_sched_expression()
|
440
|
-
return @RESPONSE_HASH['sched_expr']
|
441
|
-
end
|
442
|
-
|
443
|
-
# Number of cycles remaining on rebilling
|
444
|
-
def get_cycles_remaining()
|
445
|
-
return @RESPONSE_HASH['cycles_remain']
|
446
|
-
end
|
447
|
-
|
448
|
-
# Amount to charge when rebilling fires off
|
449
|
-
def get_rebill_amount()
|
450
|
-
return @RESPONSE_HASH['reb_amount']
|
451
|
-
end
|
452
|
-
|
453
|
-
# Next amount to charge when rebilling fires off
|
454
|
-
def get_next_amount()
|
455
|
-
return @RESPONSE_HASH['next_amount']
|
456
|
-
end
|
457
|
-
|
458
|
-
# Transaction ID used with stq API
|
459
|
-
def get_id()
|
460
|
-
return @RESPONSE_HASH['id']
|
461
|
-
end
|
462
|
-
|
463
|
-
# First name associated with the transaction
|
464
|
-
def get_name1()
|
465
|
-
return @RESPONSE_HASH['name1']
|
466
|
-
end
|
467
|
-
|
468
|
-
# Last name associated with the transaction
|
469
|
-
def get_name2()
|
470
|
-
return @RESPONSE_HASH['name2']
|
471
|
-
end
|
472
|
-
|
473
|
-
# Payment type associated with the transaction
|
474
|
-
def get_payment_type()
|
475
|
-
return @RESPONSE_HASH['payment_type']
|
476
|
-
end
|
477
|
-
|
478
|
-
# Transaction type associated with the transaction
|
479
|
-
def get_trans_type()
|
480
|
-
return @RESPONSE_HASH['trans_type']
|
481
|
-
end
|
482
|
-
|
483
|
-
# Amount associated with the transaction
|
484
|
-
def get_amount()
|
485
|
-
return @RESPONSE_HASH['amount']
|
486
|
-
end
|
487
|
-
|
488
250
|
end
|