module Qpay
Constants
- VERSION
Public Class Methods
params_with_sign(params, config)
click to toggle source
# File lib/qpay/sign.rb, line 21 def params_with_sign(params, config) params_dup = preprocess_params(params) params_dup.merge('sign' => Qpay.sign(params, config)) end
sign(params, config)
click to toggle source
# File lib/qpay/sign.rb, line 3 def sign(params, config) Digest::MD5.hexdigest(string_params_without_sign(params, config)).upcase end
sign_app(params, config)
click to toggle source
qpay.qq.com/qpaywiki/showdocument.php?pid=38&docid=165
# File lib/qpay/sign.rb, line 8 def sign_app(params, config) key = "#{config.app_key}&" data = preprocess_params(params, keep_blank: true).sort_by { |k, _| k }.map { |x| x.join('=') }.join('&') digest = OpenSSL::Digest.new('sha1') hmac = OpenSSL::HMAC.digest(digest, key, data) Base64.encode64(hmac).strip end
string_params_without_sign(params, config)
click to toggle source
# File lib/qpay/sign.rb, line 16 def string_params_without_sign(params, config) sorted_params = preprocess_params(params).sort_by { |k, _| k } (sorted_params << ['key', config.api_key]).map { |x| x.join('=') }.join('&') end
Private Class Methods
blank?(v)
click to toggle source
# File lib/qpay/sign.rb, line 42 def blank?(v) !v || v.nil? || (v.respond_to?(:empty?) && v.empty?) end
preprocess_params(params, keep_blank: false)
click to toggle source
# File lib/qpay/sign.rb, line 31 def preprocess_params(params, keep_blank: false) params_dup = params.dup stringified_keys_params = {} params_dup.each do |k, v| next if !keep_blank && blank?(v) stringified_keys_params[k.to_s] = v end stringified_keys_params.delete('key') stringified_keys_params end
random_string()
click to toggle source
# File lib/qpay/sign.rb, line 27 def random_string SecureRandom.urlsafe_base64.tr('-_', '') end