/** *Created by ZHJY on 2020/7/14. */ var payContainer = new Vue({ el:"#payContainer", mixins: [hlbPayMixin,mhPayMixin], data: { paymentChannel:'HLB', isSubMitStatus:false, payInfo:{ payBankNum:'',//银行网管信息 payCode:'',//链接状态 shopOrderId:'',//主订单ID payUnpaidAmount:0,//本次支付金额 payTime:'',//链接失效时间 payLinkLogo:'', payLinkType:'', payUserType:'',//网银支付类型 payLinkTypeText:'',//文案 }, iframe:'', orderFlag:1,// 是否是订单 0非订单 1订单 bankListB2BData:[],// 企业网银银行列表 bankListB2CData:[],// 个人网银银行列表 userName :'', goodList:'', totalAmount: '', //合计 payableAmount:'',//剩余支付金额 payAmount:'', //本次支付金额 obligation:'',// 本次待付金额 eachDiscount:'',// 子订单优惠金额 receiptAmount:'',//已支付金额 discernReceipt:'',//支付记录 discernReceiptList:[],//支付记录列表 orderProductList:[],//商品列表 bankTabIndex:0, downHour:'00',//倒计时 downMinute:'00',//倒计分 downSecond:'00',//倒计秒 isSiled:false, mbOrderId:'', isRequest:false, isPayAlert:false, isErrorShow:false, iconErrorClass:'', iconErrorText:'', iconErrorMsgnone:'', organizeId:'', //组织机构id orderNo:'', //订单号 orderTotalFee:'', unpaidAmount:'', //真正的付款金额 comboInfo: [], // 会员套餐 type: 1, vipMonth: 0, vipRecordId: undefined }, filters: { NumFormat :function(value) { if(!value) return '0.00'; var intPart = Number(value) - Number(value)%1; //获取整数部分(这里是windy93的方法) var intPartFormat = intPart.toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,'); //将整数部分逢三一断 var floatPart = ".00"; //预定义小数部分 var value2Array = value.toString().split("."); if(value2Array.length == 2) { //=2表示数据有小数位 floatPart = value2Array[1].toString(); //拿到小数部分 if(floatPart.length == 1) { //补0,实际上用不着 return intPartFormat + "." + floatPart + '0'; } else { return intPartFormat + "." + floatPart; } } else { return intPartFormat + floatPart; } } }, methods: { LinkInfoOrderBank:function(linkLogo){//初始化支付订单加密数据 var _self = this; PayApi.PayOrderLinkData({linkLogo:linkLogo},function(response){ if(response.code === 0){ var data = response.data; console.log(data); _self.payInfo.shopOrderId = data.orderPayLink.shopOrderId; _self.orderFlag = data.orderFlag; _self.payInfo.payUnpaidAmount = _self.payAmount = data.orderPayLink.unpaidAmount; _self.payInfo.payTime = decodeURI(data.time); _self.payInfo.payLinkType = data.orderPayLink.payType; _self.payInfo.payLinkTypeText = _self.payInfo.payLinkType === 1 ? '企业网银' : '个人网银'; if(_self.paymentChannel === 'HLB'){ _self.payInfo.payUserType = _self.payInfo.payLinkType === 1 ? 'B2B' : 'B2C'; }else{ _self.payInfo.payUserType = _self.payInfo.payLinkType === 1 ? 'ENTERPRISE' : 'USER'; } _self.getBankList(); _self.unpaidAmount = data.orderPayLink.unpaidAmount; _self.type = data.type; if(data.code === 0){ setTimeout(function () { //支付倒计时 _self.countTime(_self.payInfo.payTime) }, 1000); if(_self.type === 1){ _self.infoPayOrderCheckoutCounter(); }else{ console.log('本次支付链接是支付超级会员'); _self.userName = data.userName; _self.vipMonth = data.orderPayLink.vipMonth; _self.vipRecordId = data.orderPayLink.vipRecordId; _self.isRequest = true; } }else{ _self.isErrorShow = true; _self.isRequest = true; switch (_self.payInfo.payCode) { case -2: _self.iconErrorClass = 'offline'; _self.iconErrorText = '订单已通过线下转账方式付款'; _self.iconErrorMsgnone = '不能再使用网银支付'; break; case -3: _self.iconErrorClass = 'fail'; _self.iconErrorText = '链接超过24小时未完成支付,已失效'; _self.iconErrorMsgnone = '请重新生成支付链接,继续支付'; break; case 5: _self.iconErrorClass = 'paid'; _self.iconErrorText = '款项已支付完成,无需重复支付'; _self.iconErrorMsgnone = ''; break; } } }else if(response.code === -1){ _self.isErrorShow = true; _self.isRequest = true; _self.iconErrorClass = 'again'; _self.iconErrorText = '链接已更新,请联系业务人员获取最新链接再进行支付'; _self.iconErrorMsgnone = ''; }else{ CAIMEI.Alert(response.msg,'确定',false); } }); }, infoPayOrderCheckoutCounter:function(){//初始化订单数据 var _self = this; PayApi.PayOrderCheckoutShoporders({shopOrderId:_self.payInfo.shopOrderId},function(response){ console.log(response); if(response.code === 0){ var data = response.data; _self.discernReceiptList = data.discernReceipt;// 支付记录 _self.orderProductList = data.orderProductList;// 自订单商品信息 _self.obligation = data.shopOrder.obligation; // 待付金额 _self.eachDiscount = data.shopOrder.eachDiscount; //优惠金额 _self.payableAmount = (data.shopOrder.obligation*100 - _self.payInfo.payUnpaidAmount*100)/100; //剩余支付金额 = 子订单待付金额 - 本次支付金额 _self.userName = data.userName; _self.totalAmount = data.shopOrder.totalAmount; // 子订单金额合计 _self.receiptAmount= data.shopOrder.receiptAmount; // 已支付金额 _self.isRequest = true; }else{ CAIMEI.Alert(response.msg,'确定',false); } }) }, getBankList:function () {// 获取网银支付银行列表 var _self = this; PayApi.PayGetBankCode({},function(response){ if(response.code === 0){ _self.bankListB2BData = response.data.B2B; _self.bankListB2CData = response.data.B2C; if( _self.payInfo.payLinkType === 1){ _self.payInfo.payBankNum = _self.bankListB2BData[0].b2B; }else{ _self.payInfo.payBankNum = _self.bankListB2CData[0].b2C; } }else{ console.log('获取网银支付银行列表异常') } }) }, PaySubmitFn:function(){//立即支付 var _self = this; if(_self.payInfo.payBankNum === ''){ CAIMEI.dialog('请选择银行!'); return; } if (_self.type === 2){ // 支付超级会员 console.log('支付超级会员'); if(this.paymentChannel === 'HLB'){ _self.hlb_PayVipPcMallPay(); }else{ _self.mh_PayVipPcMallPay(); } }else { // 普通订单 console.log('支付普通订单'); if(this.paymentChannel === 'HLB'){ _self.hlb_PayOrderPcMallPay(); }else{ _self.mh_PayOrderPcMallPay(); } } }, RefreshBody:function(){//刷新弹窗 var _self = this; PayApi.PayOrderUnionStatus({mbOrderId:_self.mbOrderId,orderFlag:_self.orderFlag,shopOrderId:_self.payInfo.shopOrderId},function(response){ if(response.code === 0){ _self.isPayAlert = false; var data = response.data; var pageType = _self.type === 1 ? 'www' : 'vip&payFlag=1'; // 1 普通订单 2 vip订单 var type = data.rt10_orderStatus === 'SUCCESS' ? 'success' : 'error'; // 成功 or 失败 window.location.href = '/pay/success.html?pageType='+ pageType +'&type='+ type +'&payAmount=' + _self.payInfo.payUnpaidAmount; }else{ CAIMEI.Alert(response.msg,'确定',false); } }); }, checkBankPay:function(index,item){// 选择银行 this.bankTabIndex = index; if( this.payInfo.payLinkType === 1){ this.payInfo.payBankNum = item.b2B; }else{ this.payInfo.payBankNum = item.b2C; } }, slideToggleContent:function(){ this.isSiled = !this.isSiled; }, countTime:function(value){//支付链接倒计时 var _self = this; //获取当前时间 var date = new Date(); var now = date.getTime(); //设置截止时间 var endDate = new Date(value); var end = endDate.getTime(); //时间差 var differTime = end - now; //定义变量,h,m,s保存倒计时的时间 var h, m, s; if (differTime >= 0) { h = Math.floor(differTime / 1000 / 60 / 60); m = Math.floor(differTime / 1000 / 60 % 60); s = Math.floor(differTime / 1000 % 60); _self.downHour = h < 10 ? ("0" + h) : h; _self.downMinute = m < 10 ? ("0" + m) : m; _self.downSecond = s < 10 ? ("0" + s) : s; //递归调用函数所以是延时器不是定时器 setTimeout(function () { _self.countTime(value) }, 1000); } else { _self.downHour = '00'; _self.downMinute = '00'; _self.downSecond = '00'; } }, freightText:function (type) {//处理邮费显示 var text =""; if(type > 0){ text = '¥'+type.toFixed(2); }else if(type === -1){ text = '到付'; }else{ text = '包邮'; } return text }, payTypeText(record) { //处理支付记录文字 const map = { 12: '企业网银', 13: '微信支付', 14: '支付宝', 15: '微信支付', 16: '余额抵扣', } if(record.payType === 28 || record.payType === 29 ){ return record.quickPayStr }else{ return map[record.payType] } }, toFixedFn:function(text){ return Number(text).toFixed(2); }, }, mounted: function () { var _self = this; _self.payInfo.payLinkLogo= CAIMEI.getUrlParam('linkLogo'); _self.LinkInfoOrderBank(_self.payInfo.payLinkLogo); } });