微信卡券JS SDK 开发问题

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&timestamp=1414587457&url=http://mp.weixin.qq.com?params=value

url为请求的页面地址,即js文件所在页面地址,包含参数部分,不包含#及后面部分

对string1进行sha1签名,得到signature;

wx.config的字段noncestrtimestamp需要与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中的timestampnonce_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": }






你可能感兴趣的:(微信卡券JS SDK 开发问题)