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

Next.js SSR中用Fetch调用Binance下单接口遇-1022签名无效错误求助

解决Binance下单接口-1022签名无效错误

Binance的签名验证要求所有请求参数(除了signature)都要参与签名生成,你的代码里只对recvWindow和timestamp做了签名,漏掉了symbol、side、type、quantity这些交易参数,这就是签名无效的核心原因。

修复步骤:

  • 把交易参数和timestamp、recvWindow合并成同一个字符串,用来生成签名
  • 确保签名生成用的字符串和请求URL里的参数(除signature外)完全一致

修正后的代码:

var keysBuy = {
    "APIkey": 'my api key',
    "SECRETkey": 'my secret key'
}
var myHeaders = new Headers();
myHeaders.append("X-MBX-APIKEY", keysBuy['APIkey']);

// 合并所有需要签名的参数
var allParams = `symbol=FIROUSDT&side=BUY&type=MARKET&quantity=5&recvWindow=20000&timestamp=${Date.now()}`;

// 用完整的参数字符串生成签名
var signature = crypto.createHmac('sha256', keysBuy['SECRETkey']).update(allParams).digest('hex')

var requestOptions = {
    method: 'POST',
    headers: myHeaders,
    redirect: 'follow',
};
const orderBuy = await fetch(`https://api.binance.com/api/v3/order?${allParams}&signature=${signature}`, requestOptions)
const orderData = await orderBuy.json()

额外注意:

  • 确认SECRETkey没有写错,不要包含多余空格或特殊字符
  • 确保timestamp是毫秒级当前时间戳,和Binance服务器时间差不能超过设置的recvWindow值(这里是20000ms)
  • 如果POST参数改用请求体传递,同样要把请求体的完整字符串用来签名,保持签名逻辑和参数传递方式一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 09:13:17