You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Binance Spot API下买单报错:symbol参数异常求助

问题解决:Binance API下单报错-1102的修复

核心错误原因

你代码里有两个关键问题导致报错:

  • 参数传递方式错误:Binance下单接口要求POST参数放在请求体(data字段)中,你却用params传递序列化后的JSON字符串,导致API无法解析到symbol参数。
  • 缺少签名验证:Binance私有接口(如下单)必须对参数做HMAC-SHA256签名,否则即使参数传对也会被拒绝。

修正后的代码

import requests
import time
import hmac
import hashlib

API_KEY = "你的API密钥"
SECRET_KEY = "你的密钥"

ENDPOINT = "https://api.binance.com/api/v3/order"
HEADERS = {
    "X-MBX-APIKEY": API_KEY
}

# 构造请求参数
PAYLOAD = {
    "symbol": "BTCUSDT",
    "side": "BUY",
    "type": "MARKET",
    "quantity": "0.1",
    "timestamp": int(time.time() * 1000)
}

# 生成签名:将参数拼接为URL查询字符串后用密钥加密
query_string = "&".join([f"{k}={v}" for k, v in PAYLOAD.items()])
signature = hmac.new(SECRET_KEY.encode('utf-8'), query_string.encode('utf-8'), hashlib.sha256).hexdigest()
PAYLOAD["signature"] = signature

# 用data字段传递参数,符合Binance API要求
response = requests.post(ENDPOINT, headers=HEADERS, data=PAYLOAD)

if response.status_code != 200:
    print("下单失败:")
    print(response.json())
else:
    print("下单成功:")
    print(response.json())

关键修改说明

  • 替换参数传递方式:把params=json.dumps(PAYLOAD)改成data=PAYLOAD,requests会自动将字典转为表单格式,匹配Binance API的参数解析规则。
  • 新增签名逻辑:按照Binance要求,将所有请求参数拼接为URL查询字符串,用SECRET_KEY做HMAC-SHA256加密,把加密结果作为signature参数加入请求。

修改后你会收到预期的资金不足提示,验证接口逻辑正常。

内容的提问来源于stack exchange,提问作者Shiny

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 05:10:32