微信邦 发表于 2015-11-5 17:14:47

微信卡券签名参数变化通知


背景描述

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);

获取方式:GETURL: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参与签名的开发者,切换流程如下:

其他影响
本次一同影响的还有卡券自定义cell在跳转外链时带有的signature参数,出于安全考虑,本次变更后的自定义跳转链接中不再带有signature字段,url变为 http://www.xxx.com?encrypt_code=ENCRYPT_CODE&card_id=CARDID,
若之前校验了签名的商户可以去掉签名校验,否则可能会造成自定义链接无法跳转
Q&A

[*]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。


页: [1]
查看完整版本: 微信卡券签名参数变化通知