Skip to main content
通过 Stripe 的 Webhook 端点,把需要人处理的支付事件同步到 Flashduty On-call:
  • 拒付和问询(charge.dispute.*):持卡人向发卡行发起拒付或问询时打开告警,Stripe 结案(胜诉、败诉、问询关闭)时关闭告警
  • 提现失败(payout.failed):打款到银行账户或借记卡失败时打开告警
  • 早期欺诈预警(radar.early_fraud_warning.*):发卡行报告某笔付款可能是盗刷时打开告警,该付款被拒付或全额退款后关闭告警
Stripe 的所有账户都可以创建 Webhook 端点,每个账户最多 16 个。

在 Flashduty On-call


您可通过以下两种方式获取集成推送地址,任选其一即可。

使用专属集成

  1. 进入 Flashduty 控制台,选择 协作空间,打开一个协作空间
  2. 选择 配置 → 集成数据 → 专属集成,点击 新增一个集成
  3. 选择 Stripe,点击 保存
  4. 打开生成的集成卡片,复制 推送地址

使用共享集成

  1. 进入 Flashduty 控制台,选择 集成中心 → 告警事件
  2. 选择 Stripe,填写集成名称
  3. 配置默认路由并选择协作空间;创建后可在 路由 中增加更多规则
  4. 点击 保存,复制生成的 推送地址

在 Stripe 中配置


1

创建事件目的地

需要能管理 Webhook 的 Stripe 角色(如 Administrator 或 Developer)。
  1. 登录 Stripe Dashboard,打开 Workbench 的 Webhooks 页面,点击 Add destination
  2. Events from 选择 Your account。如果您是 Connect 平台、要接收已连接账户的事件,选择 Connected accounts(两种都需要时各建一个)
  3. API version 保持默认即可。如果页面要求选择事件格式,选择 Snapshot:Thin 格式不含对象内容,Flashduty 无法解析
2

选择事件

选择下列事件:订阅其他事件类型(例如 charge.succeeded)时,Flashduty 返回成功但不生成告警。建议只订阅上表中的事件。
3

填写推送地址

  1. 点击 Continue,目的地类型选择 Webhook endpoint
  2. Endpoint URL 填写 Flashduty 集成的完整推送地址
  3. 可以填写 Destination name,然后点击 Create destination。端点详情页上的签名密钥(whsec_ 开头)Flashduty 不使用,无需复制
测试环境(Sandbox 或 Test mode)和正式环境(Live mode)的 Webhook 端点相互独立。两边都要接入时,分别在各自的环境中创建端点,可以填写同一个推送地址。
4

测试

端点详情页的 Send test events 按钮只显示 Stripe CLI 的用法,本身不发送事件。在测试环境中用下面任一方式产生真实的测试事件:
  • 使用 Stripe CLI 执行 stripe trigger charge.dispute.created
  • 用测试卡号 4000000000000259 付款,付款成功后会产生一笔欺诈类拒付;用 4000000000005423 付款会产生早期欺诈预警
  • 在拒付的证据中填写 winning_evidence(或 losing_evidence)并提交,拒付以胜诉(或败诉)结案,Flashduty 关闭告警。对产生早期欺诈预警的付款全额退款,Stripe 发送 actionable 为 false 的 radar.early_fraud_warning.updated,Flashduty 关闭告警
  • payout.failed 需要一次失败的提现。测试环境不接受在自身的提现设置中添加测试银行账户;Connect 平台可以从一个测试已连接账户提现,该账户的银行账号填 000111111116,并由接收 Connected accounts 事件的端点接收
测试事件的 livemode 为 false,Flashduty 照常生成告警,并打上标签 livemode=false。
5

开启超时自动关闭

提现失败没有恢复事件;早期欺诈预警如果一直没有被拒付或退款,也不会再有通知。请在接收这些告警的协作空间中开启 超时自动关闭,建议超时时长 72 小时,计时起点选择 故障触发。故障关闭时,关联的告警一并关闭。拒付从创建到结案通常要 2 到 3 个月。超时自动关闭同样会关闭仍在进行的拒付故障。如果希望拒付告警一直保持到 Stripe 结案,可以使用共享集成,按标签 object 把 dispute 路由到一个不开启超时自动关闭的协作空间。

推送内容


Stripe 每次推送一个事件(Event 对象),事件内容在 data.object 中: 每条告警还带有标签 source=stripe。标题示例:Stripe dispute needs response: fraudulent、Stripe inquiry under review: general、Stripe payout failed: account_closed、Stripe early fraud warning: made_with_stolen_card。

Alert Key


Flashduty 用 data.object.id(拒付、提现或预警本身的 ID)作为 Alert Key,不使用事件 ID:
  • 同一笔拒付的 created、funds_withdrawn、updated、closed 事件落在同一条告警上,结案后告警关闭
  • 同一条早期欺诈预警的 created 和 updated 事件落在同一条告警上
  • 同一笔付款上的拒付和早期欺诈预警是两条告警
  • Stripe 投递失败会重试(正式环境最长 3 天),偶尔也会为同一变化发送两个事件;这些事件都合并到原告警,不会生成重复告警

状态和告警等级


会生成告警的事件缺少 data.object.id 时,请求会被拒绝。

常见问题


部分拒付无法申诉(例如 Cartes Bancaires 卡组织的拒付),Stripe 在通知时就已将其以 lost 结案。这类拒付没有需要处理的动作,Flashduty 按恢复事件处理,不打开告警。它们仍然会出现在 Stripe Dashboard 的拒付列表中。
只在正式环境(Live mode)中创建端点即可。按 Stripe 文档,Connect 平台选择 Connected accounts 的正式环境端点也会收到已连接账户的测试事件,这些告警带有标签 livemode=false,可以在共享集成的路由中按该标签把它们分到别的协作空间。
不需要。Flashduty 通过推送地址中的 integration_key 识别集成,不校验 Stripe-Signature 签名。请像保管密钥一样保管推送地址。

排查问题


  • Stripe 显示投递失败(4xx):确认推送地址完整(包含 integration_key),并且事件格式为 Snapshot
  • 投递成功但没有告警:确认事件类型在上表中;其他事件类型不生成告警
  • 拒付结案后告警没有关闭:确认端点订阅了 charge.dispute.closed
  • 查看投递记录:在 Workbench 的 Webhooks 中选中端点,打开 Event deliveries 标签页,可以看到每次投递的状态码,并可重新发送