Webhook 参考

事件负载结构与 Webhook 配置

Webhook 参考

当 Umbrella 中发生事件时,Webhook 会向您的端点发送 HTTP POST 请求,因此您无需轮询 API 来获取变更。

设置

  1. 前往 仪表板 > 设置 > 集成 > Webhook
  2. 点击 添加 Webhook 端点
  3. 输入您的 HTTPS 端点 URL
  4. 选择您要接收的事件
  5. 保存并妥善保管签名密钥(仅显示一次)

您的端点必须接受 POST 请求,在 30 秒内返回 2xx 状态码,并接受 application/json。

事件类型

保单事件

事件说明
policy.created顾客购买了保修
policy.activated保单状态变为生效
policy.expired保单已到结束日期
policy.cancelled保单已取消(退款或商家操作)
policy.voided保单已作废(订单取消或拒付)

索赔事件

事件说明
claim.submitted顾客提交了索赔
claim.approved商家批准了索赔
claim.denied商家拒绝了索赔
claim.resolved索赔已全部处理完毕
claim.evidence_uploaded索赔已附上证据

注册事件

事件说明
registration.submitted已提交产品注册
registration.approved注册已批准
registration.denied注册已拒绝

保修事件

事件说明
warranty.created已创建新的保修计划
warranty.updated保修计划已修改
warranty.activated保修计划已启用
warranty.deactivated保修计划已停用

负载结构

每个 Webhook 都采用以下封装格式:

{
  "id": "evt_a1b2c3d4e5f6",
  "type": "claim.submitted",
  "timestamp": "2025-03-15T14:30:00.000Z",
  "apiVersion": "1.3.9",
  "orgId": "org_xyz789",
  "data": { ... }
}
  • id — 唯一事件 ID(用于去重)
  • type — 事件类型
  • timestamp — 事件发生的时间
  • data — 特定于事件的负载,包含相关资源的详细信息(保单、索赔、注册等)

签名验证

每个请求都包含 X-Umbrella-Signature 请求头,其值为请求体的 HMAC-SHA256 哈希。请在处理事件之前先进行验证。

const crypto = require('crypto');

function verifyWebhookSignature(payload, signature, secret) {
  const expected = crypto
    .createHmac('sha256', secret)
    .update(payload, 'utf8')
    .digest('hex');
  return crypto.timingSafeEqual(
    Buffer.from(signature),
    Buffer.from(expected)
  );
}

重试策略

投递失败(非 2xx、超时、连接错误)时,系统会按指数退避方式重试:

尝试延迟
第 2 次1 分钟
第 3 次5 分钟
第 4 次30 分钟
第 5 次2 小时
第 6 次6 小时
第 7 次(最后一次)12 小时

连续 7 次尝试失败后,该投递会被标记为失败。若返回 410 Gone 响应,该端点将被永久停用。

测试

  1. 前往 仪表板 > 设置 > 集成 > Webhook
  2. 点击您的端点,然后点击 发送测试事件
  3. 选择一种事件类型并查看投递结果

Webhook 详情页面还会显示最近投递的日志,包括状态码和耗时。

注意 请立即返回 200,并以异步方式处理事件,以免超时。由于重试可能会多次投递同一事件,请使用事件的 id 进行去重。

相关内容

预约演示

了解 myUmbrella 如何革新您的保修计划

选择时间

为您的专属演示选择一个方便的时间

ESC

输入关键词,搜索全部内容

未找到结果

请尝试其他搜索词