【问题标题】:Stripe webhooks events orderStripe webhook 事件顺序
【发布时间】:2015-10-24 20:30:16
【问题描述】:

我目前正在构建一个使用 Stripe 进行支付的节点应用程序。我已经设置了 webhook 并开始工作,因为我想在我的应用程序中创建订阅者,但需要来自 stripe webhook 的响应来存储我的 mongo db 中不同集合中不同事件接收到的数据。

我遇到的问题是 Stripe 发送的事件顺序并不总是相同,为了在文档/集合之间创建关系,我需要按以下顺序触发事件处理程序:

  1. customer.created
  2. customer.card.created(与客户相关)
  3. invoice.created(与客户相关)

就目前而言,2 的事件处理程序可以在 1 之前执行,3 在 2 之前执行,等等。

确保我的处理程序每​​次都以正确的顺序执行的最佳方法是什么?我在想某种承诺。如果是这种情况,node 有什么好的 promise 模块?

【问题讨论】:

  • 节点有 Promise(),但 promise 存在于 ram 中,您可能不希望服务器重启以放弃等待操作。这就是 db 触发器之类的东西有用的地方。

标签: javascript node.js mongodb mongoose stripe-payments


【解决方案1】:

如果事件丢失,您可以拒绝钩子,stripe 稍后会尝试,但如果您希望它快速发生,您可以创建一个小循环,等待最多 10 秒,如果丢失事件到达,则每秒检查一次)。

我在更新计费计划时遇到同样的问题,事件 invoice.updated 在 invoice.created 之前到达 ...

【讨论】:

  • 是的,我遇到了同样的问题,我通过拒绝 webhook 解决了这个问题。但循环也是一个很好的解决方案。
【解决方案2】:

为什么不直接使用条带对象的 id 作为文档的外键呢?不要存储实际的 json 对象,只存储条带 id。当您需要查询文档时,使用条带 id 作为主键来构建您的结果集。

【讨论】:

    猜你喜欢
    • 2019-04-14
    • 2014-05-01
    • 2021-06-11
    • 2021-01-19
    • 2020-01-21
    • 2019-03-03
    • 2023-03-19
    • 2017-10-25
    • 2014-01-12
    相关资源
    最近更新 更多