69 lines
1.7 KiB
TypeScript
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);
|
|
}
|
|
});
|
|
}
|
|
}
|
|
};
|