把个人网站当成产品:会员体系与支付预留
先设计权益与订单,再接入渠道;支付回调必须幂等,会员到期判断必须只有一个入口。
把个人网站当成产品:会员体系与支付预留
个人网站也可以有产品思维:免费内容建立信任,会员权益覆盖持续成本。
先定义权益,再谈渠道
会员不是一个布尔值,而是一组能力的集合:高级工具、专属游戏、去广告、优先支持。把这些能力映射到统一的 has_membership(user) 判断,页面与服务都调用它,避免各处散落 role == "member"。
订单模型
一笔订单至少包含:订单号、用户、套餐、金额、渠道、状态、支付时间、外部流水号。订单号必须唯一,状态流转要可追踪。
回调必须幂等
支付渠道可能重复通知。处理逻辑应先查状态,已支付则直接返回:
if order.is_paid:
return order
order.status = "paid"
grant_membership(order.user, order.meta["days"])
发放权益时,续费应叠加在原到期时间之后,而不是简单覆盖。
渠道可插拔
用注册表维护渠道处理函数,新增微信或支付宝只需实现一个 handler,并在生产环境校验签名、金额与订单归属。
商业化底线
- 免费功能必须真实可用
- 价格与权益清晰,不制造误购
- 支付失败可恢复,订单可查询