|
|
@@ -49,8 +49,8 @@ const PaymentPage = () => {
|
|
|
// 使用useRouter钩子获取路由参数
|
|
|
const router = useRouter()
|
|
|
const routerParams = router.params
|
|
|
- const orderId = routerParams?.orderId ? parseInt(routerParams.orderId) : 0
|
|
|
- const amount = routerParams?.amount ? parseFloat(routerParams.amount) : 0
|
|
|
+ const orderId = routerParams?.orderId && !isNaN(parseInt(routerParams.orderId)) ? parseInt(routerParams.orderId) : 0
|
|
|
+ const amount = routerParams?.amount && !isNaN(parseFloat(routerParams.amount)) ? parseFloat(routerParams.amount) : 0
|
|
|
const orderNo = routerParams?.orderNo
|
|
|
|
|
|
// 获取用户额度信息
|
|
|
@@ -118,7 +118,16 @@ const PaymentPage = () => {
|
|
|
})
|
|
|
|
|
|
if (response.status !== 200) {
|
|
|
- throw new Error(`获取支付参数失败: ${response.status}`)
|
|
|
+ let errorMessage = `获取支付参数失败: ${response.status}`
|
|
|
+ try {
|
|
|
+ const errorData = await response.json()
|
|
|
+ if (errorData.message) {
|
|
|
+ errorMessage = errorData.message
|
|
|
+ }
|
|
|
+ } catch {
|
|
|
+ // 忽略JSON解析错误,使用默认错误消息
|
|
|
+ }
|
|
|
+ throw new Error(errorMessage)
|
|
|
}
|
|
|
|
|
|
const responseData = await response.json()
|
|
|
@@ -282,7 +291,17 @@ const PaymentPage = () => {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
- if (!orderId) return
|
|
|
+ if (!orderId) {
|
|
|
+ setErrorMessage('订单ID无效')
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!amount || amount <= 0) {
|
|
|
+ setErrorMessage('支付金额无效')
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ console.debug('重试支付开始,orderId:', orderId, 'amount:', amount)
|
|
|
|
|
|
setIsProcessing(true)
|
|
|
setErrorMessage('')
|
|
|
@@ -320,7 +339,17 @@ const PaymentPage = () => {
|
|
|
} catch (error: any) {
|
|
|
console.error('支付重试异常:', error)
|
|
|
setPaymentStatus(PaymentStatus.FAILED)
|
|
|
- setErrorMessage(error.message || '支付重试异常')
|
|
|
+
|
|
|
+ let errorMsg = error.message || '支付重试异常'
|
|
|
+ // 特定错误处理
|
|
|
+ if (errorMsg.includes('该订单已存在支付记录且状态不正确') || errorMsg.includes('该订单已支付成功,请勿重复支付')) {
|
|
|
+ errorMsg = '订单支付状态异常,请联系客服或稍后重试'
|
|
|
+ } else if (errorMsg.includes('参数错误')) {
|
|
|
+ errorMsg = '支付参数错误,请检查订单信息'
|
|
|
+ } else if (errorMsg.includes('用户OpenID不能为空')) {
|
|
|
+ errorMsg = '用户信息不完整,请重新登录'
|
|
|
+ }
|
|
|
+ setErrorMessage(errorMsg)
|
|
|
} finally {
|
|
|
setIsProcessing(false)
|
|
|
}
|