-
Notifications
You must be signed in to change notification settings - Fork 0
REST_API_Sign
zhuyangtao edited this page Oct 18, 2019
·
2 revisions
使用REST API进行交易、查询资产等操作,需要先申请apikey。
限速策略:对于同一个apikey,api请求限速30次/5秒;对于同一个ip,当一次api请求cmd个数超过15个时,会限速1次/1秒,cmd个数不超过15个不做限速。
- 登陆 https://www.bibox.cc/
- 账户信息 -> API
- 根据提示生成 apikey 和 secret,请秘密保存
- 登陆 https://www.bibox.cc/
- 账户信息 -> API -> 编辑
- 设置 apikey 权限
基于安全考虑,除行情API 外的 API 请求都必须进行签名运算。一个合法的请求由以下几部分组成
-
apikey 您申请的 apikey。
-
请求方法体 即请求结构中的
cmds,REST API支持批量请求,即cmds可包含多个方法体,每个方法体表示一次独立API请求,每个方法体都有一组用于定义 API 调用的必需参数和可选参数。可以在每个方法的说明中查看这些参数及其含义。 -
签名方法(SignatureMethod) 用户计算签名的基于哈希的协议,此处使用 HmacMD5。
-
签名 签名计算得出的值,用于确保签名有效和未被篡改。请一定注意:签名是对格式化后的
cmds的值进行签名!
例子
{
"cmds": "[{\"cmd\":\"transfer/assets\",\"body\":{\"select\":1}}]",
"apikey":"5213595xxxxedca0809axxxxxaba7580xxxxxa6",
"sign":"6a21e39e3f68b6fc2227c4074c7e6a6c" //用您的apisecret签名cmds的结果
}
API 请求在通过 Internet 发送的过程中极有可能被篡改。为了确保请求未被更改,我们会要求用户在每个请求中带上签名(行情 API 除外),来校验参数或参数值在传输途中是否发生了更改。
- 规范要计算签名的请求 因为使用 HMAC 进行签名计算时,使用不同内容计算得到的结果会完全不同。所以在进行签名计算前,请先对请求进行规范化处理。下面以查询资产详情请求为例进行说明
{
"cmds":[
{
"cmd":"transfer/assets",
"body":{
"select":1
}
}
],
"apikey":"",
"sign":""
}
- 格式化
cmds
{
"cmds": "[{\"cmd\":\"transfer/assets\",\"body\":{\"select\":1}}]", //js用 JSON.stringify()进行格式化
"apikey":"",
"sign":""
}
- 填写您申请的
apikey
{
"cmds": "[{\"cmd\":\"transfer/assets\",\"body\":{\"select\":1}}]",
"apikey":"5213595xxxxedca0809axxxxxaba7580xxxxxa6",
"sign":""
}
- 使用您申请的apisecret签名
cmds
{
"cmds": "[{\"cmd\":\"transfer/assets\",\"body\":{\"select\":1}}]",
"apikey":"5213595xxxxedca0809axxxxxaba7580xxxxxa6",
"sign":"6a21e39e3f68b6fc2227c4074c7e6a6c"
}
计算签名,将以下两个参数传入加密哈希函数:
要进行签名计算的字符串
"[{\"cmd\":\"transfer/assets\",\"body\":{\"select\":1}}]"
进行签名的密钥(apisecret)
bxxxxxxxxf1236222xxxxxxxxx6d5d76d5xxxxxxxxx
得到签名计算结果
6a21e39e3f68b6fc2227c4074c7e6a6c
完整签名例子 (nodejs实现)
let CryptoJS = require("crypto-js");
let param = [
{
"cmd": "transfer/assets",
"body": {
"select": 1
}
}
];
let body = {
"cmds": JSON.stringify(param), //格式化param
"apikey": "your apikey",
"sign": ""
};
let secret = "your secret";
let sign = CryptoJS.HmacMD5(body.cmds, secret).toString();//签名cmds
body.sign = sign;
Bibox欧洲站交易所提供REST API 和 WebSocket API,便于投资者查看行情、快速交易。