From b53e791affe17dbb3972ecf37d9391b15bb820b4 Mon Sep 17 00:00:00 2001 From: Hermes Agent Date: Sun, 14 Jun 2026 19:40:02 +0800 Subject: [PATCH] feat: add payment return portal redirect --- admin/routes/web_public.py | 8 ++++++++ admin/tests/test_web_public.py | 20 ++++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/admin/routes/web_public.py b/admin/routes/web_public.py index 062e9ae..3afbd4c 100644 --- a/admin/routes/web_public.py +++ b/admin/routes/web_public.py @@ -187,6 +187,14 @@ def complete_alipay_sim_payment( ) +@router.get("/portal/payment-return", include_in_schema=False) +def payment_return_page( + token: str, settings: Settings = Depends(get_settings_dep) +) -> RedirectResponse: + _resolve_order_from_token(token, settings) + return RedirectResponse(url=f"/portal/{token}/status", status_code=303) + + @router.get("/portal/{token}/info", include_in_schema=False) def order_info_page( token: str, settings: Settings = Depends(get_settings_dep) diff --git a/admin/tests/test_web_public.py b/admin/tests/test_web_public.py index 61d935f..e5b682c 100644 --- a/admin/tests/test_web_public.py +++ b/admin/tests/test_web_public.py @@ -109,3 +109,23 @@ def test_mock_payment_complete_rejects_wrong_portal_token(client): resp = client.post(f"/pay/mock/{payment_id}/complete?token=wrong-token") assert resp.status_code == 401 or resp.status_code == 403 + + +def test_payment_return_redirects_to_portal_status(client): + create_resp = client.post( + "/api/public/orders", + json={ + "service_version": "standard", + "amount_cents": 9900, + "customer_name": "张家长", + "customer_phone": "13800138000", + "candidate_province": "湖南", + }, + ) + assert create_resp.status_code == 201, create_resp.text + body = create_resp.json() + token = body["portal_status_url"].split("/portal/")[1].split("/status")[0] + + resp = client.get(f"/portal/payment-return?token={token}", follow_redirects=False) + assert resp.status_code == 303, resp.text + assert resp.headers["location"] == f"/portal/{token}/status"