feat(payment): 重构网页端支付登录流程——小程序生成临时码、网页端扫码确认

- 后端新增 /api/web-login/code (生成临时登录码) 和 /api/web-login/confirm (确认登录)
- 后端新增 /payment/login-status (GET, 轮询登录状态)
- payment_index 页面完全重写:未登录时显示微信扫码登录入口;登录后显示套餐或会员信息
- 沙箱环境下 /payment 通过 mock-login 跳过真实微信认证,方便测试
This commit is contained in:
2026-04-24 09:43:18 +08:00
parent 375f0affcf
commit 31bafee0ab
4 changed files with 495 additions and 24 deletions

View File

@@ -19,10 +19,11 @@ use db::create_pool;
use handlers::{
admin_get_user, admin_update_user_payment, add_favorite, alipay_notify, alipay_pay_page,
create_order, delete_weather, generate_temp_token_handler, get_current_user_profile,
get_favorites, get_user_quota, get_weather_brief, get_weather_details,
get_favorites, get_user_quota, get_weather_brief, get_weather_details,
health_check, login, mock_login, mock_confirm, payment_index, payment_page, payment_success,
post_weather_data,
refresh_token, remove_favorite, root, save_user_profile, serve_static_files,
web_generate_login_code, web_login_confirm,
};
use models::AppState;
@@ -73,6 +74,8 @@ fn create_server_config(
// API 接口
.service(login) // #[post("/api/login")]
.service(mock_login) // #[get("/api/mock-login")](沙箱测试用)
.service(web_generate_login_code) // #[post("/api/web-login/code")](网页端微信登录)
.service(web_login_confirm) // #[post("/api/web-login/confirm")](网页端登录确认)
.service(refresh_token) // #[post("/api/refresh-token")](公开接口,无需认证)
.service(get_weather_details) // #[get("/weather/details")](支持 JWT 或 temp_token公开接口
.service(health_check) // #[get("/health")](公开接口,无需认证)