You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Spring(Java)后端识别Stripe Webhook事件的来源?

实现Stripe事件来源识别(Spring Java后端)

完全可以实现这个需求,核心是利用Stripe Event对象自带的字段来区分事件来源,具体实现如下:

关键字段说明

Stripe的Event对象内置了两个核心字段用于判断来源:

  • createdBy:当事件由Stripe控制台操作触发时,该字段会返回控制台用户的标识信息;API调用或自动触发的事件中,该字段为null。
  • request:存储触发事件的API请求ID。Stripe自动触发的事件(如定期发票生成、订阅自动续费)中该字段为null;API调用或控制台操作触发的事件会包含对应的请求ID。

来源判断逻辑

  • 若event.getCreatedBy() != null:事件来自控制台操作
  • 若event.getRequest() != null && event.getCreatedBy() == null:事件来自API调用
  • 若event.getRequest() == null:事件来自Stripe自动触发

整合到现有代码

将来源判断逻辑加入你现有的Webhook处理方法即可:

@EventListener
@Async
public void handleStripeWebhook(StripeWebhookEvent stripeWebhookEvent) throws EntityNotFoundException, StripeException {
   final var event = stripeWebhookEvent.event();
   final var stripeObject = stripeWebhookEvent.stripeObject();

   // 识别事件来源
   String eventSource;
   if (event.getCreatedBy() != null) {
       eventSource = "控制台操作";
   } else if (event.getRequest() != null) {
       eventSource = "API调用";
   } else {
       eventSource = "Stripe自动触发";
   }
   // 可将eventSource写入日志、数据库或用于业务逻辑判断

   Invoice invoice;
   Subscription subscription;
   switch (event.getType()) {
      case "invoice.created":
      // ... 原有业务逻辑
   }
}

注意事项

确保你的Stripe Java SDK使用的是最新稳定版本,createdBy字段是Stripe后续版本新增的,旧版本可能不支持该字段。

内容的提问来源于stack exchange,提问作者Florian Baierl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 19:14:59