錯誤碼與重試指引

API 錯誤碼 重試 HTTP狀態
本文的對象
適用於實作 API 錯誤處理與重試邏輯的開發者。

錯誤回應的結構

{
  "error": {
    "code": "invalid_parameter",
    "message": "store_id is required",
    "param": "store_id",
    "request_id": "req_01HV6N..."
  }
}

request_id 在聯繫支援時為必須。請務必含入錯誤日誌。

HTTP 狀態碼一覽

意義 重試
200 OK成功
201 Created建立成功
204 No Content成功(無本文)
400 Bad Request參數不正確不可(需修正)
401 Unauthorized驗證失敗權杖更新後 1 次
403 Forbidden權限不足、權限範圍不足不可
404 Not Found資源不存在不可
409 Conflict狀態衝突視條件而定
410 Gone已廢止不可
422 Unprocessable驗證錯誤不可
429 Too Many Requests速率限制Retry-After
500 Internal Error伺服器錯誤以指數退避
502 Bad Gateway上游錯誤以指數退避
503 Service Unavailable暫時無法使用以指數退避
504 Gateway Timeout逾時以指數退避

主要錯誤碼

code 因應
invalid_parameter確認 param 欄位的內容
missing_parameter追加必填參數
invalid_token更新權杖
expired_token以刷新權杖更新
insufficient_scope追加必要權限範圍後重新授權
app_not_approved需要 User 系權限範圍的審查申請
resource_not_found確認 ID 是否存在
duplicate_resource更新既有資源或以其他 ID 建立
rate_limited等待 Retry-After
plan_limit_exceeded升級方案

重試指引

可以重試的條件

  • HTTP 狀態為 4295xx
  • 網路逾時、連線錯誤
  • POST 的情況務必設定 Idempotency-Key(為防止重複建立)

重試間隔(指數退避+抖動)

function retryDelay(attempt) {
  // 1, 2, 4, 8, 16秒(最大32秒)
  const base = Math.min(Math.pow(2, attempt), 32);
  // ±25%的抖動以避免集中存取
  const jitter = base * (Math.random() * 0.5 - 0.25);
  return (base + jitter) * 1000;
}

最大重試次數

  • 一般 API:最大 5 次
  • 批次處理:最大 10 次
  • 使用者操作起因:最大 2 次(不讓使用者久等)

429 時優先 Retry-After 標頭

HTTP/1.1 429 Too Many Requests
Retry-After: 30

→ 等 30 秒後再重試

不可重試的情況

  • 4xx(429 除外):請求本身有問題,重試幾次也一樣
  • POST/PUT 未設定 Idempotency-Key 的情況:有重複建立的風險

相關指南

發布日: 2026-04-27 更新日: 2026-07-06
このトピックについて
開発者API
機能の詳細を見る
標籤
API (22) OAuth (15) Android (10) iOS (9) Webhook (8) api (7) oauth (5) POS串接 (4) getting-started (4) 參考 (4)
相關文章