1.注入wx.config时,注意需要先获取jsapi_ticket,请求地址为
https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=jsapi
ticket 有效期7200s,需要全局缓存
2.获得jsapi_ticket后,就可以生成JS-SDK权限验证的签名了。
签名方法:参与签名的字段包括noncestr(随机字符串), 有效的jsapi_ticket, timestamp(时间戳), url(当前网页的URL,不包含#及其后面部分) 。对所有待签名参数按照字段名的ASCII 码从小到大排序(字典序)后,使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串string1,
例如:(字段顺序按照例子中字段顺序)
jsapi_ticket=sM4AOVdWfPE4DxkXGEs8VMCPGGVi4C3VM0P37wVUCFvkVAy_90u5h9nbSlYy3-Sl-HhTdfl2fzFy1AOcHKP7qg&noncestr=Wm3WZYTPz0wzccn×tamp=1414587457&url=http://mp.weixin.qq.com?params=value
url为请求的页面地址,即js文件所在页面地址,包含参数部分,不包含#及后面部分
对string1进行sha1签名,得到signature;
wx.config的字段noncestr和timestamp需要与signature中用的值相同,传到页面时需和signature一同传递
验证成功,会自动执行wx.ready中的具体操作,
卡券的功能函数就需要放到wx.ready中执行,或者绑定到点击事件上,这里卡券还有一个签名,需要请求的就是微信卡券api_ticket。请求地址:
https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=wx_card
有效期7200s,也需要全局缓存
微信卡券接口中使用的签名凭证api_ticket,与步骤三中config使用的签名凭证jsapi_ticket不同,开发者在调用微信卡券JS-SDK的过程中需依次完成两次不同的签名,并确保凭证的缓存。
卡券的签名主要是在卡券的cardtxt扩展字段中,个人所做的是卡券的领取,其他卡券功能签名具体查看官方文档,
1.将 api_ticket、timestamp、card_id、code、openid、nonce_str的value值进行字符串的字典序排序。
可以放到list中,然后sort()方法后,依次取出,拼接后sha1加密,得到signature。
2.同样,此次签名获得的signature中的timestamp,nonceStr字段和card_ext中的timestamp,nonce_str字段必须保持一致。
4.code=1434008071,timestamp=1404896688,card_id=pjZ8Yt1XGILfi-FUsewpnnolGgZk, api_ticket=ojZ8YtyVyr30HheH3CM73y7h4jJE ,nonce_str=123 则signature=sha1(12314048966881434008071ojZ8YtyVyr30HheH3CM73y7h4jJEpjZ8Yt1XGILfi-FUsewpnnolGgZk)=f137ab68b7f8112d20ee528ab6074564e2796250。
card_ext{"timestamp": ,"nonce_str": ,"signature": }