Skip to content

API 验证

请求

所有请求基于Https协议,请求头信息中Content-Type 需要统一设置为:'application/x-www-form-urlencoded’

生成api key

在对任何请求进行签名之前,您必须通过 【交易所】-> 【个人中心】->【API管理】创建一个API key。 创建key后,您将获得3个必须记住的信息:

  • API Key

  • Secret Key

API Key 和 Secret Key将由随机生成和提供

产生签名

必要参数

参数说明
api_keyapi管理的key
time当下时间戳
sign经过签名规则产生的字串

Http Method: GET

在 query parameter 内加入必要的参数

api_key=*****&time=1736303665297

将 query parameter 的 key 按照升序排序,并遍历 key 取得 value,将 key 和 value 组合,若 value 为空字串,则key与value不需要组合

api_key*****key1value1key2value2time1736303665297

在 sign 的最后将 Secret Key 接上

api_key*****key1value1key2value2time1736303665297secretkey

将 sign 进行 md5 处理,在 query parameter 加入 sign 和结果

api_key=*****&time=1736303665297&key1=value1&key2=value2&sign=SignResult
范例
api key = APIKEY
secret key = SECRETKEY
timestamp = 1736500909794
request path = /open/api/v2/new_order?pageSize=&page=&symbol=btcusdt

生成待签名的字符串

api_keyAPIKEYsymbolbtcusdttime1736500909794SECRETKEY

签名经过md5处理的结果

0d337977b62d9be012d2972eab64d00f

最后将 sign 加入 query parameter

request path = /open/api/v2/new_order?pageSize=&page=&symbol=btcusdt&api_key=APIKEY&time=1736500909794&sign=0d337977b62d9be012d2972eab64d00f

Http Method: POST

在 request body (form data) 内加入必要的参数

api_key=*****&time=1736303665297

将 request body (form data) 的 key 按照升序排序,并遍历 key 取得 value,将 key 和 value 组合,若 value 为空字串,则key与value不需要组合

api_key*****key1value1key2value2time1736303665297

在 sign 的最后将 Secret Key 接上

api_key*****key1value1key2value2time1736303665297secretkey

将 sign 进行 md5 处理,在 request body (form data) 加入 sign 和结果

api_key=*****&time=1736303665297&key1=value1&key2=value2&sign=SignResult
范例
api key = APIKEY
secret key = SECRETKEY
timestamp = 1736501544686
request path = /open/api/cancel_order_all
form data = 'symbol=btcusdt'

生成待签名的字服串

api_keyAPIKEYsymbolbtcusdttime1736501544686SECRETKEY

签名经过md5处理的结果

1868407a77e9785c6d7c4d1b8a743200

最后将 sign 加入 request body (form data)

form data = 'symbol=btcusdt&time=1736501544686&api_key=APIKEY&sign=1868407a77e9785c6d7c4d1b8a743200

javascript 范例

javascript
const timestamp = new Date().getTime();
const method = 'get';
const timeKey = "time";
const apiKeyKey = "api_key";
const apiKey = "APIKEY";
const secretKey = "SECRETKEY";
let params = new Array();
params.push(generateParameterObject('key1', 'value1'));
params.push(generateParameterObject('key2', ''));
params.push(generateParameterObject(timeKey, timestamp.toString()));
params.push(generateParameterObject(apiKeyKey, apiKey));
let keys = new Array();
let paramMap = new Map();
params.forEach((param)=>{
    let key = param.key;
    let value = param.value;
    if(value=="" || value==null || value==undefined) {
        return;
    }
    keys.push(key);
    paramMap.set(key, value);
});
keys.sort();
let sign = new String();
for(let i=0;i<keys.length;i++) {
    let key = keys[i];
    let value = paramMap.get(key);
    sign+=key+value;
}
sign+=secretKey;
//need to includ the library of CryptoJS
sign=CryptoJS.MD5(sign).toString();
params.push(generateParameterObject('sign', sign));
let parametersString = '?'+params.map((param)=>{
    let key = param.key;
    let value = param.value;
    return `${key}=${value}`;
})
.join("&");
console.log(parametersString);
switch(method) {
	case 'get':
        //TODO append parametersString to the end of the request url
    break;
    case 'post':
        //TODO add parametersString to the body of the request
    break;
}

function generateParameterObject(key, value) {
    let obj = new Object();
    obj.key = key;
    obj.value = value;
    return obj;
}