邀请返佣
ShipAny 实现了一套邀请返佣系统。你可以在你的产品中使用这套系统来激励用户邀请新用户。
如何使用
- 参考这个提交,创建必要的数据表和业务逻辑。
如果是新项目,默认已经集成。
- 用户自定义邀请链接
用户进入:http://localhost:3000/my-invites 页面,可以生成自己的邀请链接。
- 用户分享出去的邀请链接类似这种
http://localhost:3000/i/idoubi
-
新用户通过分享者的邀请链接进入系统,会自动关联到分享者。
-
分享者可以在 /my-invites 页面查看邀请记录和邀请奖励
-
管理员可以在后台查看邀请记录和邀请奖励
暂不支持在线自动提现,需要管理员人工联系用户发放奖励。
如何自定义奖励金额和比例
默认的奖励规则是:
- 新用户通过邀请链接注册,只记录状态,不发放奖励
- 用户每次支付,给邀请人发放 $50 固定金额奖励
你可以根据自己的业务需求,修改奖励规则:
- 新用户注册时候,会请求
/api/update-invite
接口
你可以修改此接口的逻辑,更改新用户注册场景下的奖励规则。
/app/api/update-invite/route.ts
await insertAffiliate({
user_uuid: user_uuid,
invited_by: inviteUser.uuid,
created_at: getIsoTimestr(),
status: AffiliateStatus.Pending,
paid_order_no: "",
paid_amount: 0,
reward_percent: AffiliateRewardPercent.Invited,
reward_amount: AffiliateRewardAmount.Invited,
});
默认的 AffiliateRewardPercent.Invited
和 AffiliateRewardAmount.Invited
都是 0.
你可以根据自己的业务需求,修改对应的值。
- 用户支付成功后,会在更新完订单状态之后,回调
updateAffiliateForOrder
方法
你可以修改此方法内的逻辑,修改被邀请人支付的订单,给到邀请人的奖励
services/affiliate.ts
import { findAffiliateByOrderNo, insertAffiliate } from "@/models/affiliate";
import { AffiliateRewardAmount } from "./constant";
import { AffiliateRewardPercent } from "./constant";
import { AffiliateStatus } from "./constant";
import { Order } from "@/types/order";
import { findUserByUuid } from "@/models/user";
import { getIsoTimestr } from "@/lib/time";
export async function updateAffiliateForOrder(order: Order) {
try {
const user = await findUserByUuid(order.user_uuid);
if (user && user.uuid && user.invited_by && user.invited_by !== user.uuid) {
const affiliate = await findAffiliateByOrderNo(order.order_no);
if (affiliate) {
return;
}
await insertAffiliate({
user_uuid: user.uuid,
invited_by: user.invited_by,
created_at: getIsoTimestr(),
status: AffiliateStatus.Completed,
paid_order_no: order.order_no,
paid_amount: order.amount,
reward_percent: AffiliateRewardPercent.Paied,
reward_amount: AffiliateRewardAmount.Paied,
});
}
} catch (e) {
console.log("update affiliate for order failed: ", e);
throw e;
}
}
默认的 AffiliateRewardPercent.Paied
值是 20,代表返佣比例是 20%
默认的 AffiliateRewardAmount.Paied
值是 50,代表返佣金额是 $50
你可以根据自己的业务需求,修改对应的值。