调用Crypto.com API创建订单遇40101未授权错误求助
Crypto.com API下单时401授权错误问题
调用private/create-order接口下单时,收到HTTP 401状态码及40101错误码,提示“未授权 - 未认证或密钥/签名错误”。但调用private/user-balance接口可成功获取余额,已排除IP白名单问题。两者差异在于余额查询是无参数的GET请求,而创建订单请求带有参数,因此怀疑签名生成时的参数处理存在错误。
HMAC SHA256签名生成函数
def sign_request(method, params, request_id): """按照HMAC-SHA256流程生成签名""" # 步骤1:对请求参数按字母顺序排序 if params: param_str = ''.join([f'{key}{params[key]}' for key in sorted(params)]) else: param_str = '' # 步骤2:拼接method、request id、api_key、param_str和nonce nonce = str(int(time.time() * 1000)) signature_payload = method + request_id + API_KEY + param_str + nonce # 步骤3:使用API_SECRET创建HMAC-SHA256签名 signature = hmac.new( bytes(API_SECRET, 'utf-8'), bytes(signature_payload, 'utf-8'), hashlib.sha256 ).hexdigest() # 步骤4:将签名输出为十六进制字符串 return signature, nonce
创建订单请求参数
params = { 'instrument_name': symbol, 'side': side, # 'buy' 或 'sell' 'type': 'MARKET', # 或 'LIMIT' 'price': price, 'quantity': quantity, 'client_oid': client_oid # 添加客户端订单ID }
内容的提问来源于stack exchange,提问作者Robert Dinaro
相关产品推荐
相关产品推荐

