<template>
|
<view :data-theme='theme()' :class="theme() || ''">
|
<view class="tc buy-checkout-top">
|
<view class="f32 mb20">待支付</view>
|
<view class="redA8 f60 fb">¥{{payPrice || '0.00'}}</view>
|
</view>
|
<view class="buy-checkout p-0-30">
|
<view v-for="(item,index) in checkedPay" :key='index'>
|
<view v-if="item==20" :class="pay_type == 20 ? 'item active' : 'item'" @tap="payTypeFunc(20)">
|
<view class="d-s-c">
|
<view class="icon-box d-c-c mr10"><span class="icon iconfont icon-weixin"></span></view>
|
<text class="key">微信支付:</text>
|
</view>
|
<view class="icon-box d-c-c"><span class="icon iconfont icon-xuanze"></span></view>
|
</view>
|
<view v-if="item==30" :class="pay_type == 30 ? 'item active' : 'item'" @tap="payTypeFunc(30)">
|
<view class="d-s-c">
|
<view class="icon-box d-c-c mr10"><span class="icon iconfont icon-zhifubao"></span></view>
|
<text class="key">支付宝支付:</text>
|
</view>
|
<view class="icon-box d-c-c"><span class="icon iconfont icon-xuanze"></span></view>
|
</view>
|
<view v-if="item==60" :class="pay_type == 60 ? 'item active' : 'item'" @tap="payTypeFunc(60)">
|
<view class="d-s-c">
|
<view class="icon-box d-c-c mr10"><span class="icon iconfont icon-yue"></span></view>
|
<text class="key">联盟币支付:</text>
|
</view>
|
<view class="icon-box d-c-c"><span class="icon iconfont icon-xuanze"></span></view>
|
</view>
|
</view>
|
<view v-if="hasBanlance" class="item">
|
<view class="d-s-c">
|
<view class="icon-box d-c-c mr10"><span class="icon iconfont icon-yue"></span></view>
|
<text class="key">余额抵扣:(剩余:{{balance}})</text>
|
</view>
|
<switch :color="getTheme()" style="transform:scale(0.7);margin-right: -20rpx;" :checked="balanceType"
|
@change="switch2Change" />
|
</view>
|
</view>
|
<view class="bottom-btn" @click="submit">
|
<button type="default">立即支付</button>
|
</view>
|
|
<!-- 付呗收银台插件 by yj 2023.12.16-->
|
<!-- <fs-cash-item :orderSn="orderSn" @paySucceed="paySuccess" @payFail="payError" v-if="orderSn" /> -->
|
|
</view>
|
</template>
|
|
<script>
|
import {
|
pay
|
} from '@/common/pay.js';
|
export default {
|
data() {
|
return {
|
balance: '',
|
balanceType: false,
|
type: 0,
|
loading: true,
|
order_id: 0,
|
/* 0创建订单;30充值 */
|
order_type: 0,
|
pay_type: 20,
|
checkedPay: [],
|
payPrice: '',
|
orderSn:'',
|
payData: [], // 半屏小程序相关
|
isFirst: false,
|
}
|
|
},
|
computed: {
|
hasBanlance() {
|
if (this.order_type == 40 || this.balance <= 0) {
|
return false
|
}
|
let n = this.checkedPay.indexOf(10);
|
if (n == -1) {
|
return false
|
} else {
|
return true
|
}
|
|
|
},
|
},
|
onLoad(e) {
|
let self = this;
|
// #ifdef MP
|
wx.enableAlertBeforeUnload({
|
message: "您的订单如在规定时间内未支付将被取消,请尽快完成支付",
|
success: function(res) {
|
// uni.reLaunch({
|
// ulr: '/pages/order/order-detail?order_id=' + self.order_id
|
// })
|
console.log("方法注册成功:", res);
|
},
|
fail: function(errMsg) {
|
console.log("方法注册失败:", errMsg);
|
},
|
});
|
// #endif
|
this.order_id = decodeURIComponent(e.order_id);
|
if (e.order_type) {
|
this.order_type = e.order_type;
|
}
|
this.getData()
|
},
|
onShow() {
|
let self = this;
|
let options = wx.getEnterOptionsSync();
|
// 从半屏小程序返回时执行
|
if (options.scene == '1038' && self.isFirst == true) {
|
self.isFirst = false;
|
self.onPayResult(options.referrerInfo.extraData);
|
}
|
},
|
onBackPress(options) {
|
if (options.from === 'navigateBack') {
|
return true;
|
}
|
this.back();
|
return true;
|
},
|
|
methods: {
|
// 半屏小程序返回
|
onPayResult(e) {
|
let self = this;
|
self.loading = false;
|
uni.hideLoading();
|
self.isFirst = false;
|
if (e.pay_result == 'success') {
|
self.paySuccess(self.payData);
|
} else {
|
if(self.order_id > 0){
|
//兼容重新付款
|
}else{
|
self.payError(self.payData);
|
}
|
}
|
},
|
getTheme() {
|
let name = this.theme();
|
let color = '#ff5704'
|
switch (name) {
|
case 'theme0':
|
color = '#ff5704'
|
break;
|
case 'theme1':
|
color = '#19ad57'
|
break;
|
case 'theme2':
|
color = '#ffcc00'
|
break;
|
case 'theme3':
|
color = '#33a7ff'
|
break;
|
case 'theme4':
|
color = '#e4e4e4'
|
break;
|
case 'theme5':
|
color = '#c8ba97'
|
break;
|
case 'theme6':
|
color = '#623ceb'
|
break;
|
|
}
|
return color
|
},
|
getData() {
|
let self = this;
|
self.loading = true;
|
uni.showLoading({
|
title: '加载中'
|
});
|
let url = 'user.order/pay';
|
if (self.order_type == 20) {
|
url = 'supplier.index/pay';
|
}
|
if (self.order_type == 30) {
|
url = 'plus.live.plan/pay';
|
}
|
if (self.order_type == 40) {
|
url = 'balance.plan/pay';
|
}
|
if (self.order_type == 50) {
|
url = 'plus.advance.Order/pay';
|
}
|
if(self.order_type == 100){
|
url = 'plus.business.Order/pay';
|
}
|
let params = {
|
order_id: self.order_id,
|
pay_source: self.getPlatform()
|
}
|
self._get(
|
url, params,
|
function(res) {
|
self.loading = false;
|
let list = [];
|
res.data.payTypes.forEach(item => {
|
list.push(item * 1);
|
})
|
self.checkedPay = list;
|
self.payPrice = res.data.payPrice;
|
self.balance = res.data.balance || '';
|
if (self.checkedPay[0] != 10) {
|
self.pay_type = self.checkedPay[0] || self.checkedPay[1] || 20;
|
} else {
|
self.pay_type = self.checkedPay[1] || self.checkedPay[0];
|
}
|
uni.hideLoading();
|
})
|
},
|
switch2Change(e) {
|
this.balanceType = e.detail.value;
|
},
|
submit() {
|
let self = this;
|
// 防止重复提交 by yj
|
if (self.loading) return;
|
self.loading = true;
|
uni.showLoading({
|
title: '加载中'
|
});
|
let url = 'user.order/pay';
|
if (self.order_type == 20) {
|
url = 'supplier.index/pay';
|
}
|
if (self.order_type == 40) {
|
url = 'balance.plan/pay';
|
}
|
if (self.order_type == 30) {
|
url = 'plus.live.plan/pay';
|
}
|
if (self.order_type == 50) {
|
url = 'plus.advance.Order/pay';
|
}
|
if(self.order_type == 100){
|
url = 'plus.business.Order/pay';
|
}
|
let use_balance = self.balanceType == true ? 1 : 0;
|
if (self.payPrice == 0) {
|
use_balance = 1;
|
}
|
let params = {
|
order_id: self.order_id,
|
pay_source: self.getPlatform(),
|
payType: self.pay_type,
|
use_balance: use_balance,
|
}
|
|
self._post(url, params,
|
function(res) {
|
// 半屏小程序支付 by lyzflash
|
if (res.data.payment.is_embed) {
|
// console.log(res.data.payment);
|
self.isFirst = true;
|
uni.openEmbeddedMiniProgram({
|
appId: res.data.payment.embed_app_id,
|
path: res.data.payment.embed_path,
|
extraData: res.data.payment.extraData,
|
envVersion: 'release', // develop开发版 trial体验版 release正式版
|
success:function() {
|
console.log('打开半屏小程序成功');
|
},
|
fail:function() {
|
console.log('打开半屏小程序失败');
|
}
|
});
|
return;
|
}
|
self.loading = false;
|
uni.hideLoading();
|
pay(res, self, self.paySuccess, self.payError);
|
})
|
},
|
paySuccess(result) {
|
let self = this;
|
if (self.order_type == 30 || self.order_type == 40) {
|
self.showSuccess("支付成功", function() {
|
// #ifndef H5
|
uni.navigateBack({
|
delta: parseInt(1)
|
});
|
// #endif
|
// #ifdef H5
|
history.go(-1);
|
// #endif
|
})
|
} else if (self.order_type == 20) {
|
self.showSuccess("支付成功", function() {
|
self.gotoPage('/pages/user/my_shop/my_shop', 'reLaunch');
|
})
|
} else if (self.order_type == 50) {
|
self.showSuccess("支付成功", function() {
|
self.gotoPage('/pages/order/myorder', 'reLaunch');
|
})
|
} else
|
if(self.order_type == 100){
|
self.showSuccess("支付成功", function() {
|
self.gotoPage('/pages/plus/business/detail?business_card_id=' + result.data.business_card_id, 'reLaunch');
|
})
|
} else {
|
self.gotoPage('/pages/order/pay-success/pay-success?order_id=' + self.order_id,
|
'reLaunch');
|
}
|
|
},
|
payError(result) {
|
let self = this;
|
let url = '/pages/order/myorder';
|
if (self.order_type == 30 || self.order_type == 40) {
|
// #ifndef H5
|
uni.navigateBack({
|
delta: parseInt(1)
|
});
|
// #endif
|
// #ifdef H5
|
history.go(-1);
|
// #endif
|
} else if (self.order_type == 20) {
|
self.gotoPage('/pages/user/my_shop/my_shop', 'redirect');
|
} else if (self.order_type == 50) {
|
self.gotoPage('/pages/order/myorder', 'redirect');
|
}else if (self.order_type == 100) {
|
self.gotoPage('/pages/plus/business/detail?business_card_id=' + result.data.business_card_id, 'redirect');
|
} else {
|
self.gotoPage('/pages/order/myorder', 'redirect');
|
}
|
},
|
payTypeFunc(n) {
|
this.pay_type = n;
|
}
|
}
|
}
|
</script>
|
|
<style lang="scss">
|
.buy-checkout-top {
|
padding: 100rpx 0;
|
}
|
|
.buy-checkout {
|
.item {
|
background-color: #FFFFFF;
|
margin-bottom: 28rpx;
|
box-shadow: 0rpx 13rpx 27rpx 0rpx rgba(172, 172, 172, 0.09);
|
border-bottom: none;
|
border-radius: 2rpx;
|
}
|
}
|
|
.bottom-btn {
|
position: fixed;
|
bottom: 0;
|
@include background_color("background_color");
|
@include font_color('text_color2');
|
width: 100%;
|
padding-bottom: env(safe-area-inset-bottom);
|
}
|
|
.bottom-btn>button {
|
width: 100%;
|
height: 116rpx;
|
@include background_color("background_color");
|
@include font_color('text_color2');
|
border: none;
|
border-radius: 0;
|
font-size: 35rpx;
|
font-weight: bold;
|
display: flexd;
|
justify-content: center;
|
align-items: center;
|
line-height: 116rpx;
|
}
|
</style>
|