feat: add payment return portal redirect
Some checks failed
CI / pytest (Python 3.10) (push) Has been cancelled
CI / pytest (Python 3.11) (push) Has been cancelled
CI / pytest (Python 3.12) (push) Has been cancelled

This commit is contained in:
Hermes Agent
2026-06-14 19:40:02 +08:00
parent a97cfb2058
commit b53e791aff
2 changed files with 28 additions and 0 deletions

View File

@@ -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)

View File

@@ -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"