配置推荐计划与推广奖励
判断推荐流程是否适合你的产品,配置归因与佣金,补齐运营缺口,并完成端到端验证。
完成本页后,你会知道应该继续关闭推荐功能,还是把现有基础完善成真正可运营的计划。安全的默认值是关闭:AffiliateConfig.enabled 为 false,因为启用后会产生代码无法独自解决的财务与支持责任。
已提供的能力
| 行为 | 默认值 |
|---|---|
| 启用方式 | 修改 src/config/affiliate.ts 中的代码开关;没有环境变量开关 |
| 邀请链接 | /i/{code} 以及带语言的 /[locale]/i/{code} 路由;自动生成的分享 URL 目前使用无前缀路由 |
| 归因 | 首次接触、30 天 ref Cookie、禁止自我推荐 |
| 注册归因 | 用户认证后由客户端尽力写入;失败时不写 session 标记,后续重新挂载时可重试 |
| 注册奖励 | 0;注册行只记录归因,不产生支付 |
| 付费奖励 | 5,000 个最小货币单位与订单金额 20% 中的较大值 |
| 奖励状态 | 记录为待人工审核和支付的现金奖励;不会自动转移金钱或积分 |
| 用户页面 | 需登录的 /[locale]/my-invites,功能关闭时返回 404 |
| 运营页面 | 管理控制台中只读的 /affiliates 表格 |
数据库约束让注册归因和订单奖励能够安全重放。即使两个标签页竞争,也只保留第一次接触;支付事件重放不会为同一订单创建第二笔奖励,订单流程可以取消仍在 pending 状态的奖励。
判断计划是否适合
回答完以下问题前,建议保持关闭:
- 谁能推荐:所有登录用户、审核后的合作伙伴,还是单独人群?
- 什么才算有效:注册、首次付费、每次订单,还是退款期后的留存收入?
- 固定最小货币单位属于哪种币种,多币种订单如何处理?
- 谁处理欺诈、自我交易、重复身份、退款、税务材料和支付争议?
- pending 记录何时、如何变为 approved、paid、canceled 或被追回?
- 公开计划条款向参与者承诺什么?
现有代码不会用用户表中的 is_affiliate 字段限制链接生成。启用后,任何能访问页面或 API 的登录用户都可创建邀请码。如果计划不是对所有人开放,发布前必须增加服务端资格校验。
在代码中配置政策
编辑 src/config/affiliate.ts,逐项检查 AffiliateConfig:
export const AffiliateConfig = {
enabled: true,
attributionWindowDays: 30,
allowSelfReferral: false,
attributionModel: AttributionModel.FirstTouch,
payoutType: "cash",
commissionMode: CommissionMode.GreaterOf,
paid: { fixed: 5_000, percent: 20 },
// ...
} as const;佣金计算已实现 FixedOnly、PercentOnly、GreaterOf 和 Sum。固定值使用最小货币单位,而现有界面按美元分显示。请保持 FirstTouch:虽然枚举包含 LastTouch,当前服务只会在 invited_by 为空时写入,因此仅修改枚举并不会实现末次接触归因。
同样,payoutType: "credits" 只是为采用者预留;你需要自行增加可确定、可重放的账本发放。现有流程只记录类似现金的奖励金额,不会转移任何价值。没有实现并验证实际效果前,不要只修改标签。
补齐用户与运营体验
多语言路由已经存在,但 My Invites 页面和组件目前使用硬编码英文,并把奖励格式化为 USD;主导航中也没有入口。发布前请:
- 增加多语言文案、按币种格式化、空状态/错误状态与易发现的账号入口。
- 决定分享链接是否保留语言;当前 API 返回
/i/{code}。 - 增加服务端推荐人资格、计划条款与滥用防护。
- 构建有审计记录的审核和支付流程;当前管理页只能查看,不能支付或标记完成。
- 为支付流程明确退款、取消与追回规则。
端到端验证
先验证关闭状态:邀请链接正常重定向,My Invites 返回 404,推广 API 返回“未找到”。
然后在测试部署中启用,并使用一次性账号:
- 由推荐人生成邀请链接。
- 在干净浏览器中打开,确认
refCookie 有效期为 30 天。 - 被推荐用户注册或登录,确认写入
invited_by且只创建一条注册归因记录。 - 再访问另一位推荐人的链接,确认第一次接触不被替换;确认自我推荐被忽略。
- 完成订单,确认只出现一条 pending 付费记录,奖励为
max(5,000, floor(订单金额 × 20%))。 - 重放支付事件,确认没有重复奖励;按你的政策验证取消和退款行为。
- 确认用户汇总与管理端 Affiliates 表一致,同时没有自动支付发生。
- 模拟临时归因失败,确认组件重新挂载或完整刷新后能够成功重试。
发布前运行服务与数据库测试。推荐功能依赖支付事实与运营审核,请继续阅读Stripe 计费和管理控制台运营。
相关内容: 选择归因、佣金、支付和反欺诈政策前,请阅读你应该添加推荐计划吗?。
尚未替你完成的部分
当前没有自动支付渠道、积分发放、合作伙伴审批、反欺诈审核、税务处理、完整多语言用户 UI、多币种模型、导航入口或真正可用的末次接触模式。启动模板提供可安全重放的归因与记账记录;计划政策与运营流程需要由你补全。
源码快照
已根据启动模板提交 7580470 验证: