微信邦

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3097|回复: 0

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

[复制链接]
发表于 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);

获取方式:GET
接口协议: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。



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

微信邦网联系QQ|Archiver|手机版|小黑屋|鲁公网安备 37082802000167号|微信邦 ( 鲁ICP备19043418号-5 )

GMT+8, 2024-9-19 09:33 , Processed in 0.064651 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2013 Wxuse Inc. | Style by ytl QQ:1400069288

快速回复 返回顶部 返回列表