跳到主要內容

認證

使用者指引:HTTP 和WebSocket 介面認證流程

以下是CoinEx 交易所HTTP 和WebSocket 介面認證流程的使用者指引。

步驟一:取得API 金鑰

警告

請不要在任何網路請求中直接傳輸在步驟一中取得到的secret_key,這樣可能會導致您的資產收到損失。

  1. 登入CoinEx。導航至API 管理頁面。建立一個新的API 或使用現有的API。
  2. 從已經建立的API 記錄中取得access_idsecret_key

步驟二:產生認證參數

HTTP 產生方法

  1. 依照method + request_path + body(optional) + timestamp 的格式將資料拼接成字串,範例如下:
prepared_str = "GET"+"/v2/spot/pending-order?market=BTCUSDT&market_type=SPOT&side=buy&page=1&limit=10"+"1700490703564"

如上述例子所示:

  • method 表示HTTP 請求方法,字母大寫,如: GET/POST
  • request_path 表示請求的介面的路徑位址,包含請求參數(query_string),如:/v2/spot/pending-order?market=BTCUSDT&market_type=SPOT&side=buy&page=1&limit=10。如果沒有請求參數(query_string),只需要包含請求路徑,如: /v2/spot/pending-order
  • body 表示HTTP 請求體,如上述範例中,在某些方法(GET/DELETE)中沒有請求體,則可以省略。請求體範例如下:'{"market": "BTCUSDT", "type": "buy", "amount": "0.001", "price": "10000"}'
  • timestamp 表示為請求發出的時間,值為X-COINEX-TIMESTAMP中的取值
  1. secret_key 作為key,對上面字串進行HMAC-SHA256即簽名,轉換為16進位小寫,長度為64位,偽代碼如下:
signed_str = hmac.new(bytes(secret_key, 'latin-1'), msg=bytes(prepared_str, 'latin-1'), digestmod=hashlib.sha256).hexdigest().lower()

WebSocket 生成方法

  1. timestamp 作為字符串,範例如下:
prepared_str = "1700490703564"
  1. secret_key 作為key,對上面字串進行HMAC-SHA256即簽名,轉換為16進位小寫,長度為64位,偽代碼如下:
signed_str = hmac.new(bytes(secret_key, 'latin-1'), msg=bytes(prepared_str, 'latin-1'), digestmod=hashlib.sha256).hexdigest().lower()

步驟三:建置認證請求

HTTP 認證請求

在建構HTTP 認證請求的時候,需要加入以下公共參數:

  • X-COINEX-KEY。即在步驟一中取得的access_id
  • X-COINEX-SIGN。即在步驟二中產生的signed_str
  • X-COINEX-TIMESTAMP. 即在存取指南中提到的指示請求發出時間的參數。

範例如下:

GET /assets/spot/balance HTTP/1.1
Host: api.coinex.com
-H 'X-COINEX-KEY: XXXXXXXXXX' \
-H 'X-COINEX-SIGN: XXXXXXXXXX' \
-H 'X-COINEX-TIMESTAMP: 1700490703564

WebSocket 認證請求

在存取需要認證的WebSocket 介面之前,需要呼叫方法名為server.sign 的認證方法,可透過此連結查看介面詳情。

其中對應的請求欄位如下:

  • access_id。即在步驟一中取得的access_id
  • signed_str。即在步驟二中取得到的signed_str
  • timestamp。當前的毫秒級時間戳記。

範例如下:

{
"id": 15,
"method": "server.sign",
"params": {
"access_id": "XXXXXXXXXX",
"signed_str": "XXXXXXXXXX",
"timestamp": 1234567890123
}
}