将 Stripe 结帐会话与订阅 webhook 关联
Posted
技术标签:
【中文标题】将 Stripe 结帐会话与订阅 webhook 关联【英文标题】:Associate Stripe checkout session with subscription webhook 【发布时间】:2020-11-26 03:34:20 【问题描述】:我正在使用 Stripe 处理我正在设置的订阅服务的付款。
我从我的客户那里收集相关信息,然后在服务器端,我使用 Stripe php IDE 设置新客户并为我设置为订阅的 price
对象创建结帐会话.我将结帐会话 ID 保存到我的数据库中,然后使用相同的会话 ID 客户端通过重定向到 Stripe 向客户收取付款。
webhook checkout.session.completed
,然后让我将之前的结帐会话 ID 与订阅 ID 关联起来。然后我需要第二个 webhook customer.subscription.updated
从订阅 id 获取订阅状态。
感觉好像我在这里做错了什么。我正在使用两个 webhook 来获取我需要的信息。如果checkout.session.completed
webhook 在customer.subscription.updated
webhook 之后到达,那么我的逻辑将失败。
是否有更好/正确的方法来管理此流程?
【问题讨论】:
【参考方案1】:这里只需要checkout.session.completed
。该事件表示结帐和付款成功。
我会忽略初始的customer.subscription.updated
事件,相反,如果您需要该状态,请在收到checkout.session.completed
事件时使用https://stripe.com/docs/api/subscriptions/retrieve 获取订阅。
【讨论】:
感谢@cjav_dev,我已经按照您刚才的描述进行了重构。看起来还是有点垃圾。如果他们只是在 checkout.session.completed webhook 中返回了完整的订阅对象,那么我就不需要再跨网络旅行了! 我听说了,Checkout 用于订阅以外的许多其他事情,因此包括正确的数据是很棘手的。当并不总是需要时,包括***数据之外的数据也可能会给网络带来一些负担。以上是关于将 Stripe 结帐会话与订阅 webhook 关联的主要内容,如果未能解决你的问题,请参考以下文章
如何在Stripe PHP和webhook中使用好事件,比较收到的付款数量并取消订阅
Stripe - 在创建结帐会话和付款时/之后将元数据添加到连接/目标帐户中