微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Stripe webhooks,当支付的产品不是订阅而是一次性付款时,我如何才能收到 PRICE 项目?

如何解决Stripe webhooks,当支付的产品不是订阅而是一次性付款时,我如何才能收到 PRICE 项目?

我在 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(大多数网络挂钩随附),前提是您可以从该金额中确定您的价格

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。