錯誤碼與重試指引
API
錯誤碼
重試
HTTP狀態
本文的對象
適用於實作 API 錯誤處理與重試邏輯的開發者。
適用於實作 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 狀態為
429或5xx - 網路逾時、連線錯誤
- 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 (22)
OAuth (15)
Android (10)
iOS (9)
Webhook (8)
api (7)
oauth (5)
POS串接 (4)
getting-started (4)
參考 (4)
相關文章
-
店鋪資訊 API(Store Information API)的使用方式說明如何以 REST API 取得、更新店鋪的基本資訊(店鋪名稱、店鋪類別、聯絡方式、地址)。可從員工應用程式等以權杖驗證的用戶端實作店鋪資訊的編輯畫面。
-
店內媒體顯示器 API(Display API)的使用方式ReceiptRoller 店內 Android 顯示器 API(/api/v1/displays/*)的概要,以及配對、心跳、播放清單取得、播放實績回報的步驟彙整。這是為在 Android 電子看板或店內數位看板端末播放媒體循環而實作應用程式的入門指南。
-
交易一覽 API(Transactions API:POS+OMS 整合摘要)的使用方式ReceiptRoller 的 Transactions API 是將收銀營業額(PosTransactions)與銷售管理訂單(OmsOrders)整合為單一摘要的唯讀 API。在 Android/iOS 應用程式中一覽顯示「整個商業帳戶的交易」時,即為入口。
-
營業額實績 API(Sales API)的使用方式彙整 ReceiptRoller 營業額實績 API(/api/v1/sales/*)的概要,以及依商業帳戶、店鋪、POS 端末、期間的篩選方法。這是一份涵蓋實際回應結構(KpiValue 巢狀型)與 averageTicket、權杖有效期限(8 小時)在內,為在 Android/iOS 行動應用程式或伺服器串接實作營業額儀表板的入門指南。
-
銷售管理 API(Orders / OMS API)的使用方式這是使用 ReceiptRoller 銷售管理 API(/api/v1/orders)對商業帳戶底下的訂單進行 CRUD 操作的指南。彙整訂單的建立、更新、狀態轉移(確認、處理中、取消)、刪除,以及適用於 Android/iOS 應用程式或伺服器串接的流程。