<template> <div class="domain">{{ message }}</div> </template> <script> import { formatTime, serialize } from "@/utils/index"; import wxPay from "@/api/wxPay"; const app = getApp(); const { log } = app; function fn(_this) { // _this.message = "支付成功"; if (!_this.options_isCard) { let query; if (_this.batchNumber) { query = { orderSn: _this.options.orderSn, batchNumber: _this.batchNumber, multiMerchantsFlag: 1, totalMoney: _this.totalMoney, }; } else { query = { orderSn: _this.options.orderSn, }; } // sso场景(跳转第三方url) if (_this.scene == "sso") { console.log(_this.backUrl,'----------pay--_this.backUrl') setTimeout(() => { wx.redirectTo({ url: `../wxArticle/main?from=sso&link=${_this.backUrl}`, }); }, 500); return; } let params = `?${serialize(query)}`; if (_this.options.accountBalanceFlag == 1) { // 余额充值 params+= `&accountBalanceFlag=1&totalMoney=${_this.totalMoney}` } if (_this.options.isPayReplace == 1) { // 好友代付 wx.redirectTo({ url: `../index/main?from=wxPay&backpath=/order/payForOrderDetail¶ms=${JSON.stringify( query )}`, }); return; } wx.redirectTo({ url: `/pages/pages_subpack/paySuccess/main${params}`, }); } else { let query = { cardTitle: _this.options_isCardTitle, }; wx.redirectTo({ url: `../index/main?from=wxPay&backpath=/pay/payCardSuccess¶ms=${JSON.stringify( query )}`, }); } } export default { components: { // card }, data() { return { message: "正在支付中", shopmixid: "", openId: "", options: {}, options_orderType: "", // 购买会员卡新页面 options_isCard: "", options_isCardTitle: "", batchNumber: "", totalMoney: "", scene: "", //sso backUrl: "", }; }, onLoad(options) { wx.showLoading({ title: "加载中", }); Object.assign(this.$data, this.$options.data()); //mpvue 的混合周期 使用小程序生命周期数据未初始化 log.info("onload//", options); console.log(options,'--onLoad-options') if (options.batchNumber) { let ordercode = JSON.parse(options.ordercode); // 我要送礼 if (ordercode.giveGiftsOrderSn) { ordercode.orderSn = ordercode.giveGiftsOrderSn; } else { ordercode.orderSn = ""; } ordercode.batchNumber = options.batchNumber; this.options = ordercode; this.batchNumber = ordercode.batchNumber; log.info(JSON.parse(options.ordercode).orderSn); if (JSON.parse(options.ordercode).orderSn) { this.totalMoney = Number( JSON.parse(options.ordercode).totalAmount ).toFixed(2); } else { this.totalMoney = Number( JSON.parse(options.ordercode).totalAmount ).toFixed(2); } // } log.info(this.totalMoney, "totalMoney"); } else { this.options = JSON.parse(options.ordercode); options.scene && (this.scene = options.scene); options.backUrl && (this.backUrl = options.backUrl); this.totalMoney = Number( JSON.parse(options.ordercode).totalAmount).toFixed(2); } this.options_orderType = options.orderType; this.options_isCard = options.isCard; this.options_isCardTitle = options.isCardTit; if (options.sessionid) { try { wx.setStorageSync("sessionid", options.sessionid); } catch (e) {} } let that = this; wx.getStorage({ key: "openid", success(res) { log.info(that.options, "++++"); log.info(res, "openid"); that.options.openId = res.data; that.options.tradeType = "Mini"; log.info("支付开始", that.options); that.toPay(); }, fail(err) { log.info("获取err", err); }, }); }, methods: { testToPaySuccess() { let _this = this; let params = `?orderSn=${_this.options.orderSn}`; if (_this.options.accountBalanceFlag == 1) { // 余额充值 params+= `&accountBalanceFlag=1&totalMoney=${_this.totalMoney}` } wx.redirectTo({ url: `/pages/pages_subpack/paySuccess/main${params}`, }); }, toPay() { // this.testToPaySuccess(); // return; wxPay .to_wx_pay(this.options) .then((res) => { wx.hideLoading(); if (res.data.code == 200) { let payData = JSON.parse(res.data.data); log.info("wxPay", res.data); payData.success = (res) => { log.info("支付成功", res, this.options); this.message = "支付成功"; const orderSn = this.options.orderSn; let vm = this; console.log(res,'---------------支付成功') try { const subscribeMessageObj = this.$store.state .subscribeMessageObj; if ( subscribeMessageObj && Object.keys(subscribeMessageObj).length > 0 ) { // TODO 小程序订阅消息埋点 const tmplIds = []; for (var key in subscribeMessageObj) { // 送礼订单 if ( this.options_orderType == 5 && (key == "gift_be_expire" || key == "gift_draw") ) { tmplIds.push(subscribeMessageObj[key]); } // 订单发货 if (key == "order_shipment") { tmplIds.push(subscribeMessageObj[key]); } } if (tmplIds.length > 0) { wx.requestSubscribeMessage({ tmplIds: tmplIds, success(res) { fn(vm); log.info("message success response: ", res); }, fail(res) { fn(vm); log.info("message fail response: ", res); }, }); } else { fn(vm); } } else { log.info("来这里了"); fn(this); } } catch (err) { console.error("subscribeMessage-err", err); } }; payData.fail = (res) => { log.info("支付失败", res, this.options.orderSn); this.message = "支付失败"; if ((res.errMsg = "requestPayment:fail cancel")) { wxPay.cancelPayment(this.options.orderSn).then(() => { log.info("取消成功"); }); } // fn(this); this.toPage(); }; payData.complete = (res) => { log.info("支付completa", res, this.options.orderSn); // if (res.errMsg == "requestPayment:fail cancel") { // log.info("支付取消", this.options); // this.message = "支付取消"; // this.toPage(); // } }; wx.requestPayment(payData); } else { wx.showToast({ title: res.data.msg, icon: "none" }); } }) .catch((err) => { wx.showToast({ title: res.data.msg, icon: "none" }); }); }, toPage() { log.info( "支付失败来这里了", this.backUrl, this.batchNumber, this.scene == "sso", this.scene ); if (this.scene == "sso") { //sso模式(嵌入第三方) wx.navigateBack() return } if (this.batchNumber) { let query = { multiMerchantsFlag: 1, }; wx.redirectTo({ url: `../index/main?from=wxPay&backpath=/order/orderList¶ms=${JSON.stringify( query )}`, }); return; } let query = { orderSn: this.options.orderSn, payList: true, orderListToorderDetail: true, }; wx.redirectTo({ url: `../index/main?from=wxPay&backpath=/order/orderDetail¶ms=${JSON.stringify( query )}`, }); }, }, }; </script> <style> .domain { text-align: center; padding-top: 50%; } </style>