条纹Webhooks:检查对象是否已更改

问题描述 投票:0回答:1

我正在将Stripe Webhooks集成到Web应用程序中,以使用Stripe Billing实现订阅。该Web应用程序具有前端和后端。

启动或取消订阅时,前端直接与后端进行通信,并且通过同步调用Stripe API进行所有操作。

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

  • 用户点击前端中的按钮
  • 前端调用我的应用后端以取消订阅
  • 后端调用条纹API实际取消子程序
  • 后端在其自己的数据库中更新已保存的订阅对象

这里是“问题”:几秒钟后,在我的后端出现了customer.subscription.deleted webhook呼叫,告诉我更新刚刚保存的订阅。 出于性能原因,我想避免两次保存,并且想知道这些条带对象是否具有某种签名或更新计数,以检查它们是否相对于先前版本有所更改

我认为仅将Webhooks用于带外更新非常普遍,因此应支持此用例。

stripe-payments stripes
1个回答
0
投票

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

[我还想指出,您应该通过在处理之前检查事件的ID来将webhook事件处理程序构建为幂等的,因为即使成功确认,Stripe偶尔也会多次发送同一事件。

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

© www.soinside.com 2019 - 2024. All rights reserved.