stripe-payments - 如何识别 Stripe webhooks 类型?

标签 stripe-payments webhooks

我正在使用 Stripe,我需要了解如何仅处理 Stripe 在幕后生成的 Webhook。当我的服务器向 Stripe 发送某些内容(新订阅、新个人费用)时,Stripe 将生成通过我提供的 Webhooks 发送的事件。好吧,我不需要处理这些,因为它会造成困惑。我只想在以下情况下处理 Stripe 生成的 Webhooks:订阅续订失败、通过 Stripe 仪表板手动修改、仪表板中生成退款等)。

我查看了生成的事件,但找不到任何与我的 API 调用生成的事件或幕后生成的事件有什么不同的内容。

我有什么遗漏吗?

更新
- API 调用:事件有一个request id
- 幕后 Stripe :事件有 null request_id
- Stripe 仪表板:事件有一个请求 ID (这仍然是一个问题)

如果我丢弃所有不为空的 Webhook 事件,我也会丢弃 Stripe 仪表板事件。我需要在幕后处理 Stripe 以及 Stripe 仪表板生成的事件。

最佳答案

首先,Stripe目前不支持识别传入的webhook事件类型。查看仪表板,我确实可以看到是什么引发了该事件(API、仪表板或自动),但 Stripe 的人说他们不支持它。

但是,有一个解决方法。对于任何为此苦苦挣扎的人,我将描述我所做的事情。 Stripe 自动生成的事件很容易区分。它包含一个 null request 字段。任何其他类型的事件都会有一个请求 ID(例如:re_123h2kj18321hjk3218)。问题仍然在于区分 API 和 Stripe Dashboard 生成的请求。因此,解决方案是捕获 API 生成的每个请求的请求 id。每当 Webhook 到达您的服务器时,您都会检查请求字段是否不在存储系统(数据库等)中,或者请求是否为空。这意味着该事件是由仪表板生成的或由 Stripe 自动生成(订阅续订)。

步骤:

  • Hook 到 Stripe 提供的 CurlClient。扩展该类并 重写 request() 方法。请求方法返回 Stripe 服务器生成的响应。捕获header 响应将包含 Request-id。将其存储在您的 存储(在我的例子中是数据库)
  • 在您的配置文件中,您需要指定 Stripe 应使用您自己的 CurlClient。 ApiRequestor::setHttpClient(new CurlClient()); (我也命名了我的 CurlClient,但你可以随意命名)
  • 当 Webhook 到达时,您可以通过三个选项来识别类型:
    1. 自动:如果事件有 request=null
    2. 控制面板:请求不为 null 并且请求不在您的存储中
    3. API:您只剩下一种情况。该请求不为空,但存在于您的数据库中

正如您所看到的,要完成一些非常简单的事情需要做很多工作。 Stripe 需要做的就是在其 Webhook 事件名称中提供另一个字段,例如带有三个选项(api、自动、仪表板)的 request-type。他们已经有了这个版本,但不允许它在 webhook 事件中显示。

关于stripe-payments - 如何识别 Stripe webhooks 类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35679217/

相关文章:

python - 如何在 Python 中接收 Github Webhooks

ruby-on-rails - 平衡支付 - 使用 Webhooks 的回调

javascript - 如何通过 webhook 将 json 格式的字符串作为有效负载传递给 iron.io worker?

Angular 业力测试 - ReferenceError : Stripe is not defined

ios - 应用程序创建了 Stripe 客户,但由于 "no such customer"而无法获取临时 key

post - 尝试注册 Google Drive webhook 时出现 "Required parameter: pageToken"错误

node.js - 如何使用 kommunicate.io 从 Dialogflow 机器人触发自定义欢迎消息?

javascript - strip 错误: unable to perform color detection

stripe-payments - Stripe POST 操作的正文格式

php - Stripe 在 PHP 中创建客户和经常性费用