商城系統(tǒng) 注冊(cè)

小程序卡卷簽名錯(cuò)誤的分析

2018-01-31|HiShop
導(dǎo)讀:在開發(fā)小程序卡券時(shí),會(huì)經(jīng)常出現(xiàn)錯(cuò)誤,這大多是因?yàn)樾〕绦蚩ㄈ灻霈F(xiàn)錯(cuò)誤導(dǎo)致的。...

在開發(fā)小程序卡券時(shí),會(huì)經(jīng)常出現(xiàn)錯(cuò)誤,這大多是因?yàn)樾〕绦蚩ㄈ灻霈F(xiàn)錯(cuò)誤導(dǎo)致的。
 

卡卷簽名主要用到以下幾個(gè)參數(shù):

api_ticket (調(diào)用卡券相關(guān)接口的臨時(shí)票據(jù))timestamp (時(shí)間戳,單位為:秒)card_id (卡卷創(chuàng)建后獲得的卡卷ID)code (卡券code碼,相當(dāng)于用戶領(lǐng)取的那張卡卷的卡卷號(hào))openid (指定領(lǐng)取用戶的opeind)nonce_str (32位隨機(jī)字符串)

因?yàn)槲沂窃谖⑿殴娖脚_(tái)創(chuàng)建卡卷的,所以code和openid并不需要用到,所以實(shí)際參與簽名的是api_ticket、timestamp、card_id、nonce_str這4個(gè),card_id在公眾平臺(tái)創(chuàng)建卡卷的時(shí)候就能看到,timestamp和nonce_str這兩個(gè)時(shí)間戳和隨機(jī)數(shù)生成就不用說了很簡(jiǎn)單,這里重點(diǎn)說一下api_ticket 。

api_ticket的獲取比較麻煩,我們首先需要獲取到access_token,然后再用access_token換取api_ticket

另外就是獲取access_token的服務(wù)器地址還必須先加入公眾號(hào)的白名單,不然會(huì)提示獲取不了的,在微信公眾平臺(tái)里面點(diǎn)【安全中心】就能看到IP白名單的選項(xiàng),在里面添加你服務(wù)器的ip地址,哦對(duì)了,ip白名單在啟用前要先啟用開發(fā)者密碼,這個(gè)在【基本配置】那里,將開發(fā)者密碼啟用后,Ip白名單才能添加地址。

好了,正常下來應(yīng)該能獲取到access_token了,然后我們需要用它去換取api_ticket

 

這里值得注意的是,兩個(gè)接口在短時(shí)間內(nèi)頻繁調(diào)用可能會(huì)受限,所以api_ticket獲取到后要進(jìn)行緩存,避免重復(fù)調(diào)用接口,api_ticket的有效期為2個(gè)小時(shí)。

好了,到這里簽名所用到的參數(shù)都齊了,之后就是生成簽名

貼一下自己的代碼,PHP端:

 

最后返回的3個(gè)參數(shù)將返回給小程序,作為wx.addCard()--cardList--cardExt的值,當(dāng)然,在賦值前我們還必須把這三個(gè)參數(shù)json序列化字符串,cardExt接收的是一個(gè)字符串而不是對(duì)象,那么到這里,卡卷的流程基本就是這樣了。

總結(jié)一下幾個(gè)要注意的地方:

獲取access_token時(shí),使用的appid是公眾號(hào)的而非小程序的服務(wù)器ip地址需要在微信公眾平臺(tái)加入ip白名單api_ticket在獲取到后要進(jìn)行緩存,因?yàn)轭l繁調(diào)用接口有可能會(huì)受限。小程序wx.addCard()中,cardExt參數(shù)是一個(gè)字符串而不是對(duì)象,所以要將簽名連同其他參數(shù)轉(zhuǎn)為字符串后再賦值。cardExt字符串里的字段參數(shù)必須和參與簽名的參數(shù)一致(card_id除外,這個(gè)是寫在wx.addCard()--cardList--cardId)

基本上就是這些。
 

HiShop小程序工具提供多類型商城/門店小程序制作,可視化編輯 1秒生成5步上線。通過拖拽、拼接模塊布局小程序商城頁面,所看即所得,只需要美工就能做出精美商城。

更多小程序資訊,盡在:m.zytcm.com.cn/xiaocx/


 

電話咨詢 預(yù)約演示 0元開店