/** * 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();