class Fadada::Digest
Public Class Methods
generate(timestamp, options = {})
click to toggle source
生成摘要 Base64(SHA1(app_id + MD5(timestamp + 参数集合1) + SHA1(app_secret + 参数集合) + 参数集合2 )) 示例: options = {
_params: { a: 1, b: 2 }, _md5_params: { a: 1, b: 2 }, _extend_params: { a: 1, b: 2 }
}
# File lib/fadada/digest.rb, line 13 def self.generate(timestamp, options = {}) _biz_data = Fadada::config.app_secret + params_transform(options[:_params]) _sha1_biz_data = ::Digest::SHA1.hexdigest(_biz_data).upcase _md5 = ::Digest::MD5.hexdigest(params_transform(options[:_md5_params]) + timestamp.to_s).upcase _extend = params_transform(options[:_extend_params]) _data = ::Digest::SHA1.hexdigest(::Fadada::config.app_id + _md5 + _sha1_biz_data + _extend).upcase Base64.strict_encode64(_data) end
verify?(params = {})
click to toggle source
验证摘要
# File lib/fadada/digest.rb, line 24 def self.verify?(params = {}) options = params.transform_keys(&:to_sym) _timestamp = options[:timestamp] digest_params = { _params: { transaction_id: options[:transaction_id] } } options[:msg_digest].to_s == generate(_timestamp, digest_params) end
Private Class Methods
params_transform(options)
click to toggle source
处理参数 需要排序后使用
# File lib/fadada/digest.rb, line 35 def self.params_transform(options) _options = options || {} _options.delete_if { |key, value| value.blank? }.map { |k,v| v }.join end