功能特性邀请返佣

邀请返佣

ShipAny 实现了一套邀请返佣系统。你可以在你的产品中使用这套系统来激励用户邀请新用户。

如何使用

  1. 参考这个提交,创建必要的数据表和业务逻辑。

如果是新项目,默认已经集成。

  1. 用户自定义邀请链接

用户进入:http://localhost:3000/my-invites 页面,可以生成自己的邀请链接。

my-invites

  1. 用户分享出去的邀请链接类似这种

http://localhost:3000/i/idoubi

  1. 新用户通过分享者的邀请链接进入系统,会自动关联到分享者。

  2. 分享者可以在 /my-invites 页面查看邀请记录和邀请奖励

  3. 管理员可以在后台查看邀请记录和邀请奖励

暂不支持在线自动提现,需要管理员人工联系用户发放奖励。

admin-affiliate

如何自定义奖励金额和比例

默认的奖励规则是:

  • 新用户通过邀请链接注册,只记录状态,不发放奖励
  • 用户每次支付,给邀请人发放 $50 固定金额奖励

你可以根据自己的业务需求,修改奖励规则:

  1. 新用户注册时候,会请求 /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.InvitedAffiliateRewardAmount.Invited 都是 0.

你可以根据自己的业务需求,修改对应的值。

  1. 用户支付成功后,会在更新完订单状态之后,回调 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

你可以根据自己的业务需求,修改对应的值。