fix:微信支付
All checks were successful
构建并部署前端到生产环境 / build-and-deploy (push) Successful in 4m41s

This commit is contained in:
luo
2026-09-23 09:32:48 +08:00
parent a81b403cce
commit e82b0ab5da
12 changed files with 254 additions and 13 deletions

View File

@@ -47,12 +47,14 @@
handlePaymentError,
isValidAlipayPaymentLink,
isValidWechatPayConfig,
markPendingPaymentRefresh,
openAlipayPayment,
PAYMENT_REFRESH_TARGETS,
showPaymentToast,
wechatH5Pay
} from '@/utils/payment.js';
import { formatMoney } from '@/utils/display.js';
import { getPaymentErrorMessage, isUnknownPaymentResult } from '@/utils/payment-attempt.js';
import { getDefaultPaymentMethod, getPaymentMethodOptions, normalizePaymentMethods } from '@/utils/payment-methods.js';
const props = defineProps({
@@ -277,7 +279,13 @@
}
uni.showLoading({ title: '准备支付...', mask: true });
const payResult = await orderApi.pay(orderId, paymentMethod.value);
// Prefer payment data returned by order creation. The fallback keeps
// compatibility with older backends without a duplicate preparation
// request when the new contract is available.
const payResult = hasPreparedPaymentData(orderResult) ||
(paymentMethod.value === 'wallet' && orderResult.order.payment_status === 2)
? orderResult
: await orderApi.pay(orderId, paymentMethod.value);
uni.hideLoading();
show.value = false;
@@ -290,7 +298,10 @@
uni.hideLoading();
show.value = false;
console.error('创建续费订单或支付失败', error);
uni.showToast({ title: error.msg || error.message || '操作失败,请稍后重试', icon: 'none' });
if (isUnknownPaymentResult(error)) {
markPendingPaymentRefresh(props.paymentRefreshTarget);
}
uni.showToast({ title: getPaymentErrorMessage(error, '操作失败,请稍后重试'), icon: 'none' });
} finally {
submitting.value = false;
}
@@ -333,7 +344,10 @@
} catch (error) {
uni.hideLoading();
console.error('订单支付失败', error);
uni.showToast({ title: error.msg || error.message || '支付失败,请稍后重试', icon: 'none' });
if (isUnknownPaymentResult(error)) {
markPendingPaymentRefresh(props.paymentRefreshTarget);
}
uni.showToast({ title: getPaymentErrorMessage(error), icon: 'none' });
} finally {
submitting.value = false;
}
@@ -353,7 +367,10 @@
} catch (error) {
uni.hideLoading();
console.error('直接支付订单失败', error);
uni.showToast({ title: error.msg || error.message || '支付失败,请稍后重试', icon: 'none' });
if (isUnknownPaymentResult(error)) {
markPendingPaymentRefresh(props.paymentRefreshTarget);
}
uni.showToast({ title: getPaymentErrorMessage(error), icon: 'none' });
} finally {
submitting.value = false;
}