Skip to content

Latest commit

 

History

History
80 lines (59 loc) · 3.51 KB

File metadata and controls

80 lines (59 loc) · 3.51 KB

GPT-Image2 付费交流群上线手册

当前实现将付费群与积分包、会员支付完全分离:支付宝一次性支付 ¥9.90 后,资格绑定 Supabase 用户账号;只有服务端确认订单为 PAID 时才能读取受保护群二维码。

本地能力

  • 页面:/community
  • 支付回跳:/community/result
  • 支付方式:支付宝网站支付 alipay.trade.page.pay
  • 固定金额:990 分,CNY
  • 订单状态:PENDINGPAIDCLOSEDREFUNDEDREVOKED
  • 退款处理状态:NONEPROCESSINGSUCCEEDEDFAILED
  • 资格规则:仅 PAID 有效;退款处理中保持 PAID;支付宝确认退款成功后改为 REFUNDED
  • 群码:数据库 bytea 资源,限 PNG/JPEG/WebP、最大 2 MB,管理员通过事务 RPC 原子替换

API

公开与当前用户:

  • GET /api/community/config
  • GET /api/community/status
  • GET /api/community/qr

支付宝:

  • POST /api/community/alipay/checkout
  • GET /api/community/alipay/query
  • POST /api/community/alipay/close
  • POST /api/community/alipay/notify

超级管理员:

  • GET /api/admin/community/orders
  • GET|POST /api/admin/community/qr
  • POST /api/admin/community/refund
  • GET /api/admin/community/refund-query
  • POST /api/admin/community/revoke

环境变量

生产部署必须先保持:

COMMUNITY_PAYMENT_ENABLED=false
COMMUNITY_ALIPAY_NOTIFY_URL=https://gpt-image2.canghe.ai/api/community/alipay/notify
COMMUNITY_SUPPORT_TEXT=微信搜索苍何

支付宝生产变量沿用现有 ALIPAY_APP_IDALIPAY_PRIVATE_KEYALIPAY_PUBLIC_KEYALIPAY_SELLER_ID 和生产网关配置。生产私钥只在 Vercel Sensitive Environment Variables 中配置,不写入仓库、文档或对话。

首次部署顺序

  1. 保持 COMMUNITY_PAYMENT_ENABLED=false
  2. 在目标 Supabase 项目应用 supabase/migrations/20260722090000_paid_community.sql
  3. 部署同一版本代码,确认 /community/community/result 和只读状态接口正常。
  4. super_admin 在管理面板上传一张从未公开过的新群二维码。
  5. 在支付宝开放平台完成网站支付签约、应用配置与发布,并确认公网 HTTPS 通知地址无重定向。
  6. 配置属于同一生产应用的 App ID、应用公钥、应用私钥和支付宝公钥;Node.js 使用 PKCS#1 私钥原文。
  7. 开启 COMMUNITY_PAYMENT_ENABLED=true
  8. 用同一生产版本完成一笔真实 ¥9.90 付款和原路退款验收。

生产验收

真实付款必须逐项确认:

  • 前端不能提交或覆盖金额。
  • 创建的是独立 community_orders,不会触发积分包履约。
  • 支付宝主动查单和异步通知都能幂等写入 PAID
  • 同步回跳只触发服务端查单,不信任 URL 参数。
  • 付款账号可以读取群码,未付款账号得到拒绝响应。
  • 管理员退款使用稳定退款请求号;处理中资格仍有效。
  • 退款查询得到 REFUND_SUCCESS 后写入 REFUNDED,随后群码访问失效。
  • 任何关键项失败时立即将 COMMUNITY_PAYMENT_ENABLED 改回 false

群码轮换与日常运维

  • 群二维码过期时,在管理面板上传新图片;RPC 会在同一事务中停用旧图并启用新图。
  • 不要把受保护群码上传到 GitHub、README、公开对象存储或前端静态目录。
  • 退款由“微信搜索苍何”人工审核;管理员操作前核对账号、订单号和退款状态。
  • 人工撤销资格不会自动退款;需要退款时使用退款流程,不用撤销代替退款。