WEEX API 錯誤代碼詳解:快速修復 40001 至 43011

By: WEEX|2026-07-27 02:15:00

大多數 WEEX API 錯誤並非字面意思。40009 API validation failed 幾乎從不意味著您的金鑰無效,通常是因為簽名字串的拼接順序錯誤。在確實存在的交易對上收到 40102 Trading pair configuration does not exist,通常意味著您將合約交易對發送到了現貨網域。字面解讀錯誤代碼只會讓十分鐘的修復工作變成一下午的折騰。

這是一份關於 WEEX API 錯誤代碼的實用參考,涵蓋了實際整合中遇到的問題,並按故障層級而非代碼編號進行分組。下方所有代碼均基於 2026 年 7 月 27 日發佈的 WEEX API 錯誤代碼列表;簽名、時序和速率限制規則基於同期的 WEEX 現貨 API 文件。兩者均會更新,請在發佈前重新核對。

WEEX API 錯誤代碼詳解:快速修復 40001 至 43011

首先進行澄清,因為搜尋結果中常有混淆:本文討論的是 WEEX 加密貨幣交易所 API(api-spot.weex.comapi-contract.weex.com)。它與 Apache Weex 無關,後者是已退役的阿里巴巴移動 UI 框架,共享名稱並返回如 -1001 的錯誤。如果您的堆疊追蹤中提到 WXSDKInstance,則說明您找錯了手冊。

WEEX API 錯誤代碼的分組方式

官方列表是一個扁平的表格。實際上,這些代碼分為七個診斷層級,了解層級即可知道應檢查哪個檔案。這種分組是縮短除錯時間的最快方法,因為 1–4 層通常是您的客戶端問題,而第 7 層則完全不是您的錯誤。

層級代碼實際故障點優先檢查項
1. 標頭缺失40001, 40002, 40003, 40011必需的標頭未從客戶端發出HTTP 客戶端配置
2. 憑證有效性40006, 40009, 40012, 40016金鑰、密碼短語或 2FA 狀態錯誤API 管理頁面
3. 簽名與時間40005, 40007, 40008預雜湊字串、時鐘或 Content-Type簽名函數
4. 帳戶與權限40013, 40014, 40018帳戶凍結、權限缺失、IP 不在白名單金鑰權限
5. 請求格式40102, 40305, 40409, 40704, 40707, 40724, 40912, 40913, 41101參數或交易對與端點不匹配端點規範
6. 訂單引擎42002, 43001–43011餘額或產品限制導致訂單被拒產品限制與餘額
7. 平台與限流429, 40015, 40200, 40725伺服器端問題;重試,無需重寫退避邏輯

實用規則:如果代碼以 400 開頭,懷疑您的請求。如果以 43 開頭,懷疑您的訂單參數。如果是 4294020040015,不要懷疑任何東西,直接退避。

WEEX API 身分驗證錯誤:40001 至 40018

這一區間產生的支援工單最多,但真正的憑證問題最少。其中六個代碼可以透過修復標頭建構方式解決,而非生成新金鑰。

代碼訊息實際原因修復方法
40001The request header 'ACCESS_KEY' cannot be empty標頭被代理或將未知標頭小寫並丟棄的客戶端庫剝離記錄發出的標頭,而非設定的標頭
40002The request header 'ACCESS_SIGN' cannot be empty在請求物件凍結後計算簽名在發送前簽名
40003The request header 'ACCESS_TIMESTAMP' cannot be empty生成了時間戳但未附加附加與簽名時相同的值
40005Invalid ACCESS_TIMESTAMP使用了秒而非毫秒,或 ISO 字串發送 13 位毫秒時間戳
40006Invalid ACCESS_KEY金鑰格式錯誤WEEX API 金鑰以 WEEX 開頭 — 檢查是否誤貼上了金鑰
40007Invalid Content_Type, please use 'application/json'客戶端預設使用 application/x-www-form-urlencoded在 POST 請求中顯式設定 application/json
40008Request timestamp has expired請求超過 30 秒有效期見下一節 — 這與 40005 是不同的錯誤
40009API validation failed簽名不匹配,通常是預雜湊順序錯誤精確重建預雜湊字串
40011The request header 'ACCESS_PASSPHRASE' cannot be empty因文件將其列在最後而忽略了密碼短語在每個私有調用中包含它
40012Incorrect API key/passphrase密碼短語拼字錯誤,或使用了不同子帳戶的金鑰重新生成並重新輸入兩者
40013User account is frozen帳戶級暫停提交支援工單
40014Insufficient permissions金鑰範圍不包含交易或提現使用正確的範圍重新簽發金鑰
40016Users must bind a mobile phone or Google Authenticator未設定 2FA 導致 API 存取受限啟用 Google Authenticator
40018Illegal IP request調用 IP 不在白名單中見下方的基礎網域與 IP 節

有兩個細節值得銘記。WEEX 簽名建構規則 定義預雜湊字串為 timestamp + method.toUpperCase() + requestPath + "?" + queryString + body,使用您的金鑰進行 HMAC-SHA256 加密,然後進行 Base64 編碼。當沒有查詢字串時,? 和查詢字串會被省略。生產環境中常導致失敗的三點:小寫的 get、包含主機的請求路徑,以及 HTTP 庫在簽名後重新序列化的 JSON 正文——鍵順序改變、位元組改變,導致 40009

第二個細節是命名陷阱。錯誤文字引用的標頭名稱帶有底線(ACCESS_KEY, ACCESS_SIGN, ACCESS_TIMESTAMP, ACCESS_PASSPHRASE),而簽名文件中則使用連字號(ACCESS-SIGN, ACCESS-TIMESTAMP)。請複製您正在整合的端點文件中使用的格式,並在首次成功調用時記錄原始網路標頭,不要盲目信任錯誤字串或部落格片段。

40005 與 40008:兩種不同的時間戳錯誤

這兩個錯誤常被混淆,錯誤的修復方式最浪費時間。

40005 Invalid ACCESS_TIMESTAMP 是一個格式問題。該值不是 13 位毫秒時間戳——通常是 Python 中 time.time() 或 PHP 中 time() 返回的 10 位秒級時間戳,或者是 ISO-8601 字串。它在每次請求(包括第一次)時都會持續失敗。

40008 Request timestamp has expired 是一個時鐘或延遲問題。格式正確,但該值與 WEEX 伺服器時間偏差超過 30 秒。請求僅在 30 秒內有效,如果時間戳與 API 伺服器時鐘偏差超過 30 秒,簽名將被拒絕——機器運行過快或過慢都會導致失敗。

症狀可能代碼根本原因修復方法
從第一次調用開始 100% 失敗40005單位或類型錯誤將秒乘以 1000,以整數形式發送
開發環境正常,容器或虛擬機中失敗40008宿主機時鐘漂移,映像中無 NTP同步 NTP,或輪詢公共伺服器時間端點並快取偏移量
僅在負載高或重試時失敗40008時間戳僅生成一次,在重試佇列中重複使用每次重試重新簽名,切勿重放已簽名的請求
僅在長時間運行的批次作業中失敗40008時間戳在作業開始時創建,請求在幾分鐘後發送在發送時生成時間戳

容器內的時鐘漂移是導致“昨天還能用”的整合失敗的最常見原因。如果您無法控制宿主機的 NTP,請在啟動時輪詢伺服器時間端點,儲存差值,並在每次簽名時將其加到本地時鐘上。

-- 價格

--
--
--

訂單拒絕:43001 至 43011 和 42002

身分驗證通過後,失敗會轉移到撮合引擎。這些代碼修復成本低但忽視代價大,因為在緊密迴圈中重試被拒訂單的機器人會觸發限流,從而掩蓋真正的問題。

代碼訊息檢查內容
42002BALANCE NOT ENOUGH帳戶類型中的餘額 — 現貨資金無法覆蓋合約訂單
43001Order does not exist來自不同帳戶類型的訂單 ID,或已成交並清除
43002Order placement failed通用拒絕;記錄完整請求並根據產品限制檢查價格和數量
43004There are no open orders to cancel對空訂單簿執行全撤單;視為良性,非錯誤
43005Exceeds maximum order size該產品的單筆訂單上限
43006Order quantity is less than minimum trading amount與產品端點的 minTradeAmount 進行比較
43007Order quantity exceeds the maximum trading amount同上,上限值
43008 / 43011Current order price cannot be less than 0負數或未解析的價格欄位
43009Current order price exceeds the limit價格超出允許範圍
43010Trade amount cannot be less than 0負數或未解析的數量欄位
40912Single cancellation cannot exceed 50將批次撤單拆分為 50 個一組
40913Either orderId or clientId must be provided提供一個識別碼;兩者都不發送是條件代碼中的隱蔽錯誤
40305client_uid length should not exceed 40 characters修剪您的客戶端訂單 ID 並去除特殊字元

讓資深交易者栽跟頭的是 40704 Only query data for the last three months。透過標準查詢端點無法回溯 90 天以上的交易歷史,因此任何對帳作業都需要在成交發生時進行持久化,而不是假設以後可以重新獲取。

觸發 WEEX API 429 的原因

存取限制規則 預設設定為每秒 10 次請求,除非個別端點另有說明。超過此限制將返回 429 Too Many Requests,錯誤列表中也顯示為“Requesting too frequently”。

該限制的三個特性決定了您的設計方式:

  • 已驗證請求按 API 金鑰計數,未驗證請求按公共 IP 計數。 兩個共享一個金鑰的機器人共享一個額度。同一伺服器上使用不同金鑰的兩個機器人則不共享——但它們的公共市場數據輪詢會共享,因為這是按 IP 計數的。
  • 跨多個交易對的批次訂單計為一次請求。 文件給出的例子是 4 個交易對 × 10 個訂單 = 1 次請求。如果您正在放置網格或重新平衡訂單簿,批次處理不是微優化,而是 40 倍的吞吐量差異。
  • 重試計入次數。429 上立即重試的指數退避將使您持續受限。使用抖動進行退避,並丟棄陳舊訂單,而不是將它們排隊。

實用預算:預留約 60–70% 的限額用於訂單流,其餘用於餘額和倉位輪詢,並盡可能將所有內容移至 WebSocket。透過 REST 獲取訂單簿和行情數據是行為良好的交易機器人被限流的最常見原因。

錯誤的基礎網域與 IP 白名單錯誤

有兩個錯誤報告得非常糟糕,值得單獨列出。

40102 Trading pair configuration does not exist 如果出現在您可以在網站上看到的交易對上,通常不是符號問題。WEEX 將 REST 分為現貨的 https://api-spot.weex.com 和合約的 https://api-contract.weex.com。將合約符號發送到現貨網域會解析為一個在該網域上確實不存在的交易對,該錯誤在技術上準確,但極具誤導性。在檢查符號之前,請先檢查主機。

40018 Illegal IP request 意味著調用 IP 不在金鑰的白名單中。尷尬的是,以下情況會在您不知情的情況下改變它:雲端服務商輪換出口 IP、NAT 閘道故障轉移、VPN 重連,或者在您列入 IPv4 白名單時使用了 IPv6 位址。支援建議是您可以創建一個不綁定 IP 位址的金鑰,對於唯讀市場數據金鑰,這是一個合理的權衡。但對於具有交易或提現權限的金鑰則不然——未綁定的交易金鑰是可以在網際網路任何地方使用的憑證。請固定 IP,並監控變化,而不是刪除控制。

關於 REST 和 WebSocket 介面如何協同工作的更廣泛背景,請參閱 WEEX Wiki 中關於 WEEX 是否支援 API 交易 的說明。

5 分鐘 WEEX API 分診檢查表

在打開支援工單之前,請按順序執行此操作。每一步隔離一個層級,第一次失敗的地方就是您停止尋找的地方。

時間檢查項通過條件失敗表現
0:00在正確網域上調用公共端點,不簽名HTTP 200 並返回數據連線錯誤,或網域錯誤時返回 40102
0:30列印本地毫秒時間與伺服器時間對比漂移在 5 秒以內40005(格式)或 40008(漂移)
1:00記錄您簽名的確切預雜湊字串timestamp + METHOD + path + ?query + body 逐位元組匹配40009
1:30記錄網路上的原始出站標頭所有四個 ACCESS 標頭存在,Content-Type 為 application/json40001, 40002, 40003, 40007, 40011
2:00調用已簽名的唯讀端點,例如帳戶餘額HTTP 20040006, 40012, 40014, 40016, 40018
3:00獲取您交易對的產品端點返回最小和最大交易額40102
4:00放置高於 minTradeAmount 的最小合法訂單訂單被接受42002, 43005, 43006, 43007
4:30檢查過去一分鐘的請求速率持續低於每秒 10 次429

如果每一步都通過但調用仍然失敗,剩餘的代碼(40013, 40015, 40409, 40725, 41101)就是 WEEX 支援明確要求您提交工單處理的代碼。請包含請求時間戳、端點和返回的代碼;這三者是解決工單的關鍵。完整的官方參考是 WEEX API 錯誤代碼列表

錯誤代碼告訴您關於整合的什麼

按層級而非頻率對失敗進行排名。一百個 429 是一個可以在下午調整的吞吐量設計問題。一個間歇性的 40009 是一個會在最糟糕時刻靜默丟棄訂單的簽名錯誤,這是最值得優先修復的問題。在 WEEX API 上保持健康的整合有三個習慣:每次重試都重新簽名,從不信任本地時鐘,並記錄網路請求而不是預期的請求。

準備好建構了嗎?在 WEEX API 頁面創建並設定您的金鑰範圍,從針對公共端點的唯讀金鑰開始,只有在您的分診檢查表運行無誤後,才添加交易權限。

常見問題解答

1. WEEX API 上的錯誤 40009 是什麼意思?

API validation failed 更多是簽名不匹配而非金鑰錯誤。將預雜湊字串重建為 timestamp + METHOD + requestPath + "?" + queryString + body,確認方法為大寫,並確保您的 HTTP 庫在您簽名後沒有重新序列化 JSON 正文。

2. 為什麼我的 WEEX API 請求在本地正常,但在生產環境中失敗並顯示 40008?

幾乎總是宿主機時鐘漂移。簽名的時間戳必須在 WEEX 伺服器時間的 30 秒內,而容器經常在沒有 NTP 的情況下運行。同步宿主機時鐘或在啟動時快取公共伺服器時間端點的偏移量。

3. WEEX API 的速率限制是多少?

預設值為每秒 10 次請求,除非端點另有說明,已驗證調用按 API 金鑰計數,未驗證調用按公共 IP 計數,如 2026 年 7 月 27 日所記錄。超過此限制將返回 429

4. 我可以使用沒有 IP 白名單的 WEEX API 金鑰嗎?

可以——當 40018 Illegal IP request 阻止您時,WEEX 支援建議創建一個不綁定到 IP 位址的金鑰。請將其保留為唯讀金鑰。沒有 IP 限制的交易或提現金鑰可以在任何地方使用,這會顯著降低安全性。

5. 為什麼我收到的 40102 錯誤針對的是一個確實存在的交易對?

您可能調用了錯誤的基礎網域。現貨請求發送到 https://api-spot.weex.com,合約請求發送到 https://api-contract.weex.com;在現貨主機上使用合約符號會產生此錯誤。

6. WEEX API 與 Apache Weex 框架相同嗎?

不。WEEX 交易所 API 是一個 REST 和 WebSocket 交易介面。Apache Weex 是一個已停用的移動 UI 框架,具有不相關的錯誤代碼,如 -1001。搜尋“weex api”會將兩者混淆。

風險提示

加密資產波動劇烈,手動或透過 WEEX API 進行交易可能導致資金部分或全部損失。自動化交易增加了手動交易沒有的故障模式:未處理的錯誤代碼可能導致倉位未平或重複,限流撤單可能在成交發生時失敗,時鐘漂移可能靜默拒絕風險對沖訂單,且沒有 IP 限制或範圍限制的 API 金鑰是攻擊者可以在任何地方使用的憑證。WEEX 上的合約交易涉及槓桿,這會放大收益和損失,並可能比機器人反應更快地觸發清算。請使用最小合法訂單大小進行測試,在錯誤處理得到驗證之前使用唯讀金鑰,在交易邏輯之外設定倉位和損失限制,切勿向不需要的金鑰授予提現權限。此處內容不構成投資建議。

本內容僅供參考,不構成任何金融、投資、法律或稅務建議。文中提及的任何活動、獎勵、線上活動或相關資訊,不應被視為對購買、出售或交易任何加密資產的推薦、招攬或邀請。加密資產具有高波動性,存在價值損失風險。WEEX服務、產品及相關活動的可用性可能因地區而異。用戶在參與前有責任確保符合當地適用法律法規。

猜你喜歡

iconiconiconiconiconiconiconiconicon
客戶服務:@weikecs
商務合作:@weikecs
量化做市商合作:bd@weex.com