Skip to content

REST_API_Sign

zhuyangtao edited this page Oct 18, 2019 · 2 revisions

REST API 签名

使用REST API进行交易、查询资产等操作,需要先申请apikey。

限速策略:对于同一个apikey,api请求限速30次/5秒;对于同一个ip,当一次api请求cmd个数超过15个时,会限速1次/1秒,cmd个数不超过15个不做限速。

申请apikey

  • 登陆 https://www.bibox.cc/
  • 账户信息 -> API
  • 根据提示生成 apikey 和 secret,请秘密保存

设置apikey操作权限

使用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 除外),来校验参数或参数值在传输途中是否发生了更改。

  1. 规范要计算签名的请求 因为使用 HMAC 进行签名计算时,使用不同内容计算得到的结果会完全不同。所以在进行签名计算前,请先对请求进行规范化处理。下面以查询资产详情请求为例进行说明
{
    "cmds":[
        {
            "cmd":"transfer/assets",
            "body":{
                "select":1
            }
        }
    ],
    "apikey":"",
    "sign":""
}
  1. 格式化cmds
{
	"cmds": "[{\"cmd\":\"transfer/assets\",\"body\":{\"select\":1}}]", //js用 JSON.stringify()进行格式化
	"apikey":"",
	"sign":""
}
  1. 填写您申请的apikey
{
	"cmds": "[{\"cmd\":\"transfer/assets\",\"body\":{\"select\":1}}]",
	"apikey":"5213595xxxxedca0809axxxxxaba7580xxxxxa6",
	"sign":""
}
  1. 使用您申请的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,便于投资者查看行情、快速交易。

Bibox欧洲站交易所

https://www.bibox.cc

REST API

WebSocket API

Clone this wiki locally