调用Hotbit REST API的PUT_LIMIT接口返回RET_SIGN_ERROR如何解决?
问题排查及修复方案
核心错误点
- 签名串包含多余参数
官方明确要求参与签名的参数仅为api_key、secret_key、market、isfee、price、amount,你当前的签名串中额外加入了side参数,这是触发RET_SIGN_ERROR的主要原因。 - 注意参数排序规则
待签参数需要严格按照参数名的字母升序排列,正确顺序如下:
- amount
- api_key
- isfee
- market
- price
- secret_key
修正后的代码
import hashlib, requests url = "https://api.hotbit.io/v2/p2/order.put_limit" # 仅用要求的参数构造签名串,严格遵循字母排序规则,不加入side参数 sign_string = "amount=" + str(amount) + "&api_key=" + str(api_key) + "&isfee=0&market=" + str(market) + "&price=" + str(price) + "&secret_key=" + str(secret_key) sign = hashlib.md5(sign_string.encode('utf-8')).hexdigest() sign = sign.upper() body = { "api_key" : str(api_key), "amount" : amount, "isfee" : 0, "market" : str(market), "price" : price, "side" : side, "sign": str(sign) } response = requests.request('POST', url, data = body) print(response.text)
额外校验项
- 确认
market参数格式符合要求,通常为BTC_USDT这类大写+下划线的交易对格式 - 确认
api_key和secret_key无拼写错误、无多余首尾空格 - 确认签名时使用参数原始值,不要提前做URL编码处理
内容的提问来源于stack exchange,提问作者Parth Thakkar
相关产品推荐
相关产品推荐

