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

Node.js生成BingX API签名遇‘signature not match’错误求助

解决BingX API签名不匹配问题

问题根源

你的签名生成代码存在3个不符合BingX API规范的问题,直接导致验证失败:

  1. 手动拼接参数易出错,且未通过程序化逻辑保证参数按ASCII升序排序
  2. 原始字符串拼接存在格式隐患
  3. 额外执行了URL编码(BingX官方未要求此步骤,会破坏签名结构)

BingX签名生成核心规则(官方文档翻译)

  • 签名基于 请求方法+请求路径+排序后的参数串 生成,三者直接拼接无任何分隔符
  • 请求参数必须按参数名ASCII升序排列,参数间用&连接
  • 使用HMAC-SHA256算法,以API对应的Secret Key作为加密密钥
  • 最终仅需对HMAC运算结果做Base64编码,无需额外URL编码

修正后的代码

const Base64 = require('crypto-js/enc-base64');
const hmacSHA256 = require('crypto-js/hmac-sha256');

// 1. 定义所有请求参数
const params = {
  apiKey: 'my_api_key',
  currency: 'USDT',
  timestamp: Date.now().toString() // 转为字符串避免类型拼接问题
};

// 2. 按参数名ASCII升序排序并拼接成参数串
const sortedParamStr = Object.keys(params)
  .sort()
  .map(key => `${key}=${params[key]}`)
  .join('&');

// 3. 拼接签名原始字符串
const originString = `POST/api/v1/user/getBalance${sortedParamStr}`;

// 4. 生成符合要求的签名
const signature = Base64.stringify(hmacSHA256(originString, 'my_secret_key'));

// 关键:不要执行encodeURIComponent,否则会导致签名不匹配

额外检查项

  • 确认使用的是API对应的Secret Key,而非API Key本身
  • 确保timestamp为当前毫秒级时间戳,请求发送时与签名生成时间差不超过5分钟(避免时间同步误差)
  • 核对请求路径与API文档完全一致(比如是否多写/漏写斜杠)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 14:30:33