class DadaExpress::Sign

Public Class Methods

encode(params) click to toggle source
# File lib/dada_express/sign.rb, line 6
def encode(params)
  # 第一步:将参与签名的参数按照键值(key)进行字典排序
  step1 = params.sort.to_h
  # 第二步:将排序过后的参数,进行key和value字符串拼接
  step2 = step1.inject('') {|c, (k, v)| c + k.to_s + v.to_s }
  # 第三步:将拼接后的字符串首尾加上app_secret秘钥,合成签名字符串
  step3 = DadaExpress.configuration.app_secret + step2 + DadaExpress.configuration.app_secret
  # 第四步:对签名字符串进行MD5加密,生成32位的字符串
  step4 = Digest::MD5.hexdigest step3
  # 第五步:将签名生成的32位字符串转换为大写
  step5 = step4.upcase

  params.merge({signature: step5})
end