so_paid 0.0.7 → 0.0.8
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.
- 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