小编Dav*_*nay的帖子

如何使用 webhooks 升级 Stripe API 版本

我正在回答我自己的问题,但我想我会写这篇文章,因为我在这个问题上遇到了很大的困难,而且我也有兴趣听到替代答案。

环境

我们使用 Stripe 服务器端进行支付(一次性和订阅),并使用 Stripe webhooks 在数据库中记录支付和事件。我们在负载均衡器后面有多个服务器,并且我们使用金丝雀/滚动部署,因此在部署期间并非所有服务器都运行相同的代码版本。

问题

当您想要升级 Stripe API 版本时,通常会发生需要更改代码的重大模型更改(例如新字段或重命名字段)。如果您不经常升级,可能会发生很多变化!咳嗽

滚动部署期间有一个第 22 条军规:

  • 如果等到所有服务器都部署了新代码/库后才更新 Stripe 仪表板中的 Stripe 版本,“新”服务器可能会在部署过程中抛出错误,因为它们正在接收旧 JSON 格式的 Webhook。
  • 如果您在部署所有服务器之前更新 Stripe 版本,那么“旧”服务器可能会抛出错误,因为它们与新的 JSON 格式不兼容。
  • 如果您在部署时更新 Stripe 版本...您将获得两者的混合。

Stripe 允许您设置多个 Webhook URL,每个 URL 都有自己的 API 版本。但所有匹配的事件都会发送到所有 webhook URL(一开始我根本不清楚)。

较新的 Stripe Java 库中还有一种机制,可以在事件模型不匹配时实现您自己的“异常处理程序”,但它需要编写代码并跟踪自上次升级以来的每个模型更改,在我们的例子中是.. 。 太多 :)

此外,对于较新的 Stripe 库,您无法覆盖 Stripe 版本:它现在是硬编码的(这是有道理的)。

stripe-payments

7
推荐指数
1
解决办法
4171
查看次数

标签 统计

stripe-payments ×1