把个人网站当成产品:会员体系与支付预留

先设计权益与订单,再接入渠道;支付回调必须幂等,会员到期判断必须只有一个入口。

把个人网站当成产品:会员体系与支付预留

个人网站也可以有产品思维:免费内容建立信任,会员权益覆盖持续成本。

先定义权益,再谈渠道

会员不是一个布尔值,而是一组能力的集合:高级工具、专属游戏、去广告、优先支持。把这些能力映射到统一的 has_membership(user) 判断,页面与服务都调用它,避免各处散落 role == "member"。

订单模型

一笔订单至少包含:订单号、用户、套餐、金额、渠道、状态、支付时间、外部流水号。订单号必须唯一,状态流转要可追踪。

回调必须幂等

支付渠道可能重复通知。处理逻辑应先查状态,已支付则直接返回:

if order.is_paid:
    return order
order.status = "paid"
grant_membership(order.user, order.meta["days"])

发放权益时,续费应叠加在原到期时间之后,而不是简单覆盖。

渠道可插拔

用注册表维护渠道处理函数,新增微信或支付宝只需实现一个 handler,并在生产环境校验签名、金额与订单归属。

商业化底线

  • 免费功能必须真实可用
  • 价格与权益清晰,不制造误购
  • 支付失败可恢复,订单可查询