跳至內容

API 金鑰與驗證 ​

每個 Connect API 呼叫都需要在 X-Api-Key 標頭中帶入 API 金鑰。公開訂位 API(/public/v1)不需要金鑰。

可公開金鑰與私密金鑰 ​

您建立的每把 API 金鑰都是一組兩把:

部分前綴用於存取範圍
可公開金鑰pk_您的顧客 App 或網站只限顧客能做的事:據點、登入、菜單、餐廳訂單、商品目錄、付款狀態,以及顧客自己的帳號。
私密金鑰cnct_您自己的伺服器所有端點,包括購物車、網路商店訂單和運送查詢。

請像對待密碼一樣保管私密金鑰。絕對不要把它放進 App 或網頁中。

以下端點需要私密金鑰。使用可公開金鑰會收到 403 PUBLISHABLE_KEY_NOT_ALLOWED:

  • GET /store/shipping/locations
  • GET /store/shipping/delivery-options
  • POST /store/orders
  • /store/cart/… 下的所有端點

金鑰屬於您的組織,可用於該組織任何啟用中的銷售通路。沒有分開的測試金鑰和正式金鑰。

建立金鑰 ​

  1. 以 Admin 或 Manager 身分登入 my.conciar.com。Employee 無法管理金鑰。
  2. 開啟 Management → API Keys,點選 New API Key(清單為空時則點選 Create first key)。
  3. 輸入 Key Name(最多 100 個字元),然後點選 Create Key。
  4. 在 API Key Created 中,用 Copy 按鈕複製可公開金鑰和私密金鑰,然後點選 Done。

金鑰只會顯示一次

Conciar 只儲存每把金鑰的雜湊值。如果遺失金鑰,請建立新的金鑰。

清單會顯示每把金鑰的開頭字元、建立日期,以及最後使用時間。

更換或撤銷金鑰 ​

Conciar 沒有「輪替」按鈕。若要更換金鑰:

  1. 建立新的金鑰。
  2. 把您的 App 或伺服器改用新金鑰。
  3. 撤銷或刪除舊金鑰。

Revoke 會立即停用金鑰;金鑰會以「Revoked」狀態留在清單中,且無法重新啟用。Delete 會把金鑰從清單中移除。兩者都作用於整組金鑰:撤銷可公開金鑰也會一併撤銷其私密金鑰。

從瀏覽器呼叫 ​

Connect API 不會傳送 CORS 標頭,因此瀏覽器會封鎖從其他網域的 JavaScript 發出的呼叫。請從您的伺服器或原生 App 呼叫。網路商店可以透過自己的後端轉送呼叫,這樣也能讓私密金鑰不出現在網頁上。

錯誤 ​

錯誤會以 JSON 回傳。請先檢查 HTTP 狀態碼。

狀態碼內容原因
401{"message": "API key required."}沒有 X-Api-Key 標頭。
401{"message": "Invalid or expired API key."}金鑰錯誤、已撤銷或已刪除。
401{"message": "Unauthenticated."}呼叫顧客端點時沒有有效的 bearer 權杖。
403{"status": false, "message": "PUBLISHABLE_KEY_NOT_ALLOWED"}此端點需要私密金鑰。
404{"message": "X-Sales-Channel header is required."}/store/… 呼叫沒有 X-Sales-Channel 標頭。
404{"message": "…"}通路權杖無法辨識、未啟用,或屬於其他組織。
409{"status": false, "message": "IDEMPOTENCY_KEY_REUSED"}同一個 Idempotency-Key 被用於另一筆訂單,或第一筆訂單仍在建立中(IDEMPOTENCY_KEY_IN_PROGRESS)。
422{"message": "…", "errors": {…}}驗證失敗。其他請求錯誤會回傳 {"status": false, "message": "CODE"}。
429{"message": "Too Many Attempts."}超過速率限制。請等待 Retry-After 中的秒數。
503{"maintenance": true, "message": "…"}該銷售通路處於維護模式。

公開訂位 API 會回傳 {"status": false, "code": "…"},例如 NOT_FOUND、UNAVAILABLE 或 INVALID。

速率限制 ​

回應會帶有 X-RateLimit-Limit 和 X-RateLimit-Remaining。

Connect API

限制計算單位
整個 API 每分鐘 300 個請求IP 位址
POST /app/init:每分鐘 30 次金鑰
POST /store/cart/init:每分鐘 30 次金鑰
其他購物車變更:每分鐘 120 次金鑰
付款狀態:每分鐘 60 次金鑰
下單、支付或取消餐廳訂單:每分鐘 10 次金鑰
餐廳訂單狀態:每分鐘 30 次金鑰
同一家店的所有餐廳訂單:每分鐘 60 筆新訂單,以及 120 次付款或取消呼叫店家
register、otp/request 和 otp/resend:每分鐘 5 次IP 位址
otp/verify:每分鐘 20 次IP 位址
登入驗證碼:每分鐘 1 次、每小時 5 次電子郵件地址

對可公開金鑰而言,「每把金鑰」是指每把金鑰加上每個 IP 位址,因此單一頻繁使用的 App 使用者不會耗盡其他人的額度。

太快要求新的登入驗證碼,會回傳 429 {"status": false, "message": "OTP_COOLDOWN", "retry_after": 42}。

公開訂位 API

限制計算單位
每分鐘 120 次讀取,以及 10 次訂位或變更餐廳加 IP 位址
禮物卡:每分鐘 60 次讀取和 6 次購買餐廳加 IP 位址