module Qtpay::Sign

Public Class Methods

generate(params, options = {}) click to toggle source
# 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) click to toggle source
# File lib/qtpay/sign.rb, line 28
def self.params_to_string(params)
  params.sort.map { |item| item.join('=') }.join('&')
end
sign(key, string) click to toggle source
# File lib/qtpay/sign.rb, line 24
def self.sign(key, string)
  Digest::MD5.hexdigest("#{string}#{key}")
end
verify?(params, options = {}) click to toggle source
# 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