跳至内容
产品与订阅Webhook

订阅 Webhook

订阅会针对每一次生命周期转换发送 webhook 事件,让您的后端无需轮询即可保持同步。本页列出了订阅相关的专属事件及其负载结构。

关于如何注册 webhook 端点、验证签名以及处理正式/测试模式,请参见 Webhook 和开始使用 Webhook——订阅事件使用与订单、退款、争议和兑换事件完全相同的事件信封和投递机制。

金额格式: webhook 负载中的金额以每种货币的最小辅助单位表示。参见支持的货币。

示例事件负载

以下示例展示了订阅成功续订时发送的事件。

json
{
  "id": "a1b2c3d4-e5f6-7g8h-9i0j-k1l2m3n4o5p6",
  "object": "subscription.renewed",
  "createdAt": "2026-07-01T00:00:00Z",
  "test": false,
  "eventData": {
    "type": "subscription",
    "version": "v2",
    "data": {
      "subscription": {
        "id": "subscription_1p4LS47fB1h",
        "object": "subscription",
        "status": "active",
        "test": false,
        "items": [
          {
            "id": "item_1p4LS47fB1i",
            "detail": {
              "product": {
                "price": { "amount": 1000, "currency": "USD" },
                "quantity": 1,
                "label": "Pro Plan (Monthly)",
                "images": ["https://example.com/pro-plan.png"]
              }
            }
          }
        ],
        "interval": { "unit": "MONTH", "count": 1 },
        "currentBillingPeriodEnd": "2026-08-01T00:00:00Z",
        "createdAt": "2026-06-01T00:00:00Z",
        "updatedAt": "2026-07-01T00:00:00Z"
      }
    }
  }
}

负载中始终包含事件发生时订阅的完整当前状态(而非差异)。请使用顶层的 id 进行投递追踪和幂等处理,并使用 eventData.data.subscription.id 将事件与您自己的记录相关联。

事件类型

subscription.trial_started
消费者提供了卡片信息并开始了订阅的试用期。订阅现在为 trialing。
subscription.activated
订阅的首次扣款成功(可能是在无试用期的结账时,也可能是在试用期结束时)。订阅现在为 active。
subscription.renewed
一次周期性续订扣款成功,订阅进入下一个计费周期。
subscription.unpaid
一次周期性(或初始)扣款失败或需要付款。订阅现在为 unpaid,催收流程已开始。
subscription.payment_method_updated
订阅的支付方式已成功更新(新卡片的授权已获批准)。
subscription.plan_change_scheduled
一次递延方案变更已获消费者批准,将在下一个计费周期开始时生效。
subscription.plan_change_canceled
一次先前排期的递延方案变更在生效前被取消。
subscription.plan_changed
一次方案变更(立即或递延)已应用到订阅。负载中的 items 和/或 interval 反映了新方案。
subscription.canceled
订阅已由商户代表消费者取消。之后不会再产生任何扣款。
subscription.expired
订阅因始终无法收款(催收已耗尽,或初始扣款从未成功)而终止。

推荐处理方式

  • subscription.activated 和 subscription.renewed:为当前计费周期授予或延长产品访问权限。
  • subscription.unpaid:可以选择在您自己的产品界面中提醒消费者注意支付问题;Tokenz 已经自动处理了重试和向消费者发送邮件的工作。
  • subscription.payment_method_updated:如果您缓存了支付方式的元数据,请更新您自己的记录;无需其他操作即可保持订阅正常计费。
  • subscription.plan_changed:更新权益以匹配新方案的商品。
  • subscription.canceled 和 subscription.expired:在当前计费周期结束时(或根据您产品的策略立即)撤销访问权限,并更新您自己的订阅状态以反映该终止状态。