如何在Stripe的payment_intent.succeeded Webhook中获取关联优惠券?
Stripe支付会话优惠券获取问题解答
为什么payment_intent.succeeded里拿不到优惠券?
Payment Intent的核心是处理支付执行流程(确认金额、验证支付方式、记录支付状态),它不直接存储优惠券或折扣的关联数据。优惠券属于订单(Checkout Session)或客户(Customer)层面的信息,默认不会同步到Payment Intent的返回字段中。
解决办法
方案1:监听checkout.session.completed事件(推荐)
支付完成后,Stripe会触发checkout.session.completed Webhook事件,该事件的Payload里直接包含discount字段,完整提供优惠券的所有信息(如优惠券ID、折扣金额、适用规则等),可以直接提取使用。
方案2:通过Payment Intent关联查询Checkout Session
如果必须依赖payment_intent.succeeded事件,可按以下步骤操作:
- 在
payment_intent.succeeded的事件Payload中,获取checkout_session字段(关联的支付会话ID) - 调用Stripe API查询该支付会话:
stripe.checkout.sessions.retrieve("checkout_session_id") - 从返回的支付会话对象中提取
discount字段,获取优惠券详情
方案3:通过Customer对象查询(若优惠券绑定到客户)
如果优惠券是直接应用到Customer对象上的,可:
- 从
payment_intent.succeeded事件的customer字段获取客户ID - 调用Stripe API查询客户:
stripe.customers.retrieve("customer_id") - 从返回的客户对象的
discount字段中获取优惠券信息
内容的提问来源于stack exchange,提问作者tr4cks
相关产品推荐
相关产品推荐

