diff --git a/app/main.py b/app/main.py index 3cfa8c6..04c22a5 100755 --- a/app/main.py +++ b/app/main.py @@ -9,6 +9,7 @@ import requests from fastapi import Request, HTTPException import logging from pocketbase import PocketBase +from pocketbase.client import ListResult # 新增导入(可选,但明确类型) app = FastAPI() @@ -96,7 +97,7 @@ def create_memos_user(user_id: str, password: str = "123456"): response = requests.post(MEMOS_API, json=memos_data, headers=memos_headers, timeout=10) - if response.status_code in (200, 201): # ← 修复:status_code + if response.status_code in (200, 201): result = response.json() print(f"memos 用户创建成功: {username}") logging.info(f"memos 用户创建成功: {username}") @@ -113,7 +114,6 @@ def create_memos_user(user_id: str, password: str = "123456"): return {"success": False, "error": str(e)} - @app.post("/payh5") async def payh5(item: dict): print('payh5 item:', item) @@ -132,7 +132,7 @@ async def payh5(item: dict): "video": "视频解锁", "vip": "VIP会员充值", } - name = type_map.get(pay_type, "商品支付") # ← 修复:用 pay_type 匹配(小写一致) + name = type_map.get(pay_type, "商品支付") notify_url = "https://api.hackrobot.cn/xorpay_notify" @@ -160,7 +160,6 @@ async def payh5(item: dict): "xorpay_url": f"https://xorpay.com/api/cashier/{AID}" } -# 新增:接收前端提交的 meetup 申请表单(存申请字段,支付字段留空) @app.post("/submit_meetup_application") async def submit_meetup_application(item: dict): print('submit_meetup_application item:', item) @@ -184,7 +183,6 @@ async def submit_meetup_application(item: dict): "gradYear": item.get("gradYear", ""), "phone": item.get("phone", ""), "calculated_age": item.get("calculated_age", 0), - # 支付字段留空,等待回调填充 "type": "", "order_id": "", "amount": 0, @@ -199,8 +197,6 @@ async def submit_meetup_application(item: dict): logging.error(f"meetup 申请提交失败 - user_id: {user_id}, error: {e}") raise HTTPException(status_code=500, detail="submit failed") - - @app.post("/xorpay_notify") async def xorpay_notify(request: Request): form_data = await request.form() @@ -253,11 +249,10 @@ async def xorpay_notify(request: Request): if pay_type == "meetup": solan = pb_client.collection("solan") - # 查找该 user_id 的待支付记录 - existing = solan.list(filter=f'user_id="{user_id}"', per_page=1) + # 修复bug:pocketbase-py SDK 用 get_list 而非 list + existing: ListResult = solan.get_list(1, 1, {"filter": f'user_id="{user_id}"'}) if existing.items: record_id = existing.items[0].id - # PATCH 填充支付字段 solan.update(record_id, { "type": "meetup", "order_id": order_id, @@ -265,7 +260,6 @@ async def xorpay_notify(request: Request): }) logging.info(f"meetup 支付字段补齐成功 - user_id: {user_id}, record_id: {record_id}") else: - # 兜底:如果没找到申请记录,直接创建完整记录 solan.create({ "user_id": user_id, "type": "meetup", @@ -274,7 +268,6 @@ async def xorpay_notify(request: Request): }) logging.info(f"meetup 完整记录创建(兜底) - user_id: {user_id}") else: - # 其他类型仍写入 payments pb_client.collection("payments").create({ "user_id": user_id, "type": pay_type,