Python脚本调用KuCoin API创建订单返回kc invalid sign问题排查
KuCoin API创建订单返回“kc invalid sign”错误排查
你的代码核心问题出在POST请求参数传递方式和签名/密码短语的格式处理上,以下是具体问题和修复方案:
问题点分析
- POST参数位置错误:你当前把订单参数通过
params=params放到了URL查询参数中,但KuCoin创建订单的POST接口要求参数放在JSON格式的请求体里。这会导致签名时使用的json_params和实际发送的参数内容不匹配,直接触发签名验证失败。 - 签名/密码短语未转字符串:
base64.b64encode()返回的是bytes对象,直接放入请求头会导致格式错误,服务器无法正确解析。 - JSON序列化可能存在差异:默认
json.dumps()可能生成带空格的JSON字符串,和请求体自动序列化的结果不一致,也会导致签名不匹配。
修复后的完整代码
import base64 import hashlib import hmac import json import time import requests api_key = '.....' api_secret = '.....' api_passphrase = '....' url = 'https://api.kucoin.com/api/v1/orders' # url = 'https://api.kucoin.com/api/v1/accounts?type=trade' now = int(time.time() * 1000) params = { "clientOid": "AAAjhjhjhjk", "side": "BUY", "symbol": "BTC-USDT", "type": "limit", "size": "0.001", "price": "41220.9", "postOnly": "true" } # 生成无空格的紧凑JSON字符串,确保和请求体序列化结果完全一致 json_params = json.dumps(params, separators=(',', ':')) str_to_sign = str(now) + 'POST' + '/api/v1/orders' + json_params print(str_to_sign) # str_to_sign = str(now + 100) + 'GET' + '/api/v1/accounts?type=trade' # 将签名转成UTF-8字符串 signature = base64.b64encode( hmac.new(api_secret.encode('utf-8'), str_to_sign.encode('utf-8'), hashlib.sha256).digest() ).decode('utf-8') # 将密码短语转成UTF-8字符串 passphrase = base64.b64encode( hmac.new(api_secret.encode('utf-8'), api_passphrase.encode('utf-8'), hashlib.sha256).digest() ).decode('utf-8') headers = { "KC-API-SIGN": signature, "KC-API-TIMESTAMP": str(now), "KC-API-KEY": api_key, "KC-API-PASSPHRASE": passphrase, "KC-API-KEY-VERSION": "2", "Content-Type": "application/json" # 明确指定请求体格式 } # 使用json参数传递请求体,而非params response = requests.post(url, headers=headers, json=params) print(response.status_code) print(response.json())
关键修复说明
- 参数传递方式修正:用
json=params替代params=params,让requests自动将参数序列化为JSON请求体,和签名时使用的json_params保持一致。 - 格式转换:给
signature和passphrase添加.decode('utf-8'),将bytes对象转为字符串,符合HTTP请求头的格式要求。 - JSON序列化一致性:添加
separators=(',', ':')确保生成的JSON字符串无多余空格,避免因序列化格式差异导致签名验证失败。
内容的提问来源于stack exchange,提问作者OplizeO
相关产品推荐
相关产品推荐

