suke-mp/src/utils/order/index.ts
2024-06-15 19:08:56 +08:00

69 lines
1.7 KiB
TypeScript

import { OrderBean } from '@/api/order/types';
import dayjs from 'dayjs';
import { showToast } from '@/utils';
/**
* 获取订单支付过期时间
* @param order
*/
export function getOrderDeadline(order: OrderBean) {
// return dayjs(order?.createTime).add(30, 'minute').toDate().getTime();
return dayjs(order?.createTime).add(30, 'minute').toDate().getTime();
}
/**
* 订单已过期
* @param item
*/
export const isExpired = (item: OrderBean) => {
return item?.payStatus == 1 && getOrderDeadline(item) < Date.now();
};
/**
* 订单待支付
* @param item
*/
export const isPending = (item: OrderBean | undefined) => {
return item?.payStatus == 1 && getOrderDeadline(item) > Date.now();
};
export const handlePayResult = (orderId: string | undefined, e: any, { onSuccess, onFailure }: any) => {
const payDetail = e.detail;
let url = payDetail.url;
const str = url.split('?')[1];
const resultObj = JSON.parse(str.replaceAll('result=', ''));
if(resultObj?.is_success === true) {
getApp().globalData?.logger?.info('pay success : ', orderId, resultObj);
if(onSuccess) {
onSuccess(resultObj);
} else {
showToast('支付成功', {
icon: 'success',
complete: () => {
uni.navigateBack();
}
});
}
} else {
getApp().globalData?.logger?.error('pay failure :', orderId, str, resultObj);
let msg = '支付失败';
if(resultObj) {
msg = resultObj?.error_message || '支付失败';
} else {
msg = JSON.parse(str)?.error_message || '支付失败';
}
if(onFailure) {
onFailure(msg);
} else {
showToast(msg, {
complete: () => {
setTimeout(() => {
uni.navigateBack();
}, 1500);
}
});
}
}
};