This commit is contained in:
eric
2026-03-12 03:55:36 -05:00
parent 21d5b375cc
commit 7469869311
17 changed files with 319 additions and 8 deletions

View File

@@ -25,16 +25,18 @@ def handle_payment_success(
provider_name: str,
*,
use_memos: bool = False,
site_id: str | None = None,
):
"""
支付成功后的统一业务处理
:param use_memos: 是否创建 Memos 用户,仅 nomadvip 为 True
:param site_id: 站点标识digital/meetup/vip用于写入 site_vip
"""
user_id, pay_type = parse_order_id(order_id)
if not user_id:
return
print(f"支付成功 [{provider_name}] 用户ID: {user_id},类型: {pay_type},订单: {order_id}")
print(f"支付成功 [{provider_name}] 用户ID: {user_id},类型: {pay_type}站点: {site_id}订单: {order_id}")
if pay_type == "vip" and use_memos:
create_memos_user(user_id)
@@ -79,6 +81,32 @@ def handle_payment_success(
"order_id": order_id,
"amount": amount_cents,
})
# 写入 site_vip站点独立 VIP。meetup 类型统一写 site_id=meetup
effective_site_id = "meetup" if pay_type == "meetup" else site_id
if effective_site_id:
try:
site_vip = pb_client.collection("site_vip")
existing_vip = site_vip.get_list(1, 1, {
"filter": f'user_id = "{user_id}" && site_id = "{effective_site_id}"',
})
if existing_vip.items:
site_vip.update(existing_vip.items[0].id, {
"order_id": order_id,
"expires_at": "",
})
logging.info(f"site_vip 更新成功 - user_id: {user_id}, site_id: {effective_site_id}")
else:
site_vip.create({
"user_id": user_id,
"site_id": effective_site_id,
"order_id": order_id,
"expires_at": "",
})
logging.info(f"site_vip 创建成功 - user_id: {user_id}, site_id: {effective_site_id}")
except Exception as e:
logging.warning(f"site_vip 写入失败(不影响主流程): {e}")
processed_orders.add(order_id)
except Exception as e:
print(f"PocketBase 操作失败: {e}")