问题描述
我在 Stripe 有 1 个产品,有 2 个价格
我使用 redirecttocheckout
进行处理,第一个使用 mode: subscription
,第二个使用 mode: payment
,并且都在 lineItems
中指示各自的价格代码
然后,当在 Stripe 一方完成付款时,我将 webhook 发送到我的 PHP 后端
对于第一个项目,我获得了事件类型 customer.subscription.created
,并且在该网络钩子中发送的信息包括价格代码
我需要此价格代码以确保用户已完成对特定 price
商品的付款
问题出在第二个项目上,我已经能够识别付款后通过 webhooks 发送的 4 个事件:
customer.created
charge.succeeded
payment_intent.succeeded
checkout.session.completed
而且它们都没有包含有关用户已支付的产品的price
信息
也许我可以在 fetch
操作中向 Stripe 询问该信息,但是......不可能没有任何包含这些基本 (?) 信息的网络钩子
也许我理解错了?
编辑:
可能答案是this one,因此默认情况下 webhook (checkout.session.completed
) 不包含此信息,并且确实必须在第 2 步中检索它
解决方法
正如@ttmarek 所说,答案在这里https://stripe.com/docs/expand#includable-properties 表明如果使用single payment
则必须检索此信息
如果使用 subscription
,则默认包含此信息,无需启动另一个请求
避免这种额外请求的另一种方法是使用收费的 amount
(大多数网络挂钩随附),前提是您可以从该金额中确定您的价格