var app = new Vue({ el: '#app', data: function () { return { user_type: user_type,//用户类型 1普通会员 2plus会员 user: user,//会员信息 recharge_id: '',//充值活动id trade_amount: '',//自定义充值金额 canInput: canInput,//是否可以自定义充值 auto_read_recharge_grade: auto_read_recharge_grade,//自定义充值是否赠送优惠 rechargeList: rechargeList, plusRechargeList: plusRechargeList, showMobile: false,//是否显示完整的手机号 btnDisabled: false, out_trade_no: '', showDetails: false, //是否显示模态框 showDetailsData: {}, //模态框数据 } }, methods: { //点击套餐 checkItem: function (id, money,item) { if (this.recharge_id == id) { this.recharge_id = ''; this.recharge_money = ''; } else { this.trade_amount = ''; this.recharge_id = id; this.recharge_money = money; this.showDetailsData = item; this.showDetails = true; } }, //确认充值 submit: function () { if (!this.trade_amount && !this.recharge_id) { this.$message({ message: '请选择充值套餐或定义充值金额', type: 'warning' }); return; } this.btnDisabled = true; this.$loading({ lock: true, text: '下单中...', spinner: 'el-icon-loading', background: 'rgba(0, 0, 0, 0.4)', customClass: 'el-loading-custom-class' }); var that = this; var trade_amount; if (!this.trade_amount) { trade_amount = this.recharge_money; } else { trade_amount = this.trade_amount; } that.sendRequest({ url: "/index.php/Pay/VipPay/submitRechargeOrder", data: { store_id: that.user.store_id, merchant_id: that.user.merchant_id, trade_amount: trade_amount, recharge_id: that.recharge_id, vid: that.user.vid, }, success: function (res) { that.$loading().close(); if (res.status == 1) { //创建订单成功 that.out_trade_no = res.out_trade_no; that.toWxPay(res.data); } else { that.btnDisabled = false; that.$message({ message: res.msg, type: 'error', duration: 3000, }); } } }); }, // 关闭 detailsClose() { this.showDetails = false; }, //调起微信支付 toWxPay: function (data) { var that = this; wx.chooseWXPay({ timestamp: data.timeStamp, // 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符 nonceStr: data.nonceStr, // 支付签名随机串,不长于 32 位 package: data.package, // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=\*\*\*) signType: data.signType, // 签名方式,默认为'SHA1',使用新版支付需传入'MD5' paySign: data.paySign, // 支付签名 success: function (result) { // 支付成功后的回调函数 if (result.errMsg == 'chooseWXPay:ok') { //支付成功 that.$loading({ lock: true, text: '查询中...', spinner: 'el-icon-loading', background: 'rgba(0, 0, 0, 0.4)', customClass: 'el-loading-custom-class' }); that.searchOrder(0); } else { that.btnDisabled = false; } }, fail: function (res) { that.$loading().close(); that.btnDisabled = false; that.$message({ message: res.errMsg ? res.errMsg : '微信支付调起失败', type: 'warning' }) }, cancel: function (res) { //用户点击取消时的回调函数,仅部分有用户取消操作的api才会用到。 that.btnDisabled = false; } }); }, //查询订单支付状态 searchOrder: function (count) { var that = this; count++; if (count > 10) { that.btnDisabled = false; that.$loading().close(); that.$message({ message: '充值查询失败,请稍后刷新重试', type: 'error', }); return; } that.sendRequest({ url: "/index.php/Pay/VipPay/searchWxOnlinePay", data: { out_trade_no: that.out_trade_no, }, success: function (res) { if (res.status == 1) { that.$loading().close(); that.btnDisabled = false; that.$message({ message: res.msg ? res.msg : '充值成功', type: 'success', duration: 1000, onClose: function () { localStorage.onlinepay = 1; window.history.go(-1); } }); } else { setTimeout(function () { that.searchOrder(count); }, 1000) } } }) }, //封装的请求方法 sendRequest: function (options) { $.ajax({ url: options.url, data: options.data, type: 'post', success: function (res) { options.success(res); }, error: function () { var res = { status: 0, msg: '请求发生错误', }; options.success(res); } }) } }, watch: { trade_amount: function (n, o) { var reg = /^[+]{0,1}(\d+)$|^[+]{0,1}(\d+\.\d{0,2})$/; if ((reg.test(n) == false || n < 0) && n != '') { this.trade_amount = o; } if (this.trade_amount) { this.recharge_id = ''; } } } });