验签问题
1.请求接口的timestamp参数和到达服务器时间最大差值是多少?
答: 时间戳和API服务器时间前后相差1分钟以上的请求将被系统视为过期并拒绝。如果用户服务器和API服务器之间存在较大的时间偏差,建议用户使用"获取服务器时间"的接口来查询API服务器时间。
2.请求头"X-BM-TIMESTAMP"不能为空 如何解决?时不时产生这个错误?
答: 首先建议用户打印一下请求头部参数X-BM-TIMESTAMP是否有值,另外建议用户代码优化,每次请求前先判断X-BM-TIMESTAMP是否为空。
3.API使用的时间戳是哪里的时间?
答: UTC 0时时间格式。
4.为什么签名认证总返回无效签名?
答: 签名不正确导致的:
1)可以使用下面的SDK,签名部分已经封装好了,可以直接调试调用:
- bitmart-go-sdk-api
- bitmart-python-sdk-api
- bitmart-java-sdk-api
2)如果是自己编写签名函数,请务必一步步地参照如下描述: X-BM-SIGN的请求头是对timestamp + "#" + memo + "#" + queryString,以及Secret Key,使用HMAC SHA256方法加密得到的。 检查时,可以打印出请求头信息和签名前字符串,重点有以下几点:
(a) 是否在程序中正确地配置了APIKey, 假设:您的 KEY 如下: API_KEY = "80618e45710812162b04892c7ee5ead4a3cc3e56"; API_SECRET = "6c6c98544461bbe71db2bca4c6d7fd0021e0ba9efc215f9c6ad41852df9d9df9"; API_MEMO = "test001"; 请您确认下KEY设置正确:
``` Content-Type: application/json X-BM-KEY: 80618e45710812162b04892c7ee5ead4a3cc3e56 ```
(b) 签名前字符串是否符合标准格式,所有要素的顺序要保持一致,可以复制如下示例跟您的签名前字符串进行比对:
GET示例:请求地址是/v1?contract_id=1&category=1,假设当前时间戳是1589267764859, 则queryString=1589267764859#test001#contract_id=1&category=1
X-BM-SIGN=
echo -n '1589267764859#test001#contract_id=1&category=1' | openssl dgst -sha256 -hmac "6c6c98544461bbe71db2bca4c6d7fd0021e0ba9efc215f9c6ad41852df9d9df9"
(stdin)= 6d5e774446448073f68e99c28ace86503451bed1fd44e43f80b9b518937c4ef1
请求:
Host: {{host}}/v1
Content-Type: application/json
X-BM-KEY: 80618e45710812162b04892c7ee5ead4a3cc3e56
X-BM-SIGN: 6d5e774446448073f68e99c28ace86503451bed1fd44e43f80b9b518937c4ef1
X-BM-TIMESTAMP: 1589267764859
POST示例: 请求地址是/v1?contract_id=1&category=1,,假设当前时间戳是1589267764859,则 queryString=1589267764859#test001#{"contract_id":1,"category":1,"way":1,"open_type":1,"leverage":10,"custom_id":1,"price":5000,"vol":10,"nonce":1589267764}
X-BM-SIGN=
echo -n '1589267764859#test001#{"contract_id":1,"category":1,"way":1,"open_type":1,"leverage":10,"custom_id":1,"price":5000,"vol":10,"nonce":1589267764}' | openssl dgst -sha256 -hmac "6c6c98544461bbe71db2bca4c6d7fd0021e0ba9efc215f9c6ad41852df9d9df9"
(stdin)= 595a00aa2ecbd2f7e857909497e3aa8b222da6b6055411c7f4dfce0e7dc6c6ae
请求:
HOST: {{host}}/v1
Body: {"contract_id":1,"category":1,"way":1,"open_type":1,"leverage":10,"custom_id":1,"price":5000,"vol":10,"nonce":1589267764}
Content-Type: application/json
X-BM-KEY: 80618e45710812162b04892c7ee5ead4a3cc3e56
X-BM-SIGN: 595a00aa2ecbd2f7e857909497e3aa8b222da6b6055411c7f4dfce0e7dc6c6ae
X-BM-TIMESTAMP: 1589267764859
(c) 签名结果(X-BM-SIGN)的长度应为64位,否则就是错误的。