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_key | api管理的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=0d337977b62d9be012d2972eab64d00fHttp 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=1868407a77e9785c6d7c4d1b8a743200javascript 范例
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;
}