WEEX API 錯誤代碼詳解:快速修復 40001 至 43011
大多數 WEEX API 錯誤並非字面意思。40009 API validation failed 幾乎從不意味著您的金鑰無效,通常是因為簽名字串的拼接順序錯誤。在確實存在的交易對上收到 40102 Trading pair configuration does not exist,通常意味著您將合約交易對發送到了現貨網域。字面解讀錯誤代碼只會讓十分鐘的修復工作變成一下午的折騰。
這是一份關於 WEEX API 錯誤代碼的實用參考,涵蓋了實際整合中遇到的問題,並按故障層級而非代碼編號進行分組。下方所有代碼均基於 2026 年 7 月 27 日發佈的 WEEX API 錯誤代碼列表;簽名、時序和速率限制規則基於同期的 WEEX 現貨 API 文件。兩者均會更新,請在發佈前重新核對。

首先進行澄清,因為搜尋結果中常有混淆:本文討論的是 WEEX 加密貨幣交易所 API(api-spot.weex.com 和 api-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 開頭,懷疑您的訂單參數。如果是 429、40200 或 40015,不要懷疑任何東西,直接退避。
WEEX API 身分驗證錯誤:40001 至 40018
這一區間產生的支援工單最多,但真正的憑證問題最少。其中六個代碼可以透過修復標頭建構方式解決,而非生成新金鑰。
| 代碼 | 訊息 | 實際原因 | 修復方法 |
|---|---|---|---|
| 40001 | The request header 'ACCESS_KEY' cannot be empty | 標頭被代理或將未知標頭小寫並丟棄的客戶端庫剝離 | 記錄發出的標頭,而非設定的標頭 |
| 40002 | The request header 'ACCESS_SIGN' cannot be empty | 在請求物件凍結後計算簽名 | 在發送前簽名 |
| 40003 | The request header 'ACCESS_TIMESTAMP' cannot be empty | 生成了時間戳但未附加 | 附加與簽名時相同的值 |
| 40005 | Invalid ACCESS_TIMESTAMP | 使用了秒而非毫秒,或 ISO 字串 | 發送 13 位毫秒時間戳 |
| 40006 | Invalid ACCESS_KEY | 金鑰格式錯誤 | WEEX API 金鑰以 WEEX 開頭 — 檢查是否誤貼上了金鑰 |
| 40007 | Invalid Content_Type, please use 'application/json' | 客戶端預設使用 application/x-www-form-urlencoded | 在 POST 請求中顯式設定 application/json |
| 40008 | Request timestamp has expired | 請求超過 30 秒有效期 | 見下一節 — 這與 40005 是不同的錯誤 |
| 40009 | API validation failed | 簽名不匹配,通常是預雜湊順序錯誤 | 精確重建預雜湊字串 |
| 40011 | The request header 'ACCESS_PASSPHRASE' cannot be empty | 因文件將其列在最後而忽略了密碼短語 | 在每個私有調用中包含它 |
| 40012 | Incorrect API key/passphrase | 密碼短語拼字錯誤,或使用了不同子帳戶的金鑰 | 重新生成並重新輸入兩者 |
| 40013 | User account is frozen | 帳戶級暫停 | 提交支援工單 |
| 40014 | Insufficient permissions | 金鑰範圍不包含交易或提現 | 使用正確的範圍重新簽發金鑰 |
| 40016 | Users must bind a mobile phone or Google Authenticator | 未設定 2FA 導致 API 存取受限 | 啟用 Google Authenticator |
| 40018 | Illegal 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
身分驗證通過後,失敗會轉移到撮合引擎。這些代碼修復成本低但忽視代價大,因為在緊密迴圈中重試被拒訂單的機器人會觸發限流,從而掩蓋真正的問題。
| 代碼 | 訊息 | 檢查內容 |
|---|---|---|
| 42002 | BALANCE NOT ENOUGH | 帳戶類型中的餘額 — 現貨資金無法覆蓋合約訂單 |
| 43001 | Order does not exist | 來自不同帳戶類型的訂單 ID,或已成交並清除 |
| 43002 | Order placement failed | 通用拒絕;記錄完整請求並根據產品限制檢查價格和數量 |
| 43004 | There are no open orders to cancel | 對空訂單簿執行全撤單;視為良性,非錯誤 |
| 43005 | Exceeds maximum order size | 該產品的單筆訂單上限 |
| 43006 | Order quantity is less than minimum trading amount | 與產品端點的 minTradeAmount 進行比較 |
| 43007 | Order quantity exceeds the maximum trading amount | 同上,上限值 |
| 43008 / 43011 | Current order price cannot be less than 0 | 負數或未解析的價格欄位 |
| 43009 | Current order price exceeds the limit | 價格超出允許範圍 |
| 43010 | Trade amount cannot be less than 0 | 負數或未解析的數量欄位 |
| 40912 | Single cancellation cannot exceed 50 | 將批次撤單拆分為 50 個一組 |
| 40913 | Either orderId or clientId must be provided | 提供一個識別碼;兩者都不發送是條件代碼中的隱蔽錯誤 |
| 40305 | client_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/json | 40001, 40002, 40003, 40007, 40011 |
| 2:00 | 調用已簽名的唯讀端點,例如帳戶餘額 | HTTP 200 | 40006, 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服務、產品及相關活動的可用性可能因地區而異。用戶在參與前有責任確保符合當地適用法律法規。
猜你喜歡

巴基斯坦交易者可選資產範圍最廣的加密貨幣交易所是哪家?

美光股票 (MU):價格、前景及購買方式

SanDisk 股票 (SNDK):價格、展望及購買方式

什麼是 ISOR 幣(伊朗戰略石油資源)?事實、風險及交易地點

2026年能賺錢的Telegram遊戲:哪些發行了代幣,上市後發生了什麼

什麼是 ANSEM(The Black Bull)?暴漲故事、60%錢包與風險

Nike 股價與中國銷售崩盤:營收下降 30% 與裁撤數千家經銷商的真正訊號

耐吉 (NKE) 股價較 52 週高點下跌 51%:當前水平是否值得買入?

如何投資 XST 幣:購買 XSolut 前真正需要完成哪些盡職調查

8月27日前的MRVL股票:決定財報表現的關鍵數字

Recordati股票(REC):Respighi BidCo要約收購、時間表,以及什麼都不做會怎樣

ZKsync(ZK)代幣釋放解析:流通供應量、解鎖時間表與市場影響

美國零售銷售數據遜於預期,SPYB 價格仍維持在紀錄高位附近

Evercore 稱 SanDisk 股價有 95% 上行空間:2800 美元目標價的真正要求

如何出售 XST 幣:何時及如何退出 XSolut 部位

如何將 BTC 轉換為 USD:支付通道決定資金到帳時間

什麼是 XST 代幣?在 76 萬美元流動性基礎上的 5400 萬美元估值







