[原创] 微信js-api签名

微信 js-api

2016-02-23 2421


微信JS-SDK说明文档

 http://mp.weixin.qq.com/wiki/11/74ad127cc054f6b80759c40f77ec03db.html

主要代码如下



require 'securerandom'

  # http://mp.weixin.qq.com/wiki/11/74ad127cc054f6b80759c40f77ec03db.html
  # 比较麻烦的就是那个signature签名生成,需要注意签名字符串的生成方法
  # js-api调用demo,签名生成算法
  def js_api
    page_head_data('js-api测试','','')

    url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=#{get_mp_token["access_token"]}&type=jsapi"
    result = JSON.parse(RestClient.get(url).to_s)
    # render json: result

    @data = {}
    @data['noncestr'] = SecureRandom.hex.upcase
    @data['timestamp'] = Time.now.to_i
    @data['jsapi_ticket'] = result['ticket']
    @data['url'] = request.url.split('#')[0]#当前页面的url,如果url中包含#,取#前面的
    # 拼接数组数据
    tem_data = @data.sort.map { |item| item.join('=') }.join('&')
    signature = Digest::SHA1.hexdigest(tem_data)
    @data['signature'] = signature
  end