hookehuyr

支付相关逻辑调整

<!--
* @Date: 2024-01-15 16:25:51
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2024-01-22 18:21:18
* @LastEditTime: 2024-01-24 11:32:08
* @FilePath: /xysBooking/src/views/submit.vue
* @Description: 预约人员信息
-->
......@@ -117,18 +117,20 @@ const submitBtn = async () => {
if (!checked_visitors.value.length) {
showToast('请先添加参观者')
} else {
// TODO: 提交订单跳转到支付页面
// TAG: 提交订单跳转到支付页面
const { code, data } = await addReserveAPI({ reserve_date: date, begin_time: time.split('-')[0], end_time: time.split('-')[1], person_id_list: JSON.stringify(checked_visitors.value) });
if (code) {
const { code: prepare_code, data: prepare_data } = await payPrepareAPI({ pay_id: data.pay_id });
if (prepare_code) {
const { code: callback_code, data: callback_data } = await payCallbackAPI({ pay_id: prepare_data.pay_id, pay_status: 1 });
if (callback_code) {
// TODO:看需求,把跳转页换成等待页面
go('/success', { pay_id: prepare_data.pay_id });
// go('/waiting', { pay_id: prepare_data.pay_id });
}
}
const pay_url = `/srv/?f=reserve&a=icbc_pay&pay_id=${data.pay_id}`;
location.href = pay_url; // 跳转支付页面
// const { code: prepare_code, data: prepare_data } = await payPrepareAPI({ pay_id: data.pay_id });
// if (prepare_code) {
// const { code: callback_code, data: callback_data } = await payCallbackAPI({ pay_id: prepare_data.pay_id, pay_status: 1 });
// if (callback_code) {
// // TODO:看需求,把跳转页换成等待页面
// go('/success', { pay_id: prepare_data.pay_id });
// // go('/waiting', { pay_id: prepare_data.pay_id });
// }
// }
}
}
}
......
<!--
* @Date: 2024-01-19 21:57:50
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2024-01-20 07:01:38
* @LastEditTime: 2024-01-24 14:26:31
* @FilePath: /xysBooking/src/views/waiting.vue
* @Description: 文件描述
-->
......@@ -14,7 +14,7 @@
<div style="margin: 1rem 0;">支付中...</div>
<div>{{ current.seconds }} s</div>
<div style="margin: 1.5rem 0; font-size: 0.85rem; color: #A67939; text-align: center; line-height: 2;">
温馨提示:支付可能需要10s左右,请耐心等待<br />
温馨提示:{{ pay_msg }}<br />
</div>
</div>
<div class="go-back-wrapper">
......@@ -33,6 +33,7 @@ import { Cookies, $, _, axios, storeToRefs, mainStore, Toast, useTitle } from '@
//import { } from '@/composables'
import { showSuccessToast, showFailToast, showToast } from 'vant';
import { useGo } from '@/hooks/useGo'
import { billPayStatusAPI } from '@/api/index'
const $route = useRoute();
const $router = useRouter();
useTitle($route.meta.title);
......@@ -47,17 +48,44 @@ const countDown = useCountDown({
countDown.start();
const current = countDown.current;
const pay_id = $route.query.pay_id;
const pay_msg = ref('支付可能需要10s左右,请耐心等待');
/**
* 3=支付成功,1=待支付,2=支付中,7=支付失败
*/
const PAY_STATUS = {
PAY: '1',
PAYING: '2',
FAIL: '7',
SUCCESS: '3'
}
onMounted(() => {
const timer = setInterval(() => {
// 重置历史记录
window.history.pushState(null, '', location.origin + location.pathname); // 将授权页面替换为根路径或其他合适的路径
//
const timer = setInterval(async () => {
if (!current.value.seconds) {
clearInterval(timer);
}
// TODO:轮询支付回调
if (current.value.seconds === 3) {
console.warn('支付成功');
// 预约成功页面
// go('/success', { pay_id: 'test' });
const { code, data } = await billPayStatusAPI({ pay_id });
// TAG:轮询支付回调
switch (data.status) {
case PAY_STATUS.PAY:
pay_msg.value = '订单待支付';
break;
case PAY_STATUS.PAYING:
pay_msg.value = '订单支付中';
break;
case PAY_STATUS.SUCCESS:
// 预约成功页面
go('/success', { pay_id });
break;
case PAY_STATUS.FAIL:
pay_msg.value = '订单支付失败';
break;
}
}, 1000);
onUnmounted(() => {
......