diff --git a/components/payment/payment.vue b/components/payment/payment.vue index 0ce7480f..c6d50cb1 100644 --- a/components/payment/payment.vue +++ b/components/payment/payment.vue @@ -28,10 +28,10 @@ {{ propCurrencySymbol }} {{ propPayPrice }} - + - + {{ item.name }} @@ -161,18 +161,19 @@ components: { componentPopup, }, - watch: { + watch: { + // 是否显示支付方式 propIsShowPayment(newVal, oldVal) { if (newVal !== oldVal) { let bool = true; - if (this.propPaymentList.length === 1) { + if (this.payment_list.length === 1) { bool = false; this.setData({ - payment_id: this.propPaymentList[0].id, + payment_id: this.payment_list[0].id, }); } else { let self = this; - self.propPaymentList.forEach((item) => { + self.payment_list.forEach((item) => { let new_payment_id = Number(self.propPaymentId) === 0 ? self.propDefaultPaymentId : Number(self.propPaymentId); if (item.id == new_payment_id) { bool = false; @@ -187,11 +188,25 @@ submit_disabled_status: bool, }); } + }, + // 支付方式是否改变 + propPaymentList(value, old_value) { + this.setData({ + payment_list: value, + }); }, + }, + // 页面被展示 + created: function () { + this.setData({ + payment_list: this.payment_list + }); }, data() { return { - theme_view: app.globalData.get_theme_value_view(), + theme_view: app.globalData.get_theme_value_view(), + // 支付方式列表 + payment_list: [], // 弹窗开关 is_show_payment_popup: false, popup_view_pay_qrcode_is_show: false, @@ -240,11 +255,17 @@ }, // 支付方法 - pay_handle(order_id, payment_id) { - var self = this; - this.propPaymentList.forEach((item) => { + pay_handle(order_id, payment_id, payment_list = []) { + // 没有指定支付方式则使用属性传过来的值 + if((payment_list || null) != null && payment_list.length > 0) { + this.setData({ + payment_list: payment_list + }); + } + this.payment_list.forEach((item) => { if (item.id == payment_id) { - if (item.payment === 'WalletPay') { + if (item.payment === 'WalletPay') { + var self = this; uni.showModal({ title: '温馨提示', content: '操作后将立即扣除支付费用、确认继续吗?', @@ -263,7 +284,8 @@ } } }); - }, + }, + // 支付处理 pay_handle_event(order_id, payment_id) { // #ifdef H5 // 微信环境判断是否已有web_openid、不存在则不继续执行跳转到插件进行授权 @@ -273,9 +295,9 @@ // #endif // 支付方式 var payment = null; - for (var i in this.propPaymentList) { - if (this.propPaymentList[i]['id'] == (payment_id || this.payment_id)) { - payment = this.propPaymentList[i]; + for (var i in this.payment_list) { + if (this.payment_list[i]['id'] == (payment_id || this.payment_id)) { + payment = this.payment_list[i]; } } if (payment == null) { @@ -328,7 +350,7 @@ this.app_pay_handle(this, data, order_id); // #endif // #ifdef MP-WEIXIN || MP-ALIPAY || MP-BAIDU || MP-TOUTIAO - this.common_pay_handle(this, data, order_id); + this.mp_pay_handle(this, data, order_id); // #endif // #ifdef MP-KUAISHOU this.kuaishou_pay_handle(this, data, order_id); @@ -444,8 +466,8 @@ }, }); }, - // 微信、支付宝、百度、头条、QQ - common_pay_handle(self, data, order_id) { + // 小程序: 微信、支付宝、百度、头条、QQ + mp_pay_handle(self, data, order_id) { uni.requestPayment({ // #ifdef MP-ALIPAY || MP-BAIDU || MP-TOUTIAO orderInfo: data.data, @@ -504,7 +526,7 @@ }, }); } else { - self.common_pay_handle(self, data, order_id); + self.mp_pay_handle(self, data, order_id); } }, // h5支付处理 diff --git a/pages/buy/buy.vue b/pages/buy/buy.vue index 6f84f4d0..53558b15 100644 --- a/pages/buy/buy.vue +++ b/pages/buy/buy.vue @@ -477,7 +477,14 @@ uni.stopPullDownRefresh(); uni.hideLoading(); if (res.data.code == 0) { - var data = res.data.data; + var data = res.data.data; + + // 基础数据 + this.setData({ + currency_symbol: data.currency_symbol || app.globalData.currency_symbol(), + payment_list: data.payment_list || [], + payment_id: data.default_payment_id || '', + }); // 订单是否已提交、直接进入支付页面 if ((data.is_order_submit || 0) == 1) { @@ -520,16 +527,13 @@ }; // 设置数据 - this.setData({ - currency_symbol: data.currency_symbol || app.globalData.currency_symbol(), + this.setData({ goods_list: data.goods_list, total_price: data.base.actual_price, extension_data: data.extension_data || [], data_list_loding_status: 3, common_site_type: data.common_site_type || 0, extraction_address: data.base.extraction_address || [], - payment_list: data.payment_list || [], - payment_id: data.default_payment_id || '', buy_datetime_info: datetime, plugins_coupon_data: data.plugins_coupon_data || null, plugins_points_data: data.plugins_points_data || null, @@ -538,7 +542,7 @@ }); // 可使用积分数量 - if(this.plugins_coupon_data != null && this.is_first == 1) { + if(this.plugins_points_data != null && this.is_first == 1) { this.setData({ actual_use_integral: this.plugins_points_data.use_integral || '' }); @@ -752,8 +756,8 @@ buy_submit_response_handle(data) { this.setData({ to_appoint_page: this.to_appoint_page+'?order_ids=' + data.order_ids.join(','), - }); - this.$refs.payment.pay_handle(data.order_ids.join(','), data.payment_id); + }); + this.$refs.payment.pay_handle(data.order_ids.join(','), data.payment_id, this.payment_list); }, // 支付方式选择