在开发小程序卡券时,会经常出现错误,这大多是因为小程序卡券签名出现错误导致的。
卡卷签名主要用到以下几个参数:
api_ticket (调用卡券相关接口的临时票据)timestamp (时间戳,单位为:秒)card_id (卡卷创建后获得的卡卷ID)code (卡券code码,相当于用户领取的那张卡卷的卡卷号)openid (指定领取用户的opeind)nonce_str (32位随机字符串)
因为我是在微信公众平台创建卡卷的,所以code和openid并不需要用到,所以实际参与签名的是api_ticket、timestamp、card_id、nonce_str这4个,card_id在公众平台创建卡卷的时候就能看到,timestamp和nonce_str这两个时间戳和随机数生成就不用说了很简单,这里重点说一下api_ticket 。
api_ticket的获取比较麻烦,我们首先需要获取到access_token,然后再用access_token换取api_ticket
另外就是获取access_token的服务器地址还必须先加入公众号的白名单,不然会提示获取不了的,在微信公众平台里面点【安全中心】就能看到IP白名单的选项,在里面添加你服务器的ip地址,哦对了,ip白名单在启用前要先启用开发者密码,这个在【基本配置】那里,将开发者密码启用后,Ip白名单才能添加地址。
好了,正常下来应该能获取到access_token了,然后我们需要用它去换取api_ticket
这里值得注意的是,两个接口在短时间内频繁调用可能会受限,所以api_ticket获取到后要进行缓存,避免重复调用接口,api_ticket的有效期为2个小时。
好了,到这里签名所用到的参数都齐了,之后就是生成签名
贴一下自己的代码,PHP端:
最后返回的3个参数将返回给小程序,作为wx.addCard()--cardList--cardExt的值,当然,在赋值前我们还必须把这三个参数json序列化字符串,cardExt接收的是一个字符串而不是对象,那么到这里,卡卷的流程基本就是这样了。
总结一下几个要注意的地方:
获取access_token时,使用的appid是公众号的而非小程序的服务器ip地址需要在微信公众平台加入ip白名单api_ticket在获取到后要进行缓存,因为频繁调用接口有可能会受限。小程序wx.addCard()中,cardExt参数是一个字符串而不是对象,所以要将签名连同其他参数转为字符串后再赋值。cardExt字符串里的字段参数必须和参与签名的参数一致(card_id除外,这个是写在wx.addCard()--cardList--cardId)
基本上就是这些。
小程序工具提供多类型商城/门店小程序制作,可视化编辑 1秒生成5步上线。通过拖拽、拼接模块布局小程序商城页面,所看即所得,只需要美工就能做出精美商城。
更多微信小程序相关资讯,请前往:https://www.kesion.com/miniprogramschool/
KESION 科汛软件
KESION 科汛软件是国内领先的在线教育软件及私域社交电商软件服务提供商,长期专注于为企业提供在线教育软件及社交电商SaaS平台解决方案。
公司核心产品云开店SaaS社交电商服务平台、在线教育SaaS服务平台、教育企业数字化SaaS云平台、企微营销助手、私有化独立部署品牌网校和在线教育咨询等。KESION 不断通过技术创新,提供产品和服务,助力企业向数字化转型,通过科技驱动商业革新,让商业变得更智慧!
流动图书馆是一个图书漂流和借阅工具,旨在共享闲置图书,并链接趣味相投的小伙伴。那么流动图书馆小程序如何开发...
开发一款小程序在如今移动互联网时代非常普遍,那么对于开发一个基本的小程序项目其基本的模块以及文件目录怎样。...