跳至主要内容

概覽

Zoomex V3 Open API 能讓用戶基於不同的產品構建API模型。

  • 帶單交易: 您必須首先成為交易員才能使用該套接口。

鑒權/認證

信息

請先生成 測試網主網 API KEY。

信息

v1接口的鉴权与v3不一样,在调用时请注意使用对应的加签方式,对应的方式请参考各API的调用demo。

REST接口根URL:

公共參數

需要簽名的接口必須包含以下參數:

  • api_key - api密鑰
  • timestamp - UTC毫秒時間戳
  • sign - 請求參數簽名

另外我們提供可選的 recv_window 參數(單位是毫秒,默認值為5000),來指定請求在多長時間內有效,同時用來防止重放攻擊。

警告

註意,timestamp參數必須符合如下規則:
server_time - recv_window <= timestamp < server_time + 1000
其中server_time是Zoomex服務器時間,您可以通過 Zoomex服務器時間接口獲取.

構建請求

提示

為了幫助診斷高級網絡問題,您可以考慮將cdn-request-id添加到您的請求頭中。對於每個請求,它的值應該是唯一的。

基本步驟:

  1. 時間戳 + API key + [recv_window]+ [queryString(無需排序) | jsonBodyString]

  2. 使用HMAC_SHA256或者RSA_SHA256算法對第1步中拼接的string簽名,並轉換為16進製字符串(HMAC_SHA256) / Base64編碼 (RSA_SHA256),得出sign參數

  3. 添加生成的簽名到HTTP頭當中 注意: GET和POST請求的加密明文是不相同,請參考以下示例

  4. 示例

    import requests
    import time
    import hashlib
    import hmac
    import uuid

    api_key='XXXXXXXX'
    secret_key='XXXXXXXX'
    httpClient=requests.Session()
    recv_window=str(5000)
    url="https://openapi-testnet.zoomex.com"

    def HTTP_Request(endPoint,method,payload,Info):
    global time_stamp
    time_stamp=str(int(time.time() * 10 ** 3))
    signature=genSignature(payload)
    headers = {
    'X-BAPI-API-KEY': api_key,
    'X-BAPI-SIGN': signature,
    'X-BAPI-SIGN-TYPE': '2',
    'X-BAPI-TIMESTAMP': time_stamp,
    'X-BAPI-RECV-WINDOW': recv_window,
    'Content-Type': 'application/json'
    }
    if(method=="POST"):
    response = httpClient.request(method, url+endPoint, headers=headers, data=payload)
    else:
    response = httpClient.request(method, url+endPoint+"?"+payload, headers=headers)
    print(response.text)
    print(Info + " Elapsed Time : " + str(response.elapsed))
    def genSignature(payload):
    param_str= time_stamp+ api_key + recv_window + payload
    hash = hmac.new(bytes(secret_key, "utf-8"), param_str.encode("utf-8"),hashlib.sha256)
    signature = hash.hexdigest()
    return signature

    #POST Create Order
    endpoint="/cloud/trade/v3/order/create"
    method="POST"
    orderLinkId=uuid.uuid4().hex
    params='{"category":"linear","symbol": "BTCUSDT","side": "Buy","positionIdx": 0,"orderType": "Market","qty": "0.001","price": "","timeInForce": "GTC","orderLinkId": "' + orderLinkId + '"}'
    HTTP_Request(endpoint,method,params,"Create")

    #GET history Orders
    endpoint="/cloud/trade/v3/order/history"
    method="GET"
    params='category=linear&symbol=BTCUSDT'
    HTTP_Request(endpoint,method,params,"history")

Response通用數據結構

參數類型說明
retCodenumber成功/錯誤碼
retMsgstring成功/錯誤消息. 成功消息可以是OK,success,SUCCESS
resultObject業務數據體
retExtInfoObject額外信息. 大部分場景下都是{}
timenumber當前時間戳 (毫秒)
{
"retCode": 0,
"retMsg": "success",
"result": {},
"retExtInfo": {},
"time": 1690180896378
}
提示
  • 由于历史原因,查询实时委托单接口的响应体中result对象中的list对象里返回的属性是大写字母开头,对接时请注意!