Recur Docs

Webhook 端點(Webhook Endpoint)代表一個接收 Recur 事件通知的 URL 設定。Webhooks API 為唯讀 API,用於以程式查詢端點設定與簽章密鑰;建立與編輯端點請透過 Recur 後台的「設定」→「Webhooks」,詳見設定 Webhook 端點

所有 Webhooks API 端點都需要 Secret Key 認證,僅限後端使用。單筆查詢會回傳簽章密鑰(secret),請務必妥善保管。

Webhook 端點物件

{
  "object": "webhook",
  "id": "wh_xxxxx",
  "url": "https://your-domain.com/api/webhooks/recur",
  "events": ["subscription.activated", "invoice.paid"],
  "is_active": true,
  "created_at": "2025-01-01T00:00:00.000Z",
  "livemode": false
}

欄位說明

欄位類型說明
objectstring固定為 "webhook"
idstringWebhook 端點 ID
urlstring接收事件的 HTTPS URL
eventsstring[]訂閱的事件類型(完整清單見事件參考
is_activeboolean端點是否啟用(停用的端點不會收到事件)
secretstring簽章密鑰(whsec_ 開頭,僅單筆查詢回傳),用於驗證事件簽章
created_atstring建立時間(ISO 8601)
livemodeboolean是否為正式環境

Webhook 端點依環境隔離:Sandbox 端點只會收到 Sandbox 事件,Production 端點只會收到 Production 事件。


列出 Webhook 端點

取得組織的所有 Webhook 端點,依建立時間由新到舊排序。列表回應不包含 secret

端點

GET /webhooks

回應範例

{
  "object": "list",
  "data": [
    {
      "object": "webhook",
      "id": "wh_xxxxx",
      "url": "https://your-domain.com/api/webhooks/recur",
      "events": ["subscription.activated", "invoice.paid"],
      "is_active": true,
      "created_at": "2025-01-01T00:00:00.000Z"
    }
  ],
  "livemode": false
}

程式碼範例

const response = await fetch('https://api.recur.tw/v1/webhooks', {
  headers: {
    'Authorization': `Bearer ${process.env.RECUR_SECRET_KEY}`,
  },
});

const { data } = await response.json();

for (const webhook of data) {
  console.log(`${webhook.url} (${webhook.is_active ? '啟用' : '停用'})`);
}

取得 Webhook 端點

以 ID 取得單一 Webhook 端點的完整資訊,包含簽章密鑰。

端點

GET /webhooks/:id

回應範例

{
  "object": "webhook",
  "id": "wh_xxxxx",
  "url": "https://your-domain.com/api/webhooks/recur",
  "events": ["subscription.activated", "invoice.paid"],
  "is_active": true,
  "secret": "whsec_abc123def456...",
  "created_at": "2025-01-01T00:00:00.000Z",
  "livemode": false
}

端點不存在時回傳 404 not_found

secret 用於驗證 Webhook 請求簽章,外洩會讓攻擊者得以偽造事件。請只在後端存取此端點,切勿將回應直接傳給前端。


下一步

Last updated on