可选产品示例

配置推荐计划与推广奖励

判断推荐流程是否适合你的产品,配置归因与佣金,补齐运营缺口,并完成端到端验证。

完成本页后,你会知道应该继续关闭推荐功能,还是把现有基础完善成真正可运营的计划。安全的默认值是关闭AffiliateConfig.enabledfalse,因为启用后会产生代码无法独自解决的财务与支持责任。

已提供的能力

行为默认值
启用方式修改 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;

佣金计算已实现 FixedOnlyPercentOnlyGreaterOfSum。固定值使用最小货币单位,而现有界面按美元分显示。请保持 FirstTouch:虽然枚举包含 LastTouch,当前服务只会在 invited_by 为空时写入,因此仅修改枚举并不会实现末次接触归因。

同样,payoutType: "credits" 只是为采用者预留;你需要自行增加可确定、可重放的账本发放。现有流程只记录类似现金的奖励金额,不会转移任何价值。没有实现并验证实际效果前,不要只修改标签。

补齐用户与运营体验

多语言路由已经存在,但 My Invites 页面和组件目前使用硬编码英文,并把奖励格式化为 USD;主导航中也没有入口。发布前请:

  1. 增加多语言文案、按币种格式化、空状态/错误状态与易发现的账号入口。
  2. 决定分享链接是否保留语言;当前 API 返回 /i/{code}
  3. 增加服务端推荐人资格、计划条款与滥用防护。
  4. 构建有审计记录的审核和支付流程;当前管理页只能查看,不能支付或标记完成。
  5. 为支付流程明确退款、取消与追回规则。

端到端验证

先验证关闭状态:邀请链接正常重定向,My Invites 返回 404,推广 API 返回“未找到”。

然后在测试部署中启用,并使用一次性账号:

  1. 由推荐人生成邀请链接。
  2. 在干净浏览器中打开,确认 ref Cookie 有效期为 30 天。
  3. 被推荐用户注册或登录,确认写入 invited_by 且只创建一条注册归因记录。
  4. 再访问另一位推荐人的链接,确认第一次接触不被替换;确认自我推荐被忽略。
  5. 完成订单,确认只出现一条 pending 付费记录,奖励为 max(5,000, floor(订单金额 × 20%))
  6. 重放支付事件,确认没有重复奖励;按你的政策验证取消和退款行为。
  7. 确认用户汇总与管理端 Affiliates 表一致,同时没有自动支付发生。
  8. 模拟临时归因失败,确认组件重新挂载或完整刷新后能够成功重试。

发布前运行服务与数据库测试。推荐功能依赖支付事实与运营审核,请继续阅读Stripe 计费管理控制台运营

相关内容: 选择归因、佣金、支付和反欺诈政策前,请阅读你应该添加推荐计划吗?

尚未替你完成的部分

当前没有自动支付渠道、积分发放、合作伙伴审批、反欺诈审核、税务处理、完整多语言用户 UI、多币种模型、导航入口或真正可用的末次接触模式。启动模板提供可安全重放的归因与记账记录;计划政策与运营流程需要由你补全。

源码快照

已根据启动模板提交 7580470 验证:

配置推荐计划与推广奖励 · Sushi SaaS