运营 SaaS
邀请、推广与奖励
配置邀请链接、归因和推广奖励(固定金额或百分比)。介绍 Cookie 如何记录来源、登录后的最终归因流程,以及在订单支付后计算奖励的方式。
模板已内置邀请/推广系统:分享邀请链接 → Cookie 归因 → 注册/支付奖励,开箱即用,可配置。
代码总览
- 邀请跳转(本地化):
src/app/[locale]/i/[inviteCode]/route.ts
- 登录后归因 API:
src/app/api/affiliate/update-invite/route.ts
- 邀请码 API:
src/app/api/affiliate/invite-code/route.ts
- 奖励计算与去重:
src/services/affiliate.ts
- Stripe 集成(支付后):
src/services/stripe.ts
- 用户页面:
src/app/[locale]/my-invites/page.tsx
- 组件:
invite-link.tsx
,summary-cards.tsx
,affiliate-table.tsx
- 组件:
- 管理页面:
src/app/(admin)/admin/affiliates/page.tsx
- 客户端初始化:
src/providers/affiliate-init.tsx
(在src/providers/theme.tsx
引入)
流程
- 访问
/:locale/i/<inviteCode>
→ 服务端设置ref
Cookie(30天)并重定向。 - 注册/登录后 → 客户端一次性调用
/api/affiliate/update-invite
,如用户invited_by
未设置则写入,插入注册记录(默认无奖励)。 - 支付成功(Stripe)→ 计算固定/比例/混合奖励,按
paid_order_no
去重写入完成记录。 - 页面 → 用户页
/[locale]/my-invites
;管理员页/admin/affiliates
。
配置
文件: src/data/affiliate.ts
- 项目开关:
enabled
,attributionWindowDays
,allowSelfReferral
,attributionModel
- 奖励:
commissionMode
(fixed_only / percent_only / greater_of / sum),signup
,paid
- 发放类型:
payoutType = "cash"
(分)或"credits"
(站内积分) - 路径:
sharePath
(默认/i
),myInvitesPath
分享地址基于 NEXT_PUBLIC_WEB_URL
。
本地验证
- 在
/[locale]/my-invites
生成并复制邀请链接。 - 无痕窗口中打开、注册并登录;返回查看统计。
- Stripe 测试支付后,在管理页查看奖励记录。
提示
- Cookie 写在同一域名(请设置正确的
NEXT_PUBLIC_WEB_URL
)。 - 客户端仅在接口返回 200 时标记成功;若登录前调用会在登录后重试。
- 奖励按
paid_order_no
去重,不会重复发放。