From a5e07edda67497a2b750f83718ab80cee0f5e16a Mon Sep 17 00:00:00 2001 From: erio Date: Sat, 7 Mar 2026 01:59:43 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20PC=20=E7=AB=AF=E6=98=93=E6=94=AF?= =?UTF-8?q?=E4=BB=98=E4=BC=98=E5=85=88=E6=98=BE=E7=A4=BA=E4=BA=8C=E7=BB=B4?= =?UTF-8?q?=E7=A0=81=EF=BC=9B=E8=AE=A2=E5=8D=95=E9=A1=B5=E7=A7=BB=E9=99=A4?= =?UTF-8?q?=20user=5Fid=20=E4=BE=9D=E8=B5=96=E6=94=B9=E7=94=A8=20token?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - PaymentQRCode: PC 端有 qrCode 时不跳转,优先展示二维码 - /pay/orders: 移除 user_id 参数,统一通过 token 认证 Co-Authored-By: Claude Opus 4.6 --- src/app/pay/orders/page.tsx | 24 +++++++----------------- src/components/PaymentQRCode.tsx | 4 ++-- 2 files changed, 9 insertions(+), 19 deletions(-) diff --git a/src/app/pay/orders/page.tsx b/src/app/pay/orders/page.tsx index ee2c35e..b2fe8f1 100644 --- a/src/app/pay/orders/page.tsx +++ b/src/app/pay/orders/page.tsx @@ -20,7 +20,6 @@ interface Summary { function OrdersContent() { const searchParams = useSearchParams(); - const userId = Number(searchParams.get('user_id')); const token = (searchParams.get('token') || '').trim(); const theme = searchParams.get('theme') === 'dark' ? 'dark' : 'light'; const uiMode = searchParams.get('ui_mode') || 'standalone'; @@ -43,7 +42,6 @@ function OrdersContent() { const isEmbedded = uiMode === 'embedded' && isIframeContext; const hasToken = token.length > 0; - const effectiveUserId = resolvedUserId || userId; useEffect(() => { if (typeof window === 'undefined') return; @@ -54,7 +52,6 @@ function OrdersContent() { useEffect(() => { if (!isMobile || isEmbedded || typeof window === 'undefined') return; const params = new URLSearchParams(); - if (userId && !Number.isNaN(userId)) params.set('user_id', String(userId)); if (token) params.set('token', token); params.set('theme', theme); params.set('ui_mode', uiMode); @@ -67,15 +64,9 @@ function OrdersContent() { setLoading(true); setError(''); try { - if (!userId || Number.isNaN(userId) || userId <= 0) { - setError('无效的用户 ID'); - setOrders([]); - return; - } if (!hasToken) { - setUserInfo({ id: userId, username: `用户 #${userId}` }); setOrders([]); - setError('当前链接未携带登录 token,无法查询"我的订单"。'); + setError('缺少认证信息,请从 Sub2API 平台正确访问订单页面。'); return; } @@ -97,11 +88,11 @@ function OrdersContent() { if (Number.isInteger(meId) && meId > 0) setResolvedUserId(meId); setUserInfo({ - id: Number.isInteger(meId) && meId > 0 ? meId : userId, + id: Number.isInteger(meId) && meId > 0 ? meId : undefined, username: (typeof meUser.displayName === 'string' && meUser.displayName.trim()) || (typeof meUser.username === 'string' && meUser.username.trim()) || - `用户 #${userId}`, + `用户 #${meId}`, balance: typeof meUser.balance === 'number' ? meUser.balance : 0, }); @@ -121,7 +112,7 @@ function OrdersContent() { if (isMobile && !isEmbedded) return; loadOrders(1, pageSize); // eslint-disable-next-line react-hooks/exhaustive-deps - }, [userId, token, isMobile, isEmbedded]); + }, [token, isMobile, isEmbedded]); const handlePageChange = (newPage: number) => { setPage(newPage); @@ -153,11 +144,11 @@ function OrdersContent() { ); } - if (!effectiveUserId || Number.isNaN(effectiveUserId) || effectiveUserId <= 0) { + if (!hasToken && !resolvedUserId) { return (
-

无效的用户 ID

+

缺少认证信息

请从 Sub2API 平台正确访问订单页面

@@ -166,7 +157,6 @@ function OrdersContent() { const buildScopedUrl = (path: string) => { const params = new URLSearchParams(); - if (effectiveUserId) params.set('user_id', String(effectiveUserId)); if (token) params.set('token', token); params.set('theme', theme); params.set('ui_mode', uiMode); @@ -178,7 +168,7 @@ function OrdersContent() { isDark={isDark} isEmbedded={isEmbedded} title="我的订单" - subtitle={userInfo?.username || `用户 #${effectiveUserId}`} + subtitle={userInfo?.username || '我的订单'} actions={ <>