so_paid 0.0.7 → 0.0.8
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/so_paid/cybersource.rb +20 -0
- data/lib/so_paid/hop.rb +2 -4
- data/lib/so_paid/version.rb +1 -1
- metadata +1 -1
data/lib/so_paid/cybersource.rb
CHANGED
@@ -31,6 +31,10 @@ module SoPaid
|
|
31
31
|
|
32
32
|
:signed_field_names =>
|
33
33
|
[
|
34
|
+
# used for determining if live, or test mode was used
|
35
|
+
# AFTER the response form cybersource has been made
|
36
|
+
# and we are verifying the request signature
|
37
|
+
:merchant_defined_data100,
|
34
38
|
:profile_id,
|
35
39
|
:access_key,
|
36
40
|
:transaction_uuid,
|
@@ -74,6 +78,20 @@ module SoPaid
|
|
74
78
|
end
|
75
79
|
|
76
80
|
|
81
|
+
def self.verify_transaction_signature(message)
|
82
|
+
if message[:req_merchant_defined_data100].present? and message[:req_merchant_defined_data] == "test"
|
83
|
+
secret_key = get_secret_key_for(:test)
|
84
|
+
else
|
85
|
+
secret_key = get_secret_key_for(:live)
|
86
|
+
end
|
87
|
+
|
88
|
+
verify_signature(message[:signed_field_names], message[:signature], secret_key)
|
89
|
+
end
|
90
|
+
|
91
|
+
def self.get_secret_key_for(targ_env)
|
92
|
+
(@@pv_defaults[targ_env] and @@pv_defaults[targ_env][:secret_key]) || @@pv_defaults[:secret_key]
|
93
|
+
end
|
94
|
+
|
77
95
|
private
|
78
96
|
|
79
97
|
def set_pv_fields
|
@@ -90,6 +108,7 @@ module SoPaid
|
|
90
108
|
# merge pv_order_params on top of pv_options which is
|
91
109
|
# the combination of the class defaults and the configuration file defaults
|
92
110
|
@merged_pv_opts = merge_defaults(pv_opts, @pv_options)
|
111
|
+
@merged_pv_opts[:merchant_defined_data100] = live? ? "live" : "test"
|
93
112
|
order_keys = @merged_pv_opts[:signed_field_names] + @merged_pv_opts[:unsigned_field_names]
|
94
113
|
|
95
114
|
order_keys.each do |o_key|
|
@@ -138,5 +157,6 @@ module SoPaid
|
|
138
157
|
def live?
|
139
158
|
!test?
|
140
159
|
end
|
160
|
+
|
141
161
|
end
|
142
162
|
end
|
data/lib/so_paid/hop.rb
CHANGED
@@ -40,17 +40,15 @@ module SoPaid
|
|
40
40
|
Base64.encode64(mac.digest).gsub "\n", ''
|
41
41
|
end
|
42
42
|
|
43
|
-
def self.verify_signature(data,signature)
|
43
|
+
def self.verify_signature(data, signature, secret_key)
|
44
44
|
pub_digest = encode_hop(data, secret_key)
|
45
45
|
pub_digest.eql?(signature)
|
46
46
|
end
|
47
47
|
|
48
48
|
def self.verify_transaction_signature(message)
|
49
|
-
|
49
|
+
raise "verify_transaction_signature needs to be defined in child class"
|
50
50
|
end
|
51
51
|
|
52
|
-
|
53
|
-
|
54
52
|
|
55
53
|
def initialize(order, pv_options={}, config_options={})
|
56
54
|
@pv_order_params = {}.with_indifferent_access
|
data/lib/so_paid/version.rb
CHANGED