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.
@@ -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
- verify_signature(message[:signed_field_names], message[:signature])
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
@@ -1,3 +1,3 @@
1
1
  module SoPaid
2
- VERSION = "0.0.7"
2
+ VERSION = "0.0.8"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: so_paid
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: