Skip to content

凍結卡片

凍結一張 active(已啟用) 的虛擬卡。凍結後,該卡在你解凍之前無法用於任何支付/授權。

  • 該凍結會被記錄為 使用者發起的凍結,可透過 解凍卡片 介面撤銷。
  • 僅接受屬於當前 AppID 賬號、且卡型別為 虛擬卡 的卡。
  • 不涉及任何資金變動 —— 凍結/解凍均無手續費,也不影響卡內餘額或你的錢包。

端點

MethodPOST
Path/api/v1/openapi/card/freeze
鑑權HMAC
冪等鍵不需要

無需 Idempotency-Key

凍結天然具備冪等安全性:對已凍結的卡重試會返回 400 card_already_frozen,而不會重複執行。此操作沒有資金影響需要防護,因此無需 Idempotency-Key 請求頭。

請求欄位

欄位型別必填說明
card_idstringcard_<id> —— 必須屬於你的賬號且為虛擬卡
reasonstring可選隨凍結一併記錄的自由文本原因(最長 255 字元)

請求示例

json
{
  "card_id": "card_12345",
  "reason": "suspected fraud on merchant side"
}

響應欄位

欄位型別說明
card_idstring回顯示卡 ID
statusint操作之後的卡狀態 —— 成功時恆為 6(frozen)
status_descstring英文狀態描述 —— frozen
successbool成功時為 true

響應示例

json
{
  "code": 200,
  "message": "OK",
  "data": {
    "card_id": "card_12345",
    "status": 6,
    "status_desc": "frozen",
    "success": true
  }
}

前提與規則

  1. 歸屬 —— card_id 必須屬於已鑑權的賬號,否則返回 404 card_not_found(與"不存在"不作區分,以防列舉探測)。
  2. 卡型別 —— 僅虛擬卡(virtual_l / virtual_p / virtual_v / virtual_r / virtual_g / virtual_a)可透過 OpenAPI 操作。
  3. 狀態 —— 僅 status=2 (active) 的卡可被凍結。pending / failed / closing / closed / 已 frozen 的卡會被拒絕。

常見錯誤

HTTPmessage_key說明
400openapi_invalid_card_idcard_id 缺失/非法
400openapi_card_type_not_supported該卡不是虛擬卡型別
400card_already_frozen卡已處於凍結狀態
400card_status_cannot_freeze卡不是 active,無法凍結
400operation_not_supported該提供商/卡型別不支援凍結
401openapi_invalid_credentials鑑權失敗
404card_not_found卡不存在 / 不屬於當前賬號
500openapi_freeze_card_failed服務端異常

說明

  • 凍結成功後,/card/info 會返回 status=6
  • 如需撤銷,呼叫 解凍卡片。只有使用者發起的凍結(即本介面)才可由你自行解凍;由風控/管理員施加的凍結不可自行解凍。

整合常見問題與最佳實踐

接入前必讀

以下是最容易導致你係統內「卡狀態 / 記賬」與真實狀態不一致的失敗模式。

  1. 同步呼叫、依賴上游提供商,最長約 60 秒。 凍結會內聯呼叫上游髮卡提供商。通常幾秒,但可能達到 10–15 秒,服務端最長允許 60 秒本介面的 HTTP 客戶端超時請設為 ≥ 60 秒;設成 10–30 秒會誘發第 2 條問題。
  2. 客戶端超時 ≠ 凍結失敗。 若提供商已凍結成功、而你的客戶端此時超時(或連線斷開),你會收到錯誤,但卡其實已凍結——形成靜默的狀態錯位。切勿把超時記為「未凍結」。 遇到任何超時/網路錯誤,用 /card/info 對賬:status=6 → 凍結已成功(繼續);status=2 → 未生效(可安全重試)。
  3. 凍結/解凍沒有 webhook。 同步響應是唯一訊號——本操作不會發出任何非同步 card.* webhook。不要等待回撥;以響應(或 /card/info)為準。
  4. Idempotency-Key,但可安全重試。 重試不做去重(每次都會打到提供商),但卡狀態機會保護你:對已凍結的卡再次凍結返回 400 card_already_frozen應把 card_already_frozen 視為「已處於目標狀態」,而非硬錯誤。 優先用「/card/info 對賬」而非盲目重試。
  5. 凍結只攔截新的支付。 它不會撤銷凍結前已授權的交易,也不發生任何資金變動(無手續費、餘額不變)。

採用 MIT 等價條款釋出