Files

321 lines
6.9 KiB
Vue

<template>
<layout class="play">
<uv-navbar
:fixed="false"
title="提交订单"
left-arrow
@leftClick="goBack"
/>
<view class="play-info">
<view class="play-money">
<view class="unit">¥</view>
<view
class="value"
v-if="orderInfoData"
>{{ orderInfoData?.payPrice }}
</view>
</view>
<view class="play-date">支付剩余时间
<uv-count-down
:time="payRemainTime"
format="HH:mm:ss"
@finish="payRemainTimeFinish"
></uv-count-down>
</view>
<!-- <view class="store-name">王忠圈胡辣汤(五一路店) -1200675841253947588</view> -->
</view>
<blank size="15"></blank>
<container>
<view class="play-select">
<uv-radio-group
v-model="payType"
iconPlacement="right"
placement="column"
shape="circle"
activeColor="#ec6e47"
>
<view
class="play-type"
v-for="(item, index) in playTypes"
>
<uv-radio
:key="index"
:name="item.value"
:disabled="item.disabled"
>
<view class="play-type-icon"></view>
<view class="play-type-name">{{ item.label }}</view>
</uv-radio>
</view>
</uv-radio-group>
</view>
<uv-button
type="primary"
text="确认支付"
@click="handleOrderPay"
></uv-button>
</container>
<!-- <a :href="playUrl">去支付</a> -->
<blank size="15"></blank>
<uv-modal
ref="payConfirmRef"
title="支付确认"
confirmText="已完成支付"
:showCancelButton="true"
@confirm="payConfirm"
></uv-modal>
</layout>
</template>
<script setup>
import { ref } from 'vue'
import { orderInfo, orderPay } from '@/api/order'
import { onLoad } from '@dcloudio/uni-app'
import { useGlobalProperties } from '@/hooks'
import { useRouter } from "@/hooks/useRouter";
import { PayType } from "@/utils/paymentUtils";
const {goBack} = useRouter()
const {$platform} = useGlobalProperties()
const playTypes = ref([
{
label: '微信支付',
value: PayType[0],
disabled: false
},
{
label: '余额支付',
value: PayType[1],
disabled: true
},
{
label: '支付宝支付',
value: PayType[2],
disabled: true
}
])
const {push} = useRouter()
// alipay-支付宝 weixin-微信支付 yue余额支付。 from. 传 routine-小程序 h5是H%
const payType = ref(PayType[0])
const orderKey = ref(null)
const orderId = ref(null)
const orderInfoData = ref(null)
const playUrl = ref('')
const payConfirmRef = ref(null)
const payRemainTime = ref(1800000)
const handleOrderPay = async () => {
if (!payType.value) {
uni.showToast({
icon: "none",
title: '请选择支付方式',
duration: 2000
});
return
}
const {data: payInfo} = await orderPay({
from: $platform,
paytype: payType.value,
uni: orderId.value
})
push({
url: '/pages/orderInfo/orderInfo'
}, {
data: {
key: orderKey.value,
orderId: orderId.value,
// id: data.value.id,
}
})
// console.log("gxs --> % handleOrderPay % data:\n", payInfo)
//
//
// // #ifdef H5
// // h5端
//
// // playUrl.value = payInfo.mweb_url
// window.open(payInfo)
// payConfirmRef.value.open()
//
// // #endif
//
// // #ifndef H5
//
// let orderInfo = {
// appId: payInfo.appId,
// nonceStr: payInfo.nonceStr,
// package: payInfo.package,
// // partnerid: payInfo.partnerid,
// // prepayid: payInfo.prepayid,
// paySign: payInfo.paySign,
// signType: payInfo.signType,
// timeStamp: payInfo.timeStamp + '',
// }
//
//
// console.log("gxs --> % handleOrderPay % orderInfo:\n", {
// provider: 'weixin',
// ...orderInfo,
// orderInfo
// })
//
// uni.requestPayment({
// provider: 'weixin',
// ...orderInfo,
// orderInfo,
// success: (success) => {
// console.log("gxs --> % handleOrderPay % success:\n", success)
// navigateTo({
// url: '/pages/orderInfo/orderInfo',
// query: {
// key: orderKey.value,
// orderId: orderId.value,
// // id: data.value.id,
// }
// })
// },
// fail: (error) => {
// console.log("gxs --> % handleOrderPay % error:\n", error)
//
// },
// })
// // #endif
}
// 支付确认
const payConfirm = () => {
push({
url: '/pages/orderInfo/orderInfo'
}, {
data: {
key: orderKey.value,
orderId: orderId.value
}
})
}
const handleOrderInfo = (option) => {
orderInfo(option).then(res => {
orderInfoData.value = res
payRemainTime.value = parseInt(res._status._payRemainTime)
})
}
// 倒计时结束
const payRemainTimeFinish = (e) => {
uni.showToast({
title: '已超时支付',
duration: 2000
});
push({
url: '/pages/orderInfo/orderInfo'
}, {
data: {
key: orderKey.value,
orderId: orderId.value
}
})
}
const {getParams} = useRouter()
onLoad(options => {
const params = getParams(options)
orderKey.value = params.key
orderId.value = params.orderId
handleOrderInfo({key: orderKey.value})
})
</script>
<style lang="scss">
.bargaining {
background-color: #333333;
}
.play {
&-info {
padding: 30rpx;
display: flex;
flex-direction: column;
justify-content: center;
}
&-date {
line-height: 32rpx;
font-size: 20rpx;
color: #333333;
text-align: center;
}
&-money {
display: flex;
align-items: flex-end;
justify-content: center;
margin: 10rpx 0;
height: 70rpx;
.unit {
line-height: 50rpx;
font-size: 30rpx;
color: #000;
}
.value {
line-height: 70rpx;
font-size: 60rpx;
color: #000;
}
}
.store-name {
line-height: 32rpx;
font-size: 20rpx;
text-align: center;
color: #333333;
}
&-select {
padding: 30rpx 0;
.play-type {
background: #fff;
display: flex;
align-items: center;
padding: 10rpx 10rpx 10rpx 20rpx;
box-sizing: border-box;
:deep(.uv-radio) {
width: 100%;
@include usePadding(10, 20)
}
&-name {
flex: 1;
font-size: 28rpx;
color: #333333;
}
}
}
}
// gxs --> % handleOrderPay % orderInfo:
// {provider: "weixin", appId: "wx604d2ea4702620d2", nonceStr: "I62uU0Ts5trnE4qH", package: "prepay_id=wx192311123448065c6b0f91dff2c3120000", paySign: "7A7D782BEB5F69E2745F463301E245C5", …}
// WAServiceMainContext.js?t=wechat&s=1695131989147&v=3.0.2:1 支付回调页 mainControl= false
// WAServiceMainContext.js?t=wechat&s=1695131989147&v=3.0.2:1 支付回调页 hasFull= false
// selectPlay.js:83 gxs --> % handleOrderPay % success:
// {errMsg: "requestPayment:ok"}
</style>