1. 程式人生 > >微信卡券領用

微信卡券領用

timestamp 和數 微信 weixin res ali body lis 統計

客戶對系統中的微信卡券很不滿意,說是一次不能領取多張,而且不能控制領取的次數。

看到微信官方的demo

http://203.195.235.76/jssdk/

最後是長這樣

技術分享圖片

領取到卡包。你會發現,成功的領到了 2 張券。

然後你按它的文檔,勇敢的寫了一個demo,最後你會發現,成功的領到了1張券。各種原因的查找,網上也沒有這些說明。

在試驗了N次之後,重復發布了N次之後。終於發現原因了。

wx.addCard({
cardList: [
{
cardId: ‘pDF3iY9tv9zCGCj4jTXFOo1DxHdo‘,
cardExt: ‘{"code": "", "openid": "", "timestamp": "1418301401", "signature":"f6628bf94d8e56d56bfa6598e798d5bad54892e5","outer_str":"123"}‘

},
{
cardId: ‘pDF3iY9tv9zCGCj4jTXFOo1DxHdo‘,
cardExt: ‘{"code": "", "openid": "", "timestamp": "1418301401", "signature":"f6628bf94d8e56d56bfa6598e798d5bad54892e5","outer_str":"123"}‘
}
],
success: function (res) {
alert(‘已添加卡券:‘ + JSON.stringify(res.cardList));
},
cancel: function (res) {
alert(JSON.stringify(res))
}
});

註意看,它沒有 nonce_str,它沒有 nonce_str,它沒有 nonce_str ,重點說三遍。

是不是很吃驚。

再看這個文檔

https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115

nonce_str 隨機字符串,由開發者設置傳入, 加強安全性(若不填寫可能被重放請求) 。隨機字符串,不長於32位。推薦使用大小寫字母和數字,不同添加請求的nonce須動態生成,若重復將會導致領取失敗。

理解了下設計者的想法。nonce_str有值,證明,是不同的請求,"同一個值將會導致領取失敗"。如果不填說明沒值,將會成功。

最後一個問題,outer_str居然不起作用。看文檔

outer_str 領取渠道參數,用於標識本次領取的渠道值。

經過我多次測試,我表示這個的確是不會起作用。最後,查看到以下文檔

https://www.w3cschool.cn/weixinkaifawendang/9pfz1qey.html

outer_id int 12 領取場景值,用於領取渠道的數據統計,默認值為0,字段類型為整型,長度限制為60位數字。用戶領取卡券後觸發的事件推送中會帶上此自定義場景值。

死馬當活馬醫,使用了outer_id,終於從事件User_Get_Card中將此值推送給我了。

此值放到了outerstr屬性中,大寫的服字。

微信卡券領用