前端調(diào)微信接口無非是:(注入配置信息成功)=>(調(diào)用微信方法),對的扑庞,就是這樣蒙袍!說起前端調(diào)微信的方法很簡單,但是在SPA頁面上調(diào)微信的東西就知道多坑了嫩挤。前端只需要傳當(dāng)前頁面的url到后臺害幅,后臺返回我們想要的時間戳,隨機串岂昭,簽名等以现!還有在公眾號上配什么安全域名等等!
在這里先說url吧约啊!在vue的單頁面上調(diào)微信的接口邑遏!
vue框架開發(fā)上調(diào)微信接口(切記在vue上跳轉(zhuǎn)的頁面都是在同一頁面上,說白了就是通過路由控制顯示哪個組件恰矩!還是在一個頁面上)
1.調(diào)微信地圖和微信分享好友等等
ios:
在調(diào)燃呛小(注入配置信息成功)后,就可以調(diào)微信的接口了外傅,之后在哪個頁面上需要調(diào)微信的方法就直接在jsApiList: [] 寫就可以了纪吮!注意:如果你在vue上調(diào)過一次無需在調(diào)(配置信息),在重調(diào)的話萎胰,ios上就有調(diào)不出來微信的方法了
安卓上:
在哪個頁面需要調(diào)微信的方法必須要重新調(diào)饶朊恕(注入配置信息成功)后,才可以調(diào)微信的接口技竟。
axios.get(`接口地址?url=${url}`)
.then((res) => {
const data = res.data.data;
wx.config({
debug: false, // 開啟調(diào)試模式,調(diào)用的所有api的返回值會在客戶端alert出來冰肴,若要查看傳入的參數(shù),可以在pc端打開,參數(shù)信息會通過log打出熙尉,僅在pc端時才會打印联逻。
appId: data.appid, // 必填,公眾號的唯一標(biāo)識
timestamp: data.timestamp, // 必填检痰,生成簽名的時間戳
nonceStr: data.nonceStr, // 必填包归,生成簽名的隨機串
signature: data.signature, // 必填,簽名攀细,見附錄1
jsApiList:[
'getLocation',
'openLocation'
] // 必填,需要使用的JS接口列表爱态,所有JS接口列表見附錄2
});
});
wx.ready(() => {
wx.getLocation({
type: 'gcj02', // 默認(rèn)為wgs84的gps坐標(biāo)谭贪,如果要返回直接給openLocation用的火星坐標(biāo),可傳入'gcj02'
success: (res) => {
const latitude = res.latitude; // 緯度锦担,浮點數(shù)俭识,范圍為90 ~ -90
const longitude = res.longitude; // 經(jīng)度,浮點數(shù)洞渔,范圍為180 ~ -180套媚。
commit(types.UPDATE_LOCATION, {latitude, longitude});
}
});
});
調(diào)微信支付
axios.get(`接口地址?url=${url}`)
.then((res) => {
const data = res.data.data;
wx.config({
debug: false, // 開啟調(diào)試模式,調(diào)用的所有api的返回值會在客戶端alert出來,若要查看傳入的參數(shù)磁椒,可以在pc端打開堤瘤,參數(shù)信息會通過log打出,僅在pc端時才會打印浆熔。
appId: data.appid, // 必填本辐,公眾號的唯一標(biāo)識
timestamp: data.timestamp, // 必填,生成簽名的時間戳
nonceStr: data.nonceStr, // 必填医增,生成簽名的隨機串
signature: data.signature, // 必填慎皱,簽名,見附錄1
jsApiList:[
'chooseWXPay'
] // 必填叶骨,需要使用的JS接口列表茫多,所有JS接口列表見附錄2
});
});
wx.chooseWXPay({
timestamp: 0, // 支付簽名時間戳,注意微信jssdk中的所有使用timestamp字段均為小寫忽刽。但最新版的支付后臺生成簽名使用的timeStamp字段名需大寫其中的S字符
nonceStr: '', // 支付簽名隨機串天揖,不長于 32 位
package: '', // 統(tǒng)一支付接口返回的prepay_id參數(shù)值,提交格式如:prepay_id=***)
signType: '', // 簽名方式跪帝,默認(rèn)為'SHA1'宝剖,使用新版支付需傳入'MD5'
paySign: '', // 支付簽名
success: function (res) {
// 支付成功后的回調(diào)函數(shù)
}
});
注意:配置好支付授權(quán)目錄,該目錄必須是發(fā)起支付的頁面的精確目錄歉甚,子目錄下無法正常調(diào)用支付万细。(微信支付路徑要求二級或以上路徑)
所有需要使用JS-SDK的頁面必須先注入配置信息,否則將無法調(diào)用(同一個url僅需調(diào)用一次,對于變化url的SPA的web app可在每次url變化時進行調(diào)用,目前Android微信客戶端不支持pushState的H5新特性赖钞,所以使用pushState來實現(xiàn)web app的頁面會導(dǎo)致簽名失敗腰素,此問題會在Android6.2中修復(fù))。