如何实现单个Stripe促销码支持每位客户仅兑换一次?
单个促销码限制每位客户仅兑换一次的Stripe实现方案
完全可以实现你要的效果,核心是利用Stripe优惠券的per_customer参数,配合合理的优惠券与促销码设置,不用批量创建促销码:
步骤1:创建优惠券C
创建优惠券时,设置两个关键参数:per_customer: true:这个参数会强制限制每个Stripe客户ID只能兑换该优惠券一次,不管用哪个关联的促销码。max_redemptions: 3:对应你的示例中U1、U2、U3三个潜在客户,控制该优惠券的总兑换次数上限。如果不需要总次数限制,也可以不设置这个参数。
同时你可以根据需求设置expires_at(优惠券过期时间),不影响核心限制逻辑。
步骤2:创建促销码R关联优惠券C
生成促销码时,不需要设置customer字段绑定单个用户,也不用单独设置max_redemptions。直接将促销码关联到刚才创建的优惠券C即可,这样所有拿到R的客户都能使用,但每个客户只能用一次。结账会话的配合
当你为产品P创建结账会话时,确保会话允许使用促销码(默认是允许的)。如果你的系统有自己的用户体系,建议在创建结账会话时明确关联对应的Stripe客户ID——这样即使用户更换邮箱或付款方式,Stripe也能精准识别用户身份,避免重复兑换。如果是匿名用户,Stripe会通过邮箱、付款方式等信息自动关联到同一客户记录,也能实现限制效果。
效果验证:
U1使用促销码R完成产品P的购买后,Stripe会记录该客户已兑换过优惠券C,后续U1再次尝试使用R时会被拒绝;而U2、U3首次使用R时可以正常享受折扣,直到优惠券的总兑换次数达到设置的上限(示例中的3次)。
内容的提问来源于stack exchange,提问作者ozanmuyes
相关产品推荐
相关产品推荐

