最近在作小程序卡卷,真是一個接一個的坑,不只網上的資料很少,官方文檔更是混亂,搞了好幾天才搞定,這裏說說過程當中遇到的坑,基本上這些坑90%都出在簽名上。php
由於我是在微信公衆平臺建立卡卷的,因此code和openid並不須要用到,因此實際參與簽名的是api_ticket、timestamp、card_id、nonce_str這4個,card_id在公衆平臺建立卡卷的時候就能看到,timestamp和nonce_str這兩個時間戳和隨機數生成就不用說了很簡單,這裏重點說一下api_ticket 。
json
api_ticket的獲取比較麻煩,咱們首先須要獲取到access_token,而後再用access_token換取api_ticket小程序
獲取access_token的接口地址是下面這個:微信小程序
這裏重點來了,我就是在這裏被坑了幾天,請求接口中須要咱們添加appid和secret,而這裏使用的是公衆號的appid和secret!!!公衆號的!公衆號的!重要的事情說三遍,記住是公衆號的appid而不是小程序的!!!api
另外還有一點,就是獲取access_token的服務器地址還必須先加入公衆號的白名單,否則會提示獲取不了的,在微信公衆平臺裏面點【安全中心】就能看到IP白名單的選項,在裏面添加你服務器的ip地址,哦對了,ip白名單在啓用前要先啓用開發者密碼,這個在【基本配置】那裏,將開發者密碼啓用後,Ip白名單才能添加地址。緩存
好了,正常下來應該能獲取到access_token了,而後咱們須要用它去換取api_ticket安全
獲取api_ticket的接口地址是下面這個:服務器
這裏值得注意的是,兩個接口在短期內頻繁調用可能會受限,因此api_ticket獲取到後要進行緩存,避免重複調用接口,api_ticket的有效期爲2個小時。
微信
好了,到這裏簽名所用到的參數都齊了,以後就是生成簽名,官方說明是這樣:app
最後返回的3個參數將返回給小程序,做爲wx.addCard()--cardList--cardExt的值,固然,在賦值前咱們還必須把這三個參數json序列化字符串,cardExt接收的是一個字符串而不是對象,那麼到這裏,卡卷的流程基本就是這樣了。
基本上就是這些了,最後吐槽一下官方開發文檔真夠亂的,有些地方還說得不明不白!!!!
本文做者:kauthy
原文地址:聊一聊卡卷簽名的那些坑-教程-小程序社區-微信小程序-微信小程序開發社區-小程序開發論壇-微信小程序聯盟