update pay ui

This commit is contained in:
2025-12-12 12:38:43 +08:00
parent e58f4e4ecf
commit 4b3ee81341
3 changed files with 23 additions and 8 deletions

4
app.py
View File

@@ -4180,7 +4180,9 @@ def wechat_callback():
'debug_user_id': user.id,
'debug_nickname': user_info.get('nickname', '')[:10],
})
return redirect(f"{frontend_redirect}?{debug_params}")
# ⚡ 修复:正确处理已有查询参数的 URL
separator = '&' if '?' in frontend_redirect else '?'
return redirect(f"{frontend_redirect}{separator}{debug_params}")
# PC 扫码模式:更新状态供前端轮询
if not mode:

View File

@@ -407,8 +407,10 @@ export default function AuthFormContent() {
authEvents.trackWechatLoginInitiated('icon_button');
try {
// 1. 构建回调URL
const redirectUrl = `${window.location.origin}/home/wechat-callback`;
// 1. 构建回调URL,携带当前页面路径以便登录后返回
const currentPath = window.location.pathname + window.location.search;
const returnUrl = encodeURIComponent(currentPath);
const redirectUrl = `${window.location.origin}/home/wechat-callback?returnUrl=${returnUrl}`;
// 2. 显示提示
toast({

View File

@@ -38,11 +38,21 @@ export default function WechatCallback() {
const code = searchParams.get("code");
const state = searchParams.get("state");
const wechatLogin = searchParams.get("wechat_login");
// ⚡ 获取登录前的页面路径(用于登录后跳转回原页面)
const returnUrl = searchParams.get("returnUrl");
const targetUrl = returnUrl ? decodeURIComponent(returnUrl) : "/home";
logger.info('WechatCallback', '解析回调参数', {
wechatLogin,
returnUrl,
targetUrl,
state
});
// 2. 检查是否是 H5 模式登录成功回调
// 后端已经完成登录,只需要刷新前端 session 状态
if (wechatLogin === "success") {
logger.info('WechatCallback', 'H5 模式登录成功', { state });
logger.info('WechatCallback', 'H5 模式登录成功', { state, targetUrl });
// 刷新 session 状态
await checkSession();
@@ -51,9 +61,9 @@ export default function WechatCallback() {
setStatus("success");
setMessage("登录成功!正在跳转...");
// 延迟跳转到首页
// 延迟跳转到原页面(而不是固定 /home
setTimeout(() => {
navigate("/home", { replace: true });
navigate(targetUrl, { replace: true });
}, 1000);
return;
}
@@ -85,15 +95,16 @@ export default function WechatCallback() {
setStatus("success");
setMessage("登录成功!正在跳转...");
// 8. 延迟跳转到首页
// 8. 延迟跳转到原页面(而不是固定 /home
setTimeout(() => {
navigate("/home", { replace: true });
navigate(targetUrl, { replace: true });
}, 1500);
} catch (error) {
logger.error('WechatCallback', 'handleCallback', error, {
code: searchParams.get("code"),
state: searchParams.get("state"),
wechat_login: searchParams.get("wechat_login"),
returnUrl: searchParams.get("returnUrl"),
errorMessage: error.message
});
setStatus("error");