API KEY 接口认证

为了方便接入,我们提供了一些语言的SDK供参考

本章节主要为验证的细节分以下四个方面:

  • 生成API Key
  • 发起请求
  • 签名
  • 时间戳

1.生成API Key

在对任何请求进行签名之前,您必须通过BitMart网站创建一个API Key。创建API Key后,您将获得3个必须记住的信息:

  • Access Key
  • Secret Key
  • Memo

Access Key和Secret Key将由BitMart随机生成和提供,Memo将由您提供以确保API访问的安全性。BitMart将存储Secret Key加密后的哈希值进行验证,但如果您忘记Secret Key,则无法恢复,请您通过BitMart网站重新生成新的API Key。

示例

登录 Bitmart网站, 进入账户页面

PNG

点击 API 设置 按钮,进入创建API 页面

PNG

2.发起请求

请求包含两个部分,一个是header,一个是queryString

接口头部参数

所有REST请求头都必须包含以下内容:

X-BM-KEY字符串类型的Access Key。

X-BM-SIGN使用Sha-256签名(请参阅签名)。

X-BM-TIMESTAMP发起请求的时间戳。(UTC0时区时间戳精确到毫秒)
接口内容参数
  • GET 和 DELETE 方法的接口, 内容形式可以是application/json, 也可以是application/x-www-form-urlencoded, 参数必须在 query string中发送。(对参数的顺序不做要求。)
curl {{host}}/v1/goto?symbol=BMXBTC&side=BUY

# queryString: symbol=BMXBTC&side=BUY
  • POST, PUT 方法的接口, 参数可以在内容形式为application/json 的 query string 中发送。 (对参数的顺序不做要求。)
curl -X POST {{host}}/v1/goto -H "Content-type: application/json" -d '{"symbol":"BMX","side":"BUY"}'

# queryString: {"symbol":"BMX","side":"BUY"}

3.签名

X-BM-SIGN的请求头是对timestamp + "#" + memo + "#" + queryString,以及Secret Key,使用HMAC SHA256方法加密得到的。

例如:sign=CryptoJS.HmacSHA256(timestamp + "#" + memo + "#" + queryString, Secret Key)

其中,timestamp的值与 X-BM-TIMESTAMP 请求头相同。

4.时间戳

发起请求的时间戳。(UTC0时区Unix时间戳精确到毫秒) 如果当前时间: 2020-04-28 09:21:30.000,那么 timestamp=1588065690000

示例

申请后获取到的key如下:注意,下面2个接口是部署在生产环境的,用户替换成自己的KEY后可以直接测试调用。

Key Value
accessKey 80618e45710812162b04892c7ee5ead4a3cc3e56
secretKey 6c6c98544461bbe71db2bca4c6d7fd0021e0ba9efc215f9c6ad41852df9d9df9
memo test001

请求目标接口: /spot/v1/test-get

请求方式: GET

假设当前时间戳:timestamp=1589793795969

参数 取值
symbol BTC_USDT

返回: 返回内容里code == 1000 表示调用成功

{"message":"OK","code":1000,"trace":"17105b32-cc5b-406a-ab6e-6d9ed0fa4fd8","data":{}}

这里演示 curl 如何调用

echo -n "1589793795969#test001#symbol=BTC_USDT" | openssl dgst -sha256 -hmac "6c6c98544461bbe71db2bca4c6d7fd0021e0ba9efc215f9c6ad41852df9d9df9"
    (stdin)= 118eb558afa7d84e8710004f8416ddb771f50718c85f60a45069d0ccbe6ee1e0

curl --location --request GET 'localhost:8080/spot/v1/test-get?symbol=BTC_USDT'
--header 'Content-Type: application/json'
--header 'X-BM-KEY: 80618e45710812162b04892c7ee5ead4a3cc3e56'
--header 'X-BM-SIDN: 118eb558afa7d84e8710004f8416ddb771f50718c85f60a45069d0ccbe6ee1e0'
--header 'X-BM-TIMESTAMP: 1589793795969'

请求目标接口: /spot/v1/test-post

请求方式: POST

假设当前时间戳:timestamp=1589793796145

参数 取值
symbol BTC_USDT
price 8600
count 100

返回: 返回内容里code == 1000 表示调用成功

{"message":"OK","code":1000,"trace":"17105b32-cc5b-406a-ab6e-6d9ed0fa4fd8","data":{}}

这里演示 curl 如何调用

echo -n '1589793796145#test001#{"symbol":"BTC_USDT","price":"8600","count":"100"}' | openssl dgst -sha256 -hmac "6c6c98544461bbe71db2bca4c6d7fd0021e0ba9efc215f9c6ad41852df9d9df9"
    (stdin)= c31dc326bf87f38bfb49a3f8494961abfa291bd549d0d98d9578e87516cee46d

    curl --location --request POST 'localhost:8080/spot/v1/test-post'
    --header 'Content-Type: application/json'
    --header 'X-BM-KEY: 80618e45710812162b04892c7ee5ead4a3cc3e56'
    --header 'X-BM-SIDN: c31dc326bf87f38bfb49a3f8494961abfa291bd549d0d98d9578e87516cee46d'
    --header 'X-BM-TIMESTAMP: 1589793796145'
    --d '{"symbol":"BTC_USDT","price":"8600","count":"100"}'

results matching ""

    No results matching ""