【问题标题】:Stripe Webhooks: check if object changedStripe Webhooks:检查对象是否改变
【发布时间】:2020-04-19 09:10:20
【问题描述】:

我正在将 Stripe webhook 集成到 web 应用程序中,以使用 Stripe Billing 实现订阅。 webapp 有前端和后端。

当订阅开始或取消时,前端直接与后端通信,一切都通过同步调用 Stripe API 发生。

例如,要取消订阅,流程如下:

  • 用户点击前端的按钮
  • 前端调用我的应用后端取消子
  • 后端调用stripe api实际取消子
  • 后端更新自己数据库中保存的订阅对象

“问题”来了:几秒钟后,customer.subscription.deleted webhook 调用在我的后端告诉我更新刚刚保存的订阅。 出于性能原因,我想避免双重保存,并且想知道这些条带对象是否具有某种签名或更新计数,以检查它们是否相对于以前的版本发生了变化

我认为仅将 webhook 用于带外更新是很常见的,因此应该支持此用例。

【问题讨论】:

    标签: stripe-payments


    【解决方案1】:

    订阅的每个状态都没有“更新”计数或签名。一种替代方法可能是在处理从您自己的前端到后端的请求时,直接跳过更新数据库中的订阅对象。相反,您可以主要依靠 Stripe 的事件通知来更新您的数据库。这样,您只需更新一次数据库,如果出于某种原因需要直接从 Stripe 仪表板进行更改,这些更改仍会传播到您的后端。

    我还想指出,您应该通过在处理之前检查事件的 ID 来构建您的 webhook 事件处理程序以实现幂等性,因为即使成功确认,Stripe 有时也会多次发送相同的事件。

    https://stripe.com/docs/webhooks/best-practices#event-handling

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-01
      • 2017-10-15
      • 2015-02-19
      相关资源
      最近更新 更多