官方文檔:微信JS-SDK說明文檔
1. 綁定域名
在微信公眾號平臺中配置安全域名: 公眾號設(shè)置 - 功能設(shè)置 - JS接口安全域名
2. 引用js文件
npm install weixin-js-sdk --save
<script>
import wx from 'weixin-js-sdk'
export default {
}
</script>
3. 通過config接口注入權(quán)限驗(yàn)證配置
wx.config({
debug: true, // 開啟調(diào)試模式,調(diào)用的所有api的返回值會在客戶端alert出來,若要查看傳入的參數(shù),可以在pc端打開,參數(shù)信息會通過log打出,僅在pc端時才會打印。
appId: '', // 必填,公眾號的唯一標(biāo)識
timestamp: , // 必填,生成簽名的時間戳
nonceStr: '', // 必填,生成簽名的隨機(jī)串
signature: '',// 必填,簽名
jsApiList: [] // 必填,需要使用的JS接口列表
});
4. 具體操作
// 獲取微信簽名
$.ajax({
url: '后端給的接口',
data: { // 具體參數(shù)看后臺給你的文檔,我的只需要一個url
url: location.href.split('#')[0],
// 這里是當(dāng)前頁面的url,一定要 location.href 獲取,不然簽名會無效。
},
success: function (res) {
// res 返回的簽名等數(shù)據(jù)
}
})
wx.config({
debug: false,
appId: res.appId, // 必填,公眾號的唯一標(biāo)識
timestamp: res.timeStamp, // 必填,生成簽名的時間戳
nonceStr: res.nonceStr, // 必填,生成簽名的隨機(jī)串
signature: res.signature, // 必填,簽名
jsApiList: ['scanQRCode'] // 必填,需要使用的JS接口列表
})
wx.ready(function () {
// config信息驗(yàn)證成功后會執(zhí)行ready方法,所有接口調(diào)用都必須在config接口獲得結(jié)果之后
// config 是一個客戶端的異步操作,所以如果需要在頁面加載時調(diào)用相關(guān)接口,則須把相關(guān)接口放在ready函數(shù)中調(diào)用來確保正確執(zhí)行.對于用戶觸發(fā)是才調(diào)用的接口,則可以直接調(diào)用,不需要放在ready函數(shù)中
wx.checkJsApi({ // 判斷當(dāng)前客戶端版本是否支持指定JS接口
jsApiList: [
'scanQRCode'
],
success: function (res) { // 以鍵值對的形式返回,可用true,不可用false。如:{"checkResult":{"scanQRCode":true},"errMsg":"checkJsApi:ok"}
if (res.checkResult.scanQRCode === true) {
wx.scanQRCode({ // 微信掃一掃接口
desc: 'scanQRCode desc',
needResult: 1, // 默認(rèn)為0,掃描結(jié)果由微信處理,1則直接返回掃描結(jié)果,
scanType: ['qrCode', 'barCode'], // 可以指定掃二維碼還是一維碼,默認(rèn)二者都有
success: function (res) {
const getCode = res.resultStr // 當(dāng)needResult 為 1 時,掃碼返回的結(jié)果
}
})
} else {
alert('抱歉,當(dāng)前客戶端版本不支持掃一掃')
}
},
fail: function (res) { // 檢測getNetworkType該功能失敗時處理
alert('fail' + res)
}
})
})
/* 處理失敗驗(yàn)證 */
wx.error(function (res) {
// config 信息驗(yàn)證失敗會執(zhí)行error函數(shù),如簽名過期導(dǎo)致驗(yàn)證失敗,具體錯誤信息可以打開config的debug模式查看,也可以在返回的res參數(shù)中查看,對于SPA可以在這里更新簽名
alert('配置驗(yàn)證失敗: ' + res.errMsg)
})
具體的簽名等數(shù)據(jù)都是后臺處理好了,前端調(diào)用接口拿數(shù)據(jù)就OK。