Module: Qtpay::Sign

Defined in:
lib/qtpay/sign.rb

Class Method Summary collapse

Class Method Details

.generate(params, options = {}) ⇒ Object



3
4
5
6
7
8
9
10
# File 'lib/qtpay/sign.rb', line 3

def self.generate(params, options = {})
  params = Utils.stringify_keys(params)
  key = options[:server_key] || Qtpay.server_key
  string = params_to_string(params)

  sign(key, string)

end

.params_to_string(params) ⇒ Object



28
29
30
# File 'lib/qtpay/sign.rb', line 28

def self.params_to_string(params)
  params.sort.map { |item| item.join('=') }.join('&')
end

.sign(key, string) ⇒ Object



24
25
26
# File 'lib/qtpay/sign.rb', line 24

def self.sign(key, string)
  Digest::MD5.hexdigest("#{string}#{key}")
end

.verify?(params, options = {}) ⇒ Boolean

Returns:

  • (Boolean)


12
13
14
15
16
17
18
19
20
21
22
# File 'lib/qtpay/sign.rb', line 12

def self.verify?(params, options = {})
  params = Utils.stringify_keys(params)

  sign_type = params.delete('sign_type')
  sign = params.delete('sign')
  string = params_to_string(params)

  key = options[:server_key] || Qtpay.server_key

  sign == sign(key, string)
end