订阅计费的架构分层
Nov 3, 2026VrmMate Team
目录、状态、事件三层分开,计费逻辑才不会互相污染。
计费系统分三层:目录、订阅状态、账单事件。
目录层
价格与套餐只从服务端配置读取,绝不信任请求里的金额。多币种时每个渠道用自己的币种,不要把美元金额直接当人民币用。
状态层
subscription 记录状态机:trialing、active、past_due、canceled。状态只能由支付流程或供应商回调更新,后台编辑接口不许越界。
事件层
每次支付成功生成 order,并用幂等键防止回调重复。积分、订阅、内容交付都在同一次 atomic 中完成。
常见错误
在业务代码里硬编码价格;把 webhook 当唯一事实来源;退款后忘记撤销已发放的权益。