139-8950-0275

绍兴云远网络热线
首页 >> 小程序 >>小程序专业知识 >> 微信卡券签名参数变化通知-绍兴微信小程序开发为你转播
详细内容

微信卡券签名参数变化通知-绍兴微信小程序开发为你转播

1.jpg

背景描述


Appsecret是公众号的安全保障,鉴于之前卡券开发用appsecret参与签名有可能会有安全隐患,微信卡券团队计划于2015年11月15日之后不再支持appsecret参与卡券签名的方式,之前用appsecret参与签名的开发者须切换至比较安全的api_ticket参与签名的方式。


影响范围


本次切换有可能影响范围涉及调用addcard&choosecard两个接口的开发者,请这些开发者确认自己的cardsign参与签名的参数中是否含有appsecret,若使用的参与签名参数为 api_ticket、timestamp、card_id、code、openid、nonce_str则无影响;若参与卡券签名的参数为:appsecret、timestamp、card_id、code、openid、nonce_str则需要切换至api_ticket的方案。


卡券签名介绍


卡券签名用于H5中调用addcard接口完成卡券添加动作或者调用choosecard拉起用户已领取的卡券列表,用于防止卡券数据被擅改。

获得卡券签名的步骤一般为:

1.获取access_token(有效期7200秒,开发者必须在自己的服务全局缓存access_token);

2.用第一步拿到的access_token 采用GET方式请求获得卡券 api_ticket(有效期7200秒,开发者必须在自己的服务全局缓存卡券 api_ticket);


获取方式:GET

URL:https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=wx_card

接口协议:HTTP

编码方式:UTF-8

3. 将获取到的 api_ticket以及cardext中的timestamp、card_id、code、openid、nonce_str的value值进行字符串的字典序排序(若cardext中openid和code没有传值,则这两个字段也不参与签名);

4. 将所有参数字符串拼接成一个字符串进行sha1加密,得到signature。

5. signature中的timestamp,nonce字段和card_ext中的timestamp,nonce_str字段必须保持一致。


举例:

code=jonyqin_1434008071,

timestamp=1404896688,

card_id=pjZ8Yt1XGILfi-FUsewpnnolGgZk,

api_ticket=ojZ8YtyVyr30HheH3CM73y7h4jJE ,

nonce_str=jonyqin

则signature=sha1(1404896688jonyqinjonyqin_1434008071ojZ8YtyVyr30HheH3CM73y7h4jJE pjZ8Yt1XGILfi-FUsewpnnolGgZk)

=2b4d29b5f60fa4be37522ddfd9583c329446d3e3。


强烈建议开发者使用卡券资料包中的签名工具SDK进行签名或使用debug工具进行校验:http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=cardsign


切换流程


本次需要切换的是用appsecret代替api_tciket参与签名的开发者,切换流程如下:

2.png

其他影响


本次一同影响的还有卡券自定义cell在跳转外链时带有的signature参数,出于安全考虑,本次变更后的自定义跳转链接中不再带有signature字段,

url变为 http://www.xxx.com?encrypt_code=ENCRYPT_CODE&card_id=CARDID,

若之前校验了签名的商户可以去掉签名校验,否则可能会造成自定义链接无法跳转


Q&A


  1. Api_ticket和jsapi_ticket有什么区别?


Jsapi_ticket用于JSSDK的签名,发生在页面config注入时,而api_ticket用于卡券签名。


卡券签名和JSSDK的签名完全独立,两者的算法和意义完全不同,请不要混淆。JSSDK的签名是使用所有JS接口都需要走的一层鉴权,用以标识调用者的身份,和卡券本身并无关系。其次,卡券的签名考虑到协议的扩展性和简单的防数据擅改,设计了一套独立的签名协议。另外由于历史原因,卡券的JS接口先于JSSDK出现,当时的JSAPI并没有鉴权体系,所以在卡券的签名里也加上了api_ticket这些身份信息,希望开发者理解。



2.如果继续用appsecret签名,会怎么样?


我们计划于2015/11/15日切换对原来appsecret参与签名的支持,若开发者继续使用,用户领取时会报签名错误,或者拉取卡券列表时为空,影响用户正常领取流程,请开发者一定要注意!若在切换过程中遇到任何问题,可以加卡券开发QQ群反馈,群号为:512568283。

技术支持: 杭州云远科技有限公司 | 管理登录
seo seo