如何通过Stripe Checkout实现订阅业务的双向推荐返利计划
Stripe Checkout 订阅制双向邀请返利功能实现方案
前置配置
- 首先在Stripe后台开启Promotion Codes功能,将该功能关联到你当前在售的包月/包年订阅价格项上
- 你需要在自有后端维护用户与专属邀请码的映射关系:每个用户生成唯一的专属优惠码,和该用户的Stripe客户ID、自有系统用户ID绑定存储
核心流程实现
1. 被邀请人抵扣逻辑(原生Stripe Checkout支持)
不需要大幅改动现有结算流程,直接复用Stripe原生优惠码能力即可
- 新用户进入订阅结算页时如果携带邀请码参数,后端先调用Stripe API校验该优惠码的有效性(未过期、未被使用)
- 创建Stripe Checkout Session时,将校验通过的优惠码ID传入
discounts参数,用户进入结算页后会自动应用25美元抵扣,无需手动输入
示例代码(Python Stripe SDK):
session = stripe.checkout.Session.create( payment_method_types=['card'], line_items=[{ 'price': '你自己的订阅价格ID', 'quantity': 1, }], mode='subscription', discounts=[{ 'promotion_code': '校验通过的邀请码对应的Stripe Promotion Code ID' }], success_url='你的成功回调地址', cancel_url='你的取消回调地址', )
2. 邀请人奖励触发逻辑
- 配置Stripe Webhook监听
checkout.session.completed事件,过滤出mode为subscription、且结算时使用了有效邀请码的事件 - 收到符合要求的事件后,从自有库中通过使用的优惠码匹配到对应的邀请人ID,给邀请人发放25美元抵扣,两种常用实现方案可选:
- 方案1(自动抵扣,开发量最小):直接给邀请人的Stripe客户账户增加余额抵扣,后续用户续费的时候Stripe会自动用余额抵扣账单,无需额外开发
对应代码:
stripe.Customer.create_balance_transaction( '邀请人对应的Stripe客户ID', amount=-2500, # 单位为美分,负数代表给客户增加可抵扣余额 currency='usd', description='邀请好友订阅奖励', )- 方案2(需用户主动使用):生成一个专属的25美元无门槛优惠码绑定到邀请人账号,下次用户订阅/续费的时候可以手动使用,适合需要明确提醒用户奖励到账的场景
- 方案1(自动抵扣,开发量最小):直接给邀请人的Stripe客户账户增加余额抵扣,后续用户续费的时候Stripe会自动用余额抵扣账单,无需额外开发
边界规则配置(避免薅羊毛)
- 创建Promotion Code的时候设置单码使用次数上限为1,避免同一个邀请码被多次使用触发多次奖励
- 自有后端加新用户判定逻辑,只有首次完成订阅的用户使用邀请码才触发双向奖励,避免老用户反复注册套取奖励
- 可增加退款观察期规则:被邀请人订阅生效超过7天(默认退款期)后再给邀请人发放奖励,避免恶意刷单退款套取奖励
内容的提问来源于stack exchange,提问作者Ankit Goyal
相关产品推荐
相关产品推荐

