/**
|
* WxH5Pay
|
* @author Tevin
|
*/
|
|
import { Tools } from '@components/common/Tools';
|
|
export class WxH5Pay {
|
constructor() {
|
}
|
|
callWxPay(payParam, callback) {
|
Tools.toast('正在支付...');
|
setTimeout(() => {
|
if (typeof WeixinJSBridge === 'undefined') {
|
if (document.addEventListener) {
|
document.addEventListener('WeixinJSBridgeReady', () => {
|
this._jsApiCall(payParam, callback);
|
}, false);
|
} else if (document.attachEvent) {
|
document.attachEvent('WeixinJSBridgeReady', () => {
|
this._jsApiCall(payParam, callback);
|
});
|
document.attachEvent('onWeixinJSBridgeReady', () => {
|
this._jsApiCall(payParam, callback);
|
});
|
}
|
} else {
|
this._jsApiCall(payParam, callback);
|
}
|
}, 100);
|
}
|
|
_jsApiCall(payParam, callback) {
|
window._hmt.push(['_trackEvent', 'wx', 'wx-wxPay', 'wx-wxPay-BrandWCPay:start', 0]);
|
// 发起支付
|
const sign = JSON.parse(payParam);
|
WeixinJSBridge.invoke('getBrandWCPayRequest', sign, res => {
|
// 支付结果
|
if (res.err_msg === 'get_brand_wcpay_request:ok') {
|
callback && callback('ok', '支付成功!');
|
window._hmt.push(['_trackEvent', 'wx', 'wx-wxPay', 'wx-wxPay-brandWCPay:ok', 0]);
|
} else if (res.err_msg === 'get_brand_wcpay_request:cancel') {
|
callback && callback('cancel', '支付已取消!');
|
window._hmt.push(['_trackEvent', 'wx', 'wx-wxPay', 'wx-wxPay-brandWCPay:cancel', 0]);
|
} else {
|
let msg = '支付失败!';
|
const errMsg = res.err_msg || res.errMsg || '';
|
// 例如 "chooseWXPay:没有此SDK或暂不支持此SDK模拟"
|
msg += errMsg ? '(' + errMsg + ')' : '';
|
callback && callback('fail', msg);
|
window._hmt.push(['_trackEvent', 'wx', 'wx-wxPay', 'wx-wxPay-brandWCPay:fail', 0]);
|
}
|
});
|
}
|
|
}
|
|
// 全局服务实例
|
export const $wxH5Pay = new WxH5Pay();
|