我有1个产品在Stripe有2个价格
- 第一个价格是定期订阅
- 第二次价格为一次性付款
我用redirectToCheckout
处理,第一个用mode: subscription
处理,第二个用mode: payment
处理,并且在lineItems
中分别表示各自的价格代码
然后,当支付完成时,我得到webhooks发送到我的php后端
对于第一项,我获得事件类型customer.subscription.created
,并且在该webhook中发送的信息包括价格代码
我需要这个价格代码来确保用户已经完成了对特定price
商品的支付
问题在于第二项,我已经能够识别与webhooks发送的4个事件付款后:
customer.created
charge.succeeded
payment_intent.succeeded
checkout.session.completed
没有一个包含price
信息关于用户购买了什么产品
也许我可以在fetch
操作中要求stripe提供该信息,但是…不可能没有任何webhook包含这些基本(?)信息
也许我理解错了?
编辑:
可能答案是这个,所以webhook (checkout.session.completed
)默认情况下不包括这个信息,它确实必须在第二步中检索
正如@ttmarek所说,答案在这里https://stripe.com/docs/expand#includable-properties表明如果使用single payment
必须检索此信息如果使用subscription
,则默认包含此信息,无需启动另一个请求
避免这个额外请求的另一种方法是使用amount
收费(大多数webhook都有),前提是你可以从这个金额中确定你的价格