需求:點擊我們公司的微信公眾號,從菜單欄中進入會員中心,如果是新會員則需綁定注冊,注冊完跳轉(zhuǎn)到用戶中心頁面,然后給用戶發(fā)會員卡,如果是老會員,如果以前沒有的會員卡的,發(fā)一張會員卡給他,如果有,則不做任何處理。
實現(xiàn):我的思路是這樣的,進入會員中心,調(diào)用微信API接口,判斷用戶是否領過卡,若沒有領取,則調(diào)用微信JS-JDK的addCard()接口。具體實現(xiàn)過程如下(用C#實現(xiàn)):
1創(chuàng)建會員卡
1) 先打開微信開發(fā)者文檔,先調(diào)用創(chuàng)建會員卡接口,在文檔的4.1 創(chuàng)建會員卡接口,直接用postman,詳情見文檔。

創(chuàng)建的時候要特別注意”use_custom_code”: false,”bind_openid“:false兩個字段
第一個為是否自定義code,第二個是否綁定openid,這個很重要,很重要,很重要!?。∫驗楹竺嬲{(diào)用JS-JDK的addCard接口所需要的簽名會根據(jù)這兩個的值決定是否加入openid和code進行簽名的生成(被坑了很久)。后面會詳細說明這個簽名,先一步步來,記住這兩個參數(shù)一定要注意。按照這個文檔說明,創(chuàng)建會員卡應該沒有什么問題,對了, “sku”: { “quantity”: 50000000 }這個是庫存,要添加一點庫存。
2調(diào)用微信JS-SDK
1)引入微信js
<script type="text/javascript" src="http://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>
2)通過config接口注入權限驗證配置
<script> $(function () { //判斷是否已經(jīng)領取會員卡 $.ajax({ url: '/User/ExitCard', type: 'GET', success: function (data) { if (data.Status == 1) //1代表沒有存在卡,0代表存在卡 wxAddCard(); } }); } //微信添加卡券 function wxAddCard() { //微信sdk config wx.config({ debug: false, // 開啟調(diào)試模式,調(diào)用的所有api的返回值會在客戶端alert出來,若要查看傳入的參數(shù),可以在pc端打開,參數(shù)信息會通過log打出,僅在pc端時才會打印。 appId: '', // 必填,公眾號的唯一標識 timestamp: '', // 必填,生成簽名的時間戳 nonceStr: '', // 必填,生成簽名的隨機串 signature: '',// 必填,簽名,見附錄1 jsApiList: ['onMenuShareTimeline', 'onMenuShareAppMessage', 'onMenuShareQQ', 'onMenuShareWeibo', 'onMenuShareQZone', 'startRecord', 'stopRecord', 'onVoiceRecordEnd', 'playVoice', 'pauseVoice', 'stopVoice', 'onVoicePlayEnd', 'uploadVoice', 'downloadVoice', 'chooseImage', 'previewImage', 'uploadImage', 'downloadImage', 'translateVoice', 'getNetworkType', 'openLocation', 'getLocation', 'hideOptionMenu', 'showOptionMenu', 'hideMenuItems', 'showMenuItems', 'hideAllNonBaseMenuItem', 'showAllNonBaseMenuItem', 'closeWindow', 'scanQRCode', 'chooseWXPay', 'openProductSpecificView', 'addCard', 'chooseCard', 'openCard'] // 必填,需要使用的JS接口列表,所有JS接口列表見附錄2 }); wx.ready(function () { wx.addCard({ cardList: [{ cardId: '', cardExt: '{"code":"","openid": "", "timestamp": "","nonce_str": "", "signature": ""}' }], success: function (res) { $.ajax({ url: '/User/ActiveCard', type: 'GET', success: function (data) { if (data.Status == 0) alert("成功激活"); } }); }, cancel: function (res) { alert(JSON.stringify(res)) } }); }); } </script>
新聞熱點
疑難解答