Skip to content

签名认证

CoinTiger-API edited this page Sep 6, 2019 · 10 revisions

目前关于apikey申请和修改,请在“账户 - API管理”页面进行相关操作。其中AccessKey为API 访问密钥,secret为用户对请求进行签名的密钥(仅申请时可见)

重要提示:这两个密钥与账号安全紧密相关,无论何时都请勿向其它人透露。

合法请求结构

基于安全考虑,除行情API 外的 API 请求都必须进行签名运算。一个合法的请求由以下几部分组成:

  • 方法请求地址 即访问服务器地址:api.cointiger.com或者api.cointiger.pro 后面跟上方法名,比如api.cointiger.pro/v2/order 。
  • API 访问密钥(secret) 您申请的 APIKEY 中的secret。
  • 时间戳(Timestamp) 在查询请求中包含此值有助于防止第三方截取您的请求。如:1525515995127 (毫秒)
  • 必选和可选参数 每个方法都有一组用于定义 API 调用的必需参数和可选参数。可以在每个方法的说明中查看这些参数及其含义。 请一定注意:对于GET,POST请求,每个方法自带的参数都需要进行签名运算。
  • 签名 签名计算得出的值,用于确保签名有效和未被篡改。

例:GET 请求

注意:方法自带的签名参数也要明文传过来
GET {Trading_Macro_v2}/order/details?api_key=c9a97adf-7909-444a-bf9e-1471210c4770&time=1525522215129&order_id=4887370&symbol=ethbtc&sign=74d7439cc46211e925f0d
cdd97fa000e75372e87a12e0804989ca575422e8935f68201c47f5d74ba3b1d1d6e39f984c787be3b2f237de12522386f987e27d67f

例:POST 请求 (form-data 方式提交参数)

注意:POST请求 time,sign也放到请求URL参数列表中

{Trading_Macro_v2}/order?api_key=c9a97adf-7909-444a-bf9e-1471210c4770&time=1533548203304&sign=74d7439c
c46211e925f0dcdd97fa000e75372e87a12e0804989ca575422e8935f68201c47f5d74ba3b1d1d6e39f984c787be3b2f237de12522386f987e27d67f

注意:方法自带的签名参数也要明文传过来
{
	"symbol": "tchbtc",
	"price": "10.1",
	"volume": "100.1",
	"side": "BUY",
	"type": "1",
        "time": "1533548203304"
}

签名运算

API 请求在通过 Internet 发送的过程中极有可能被篡改。为了确保请求未被更改,我们会要求用户在每个请求中带上签名(行情 API 除外),来校验参数或参数值在传输途中是否发生了更改。

计算签名所需的步骤:

  1. 规范要计算签名的请求 因为使用 HMAC 进行签名计算时,使用不同内容计算得到的结果会完全不同。所以在进行签名计算前,请先对请求进行规范化处理。下面以查询某订单详情请求为例进行说明
GET {Trading_Macro_v2}/order/details?api_key=c9a97adf-7909-444a-bf9e-1471210c4770&time=1525522215129&order_id=4887370&symbol=ethbtc&sign=74d7439c
c46211e925f0dcdd97fa000e75372e87a12e0804989ca575422e8935f68201c47f5d74ba3b1d1d6e39f984c787be3b2f237de12522386f987e27d67f
  1. 请求方法(GET 或 POST)
GET
  1. 添加小写的访问地址
api.cointiger.com 或者 api.cointiger.pro 
  1. 访问方法的路径
/exchange/trading/api/v2/order/details
  1. sign的生成规则:sign=HMAC-SHA512(param1+value1+param2+value2+secret)
  2. 所有参数的param按字母升序排列,为避免排序问题,param只能使用字母及"",并且""的排序在“z”之前,“”的排 序""在“”之前,生成sign时,需先按param排序后,按上述方法加密,同时替换掉所有空格
symbol:tchbtc
order_id:163560
time:1532859225860
secret:OTQxYzQ3NTYxOWJkNzFkNmFhNDcyMjYxZmJmZDE4ZTU3ZDMyNzVhYWE5MjFmNzU5ZWZhNWRjN2Y2YeMyMmFiMw==

这些参数会被排序为:

order_id:163560
symbol:tchbtc
time:1532859225860
secret:OTQxYzQ3NTYxOWJkNzFkNmFhNDcyMjYxZmJmZDE4ZTU3ZDMyNzVhYWE5MjFmNzU5ZWZhNWRjN2Y2YeMyMmFiMw==

按照以上顺序,将各参数连接组成最终的要进行签名计算的字符串如下:

order_id163560symboltchbtctime1532860279292OTQxYzQ3NTYxOWJkNzFkNmFhNDcyMjYxZmJmZDE4ZTU3ZDMyNzVhYWE5MjFmNzU5ZWZhNWRjN2Y2YeMyMmFiMw==

最终,发送到服务器的 API GET请求应该为:

{Trading_Macro_v2}/order/details?api_key=c9a97adf-7909-444a-bf9e-1471210c4770&time=1525522215129&order_id=4887370&symbol=ethbtc&sign=74d7439c
c46211e925f0dcdd97fa000e75372e87a12e0804989ca575422e8935f68201c47f5d74ba3b1d1d6e39f984c787be3b2f237de12522386f987e27d67f

最终,发送到服务器的 API POST请求应该为:

注意:POST请求 time,sign也放到请求URL参数列表中

{Trading_Macro_v2}/order?api_key=c9a97adf-7909-444a-bf9e-1471210c4770&time=1533548203304&sign=74d7439c
c46211e925f0dcdd97fa000e75372e87a12e0804989ca575422e8935f68201c47f5d74ba3b1d1d6e39f984c787be3b2f237de12522386f987e27d67f

请求参数:示例(form-data 方式提交参数)
{
	"symbol": "tchbtc",
	"price": "10.1",
	"volume": "100.1",
	"side": "BUY",
	"type": "1"
}

通用返回码

注:100001-110000,系统错误保留段

100001:系统异常

100002:系统升级,暂停服务

100003:请求非法

Clone this wiki locally