验签问题

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位,否则就是错误的。

results matching ""

    No results matching ""