好处:WeixinJSBridge不同于jssdk,不需要鉴权,是微信内置浏览器自带的接口。
1. 点击支付按钮事件
handlePay(){
let that = this;
if (typeof WeixinJSBridge == "undefined") {
if (document.addEventListener) {
document.addEventListener(
"WeixinJSBridgeReady",
that.onBridgeReady,
false
);
} else if (document.attachEvent) {
document.attachEvent("WeixinJSBridgeReady", that.onBridgeReady);
document.attachEvent("onWeixinJSBridgeReady",that. onBridgeReady);
}
} else {
this.onBridgeReady();
}
}
2. 执行支付相关
onBridgeReady() {
let that = this;
let params = {
}
getPaySign(params).then(({data})=>{
let {appid:appId,timeStamp,nonce_str:nonceStr,packageStr,signType,sign:paySign} = data;
WeixinJSBridge.invoke(
"getBrandWCPayRequest",
{
appId,
timeStamp,
nonceStr,
package: packageStr,
signType,
paySign
},
function(res) {
if (res.err_msg == "get_brand_wcpay_request:ok") {
that.$toast("支付成功")
} else {
that.$toast("支付失败,请重新支付");
}
}
);
})
}
3. 补充下 eslint 会针对WeixinJSBridge报错,需要添加下屏蔽(在package.json)
"eslintConfig": {
"root": true,
"env": {
"node": true
},
"globals": {"WeixinJSBridge" : false},
"extends": [
"plugin:vue/essential",
"eslint:recommended"
],
"parserOptions": {
"parser": "babel-eslint"
},
"rules": {}
},