MEXC API提现接口签名异常求助:返回700004错误码
解决MEXC提现接口签名校验失败(700004错误)的问题
核心问题排查
你遇到的700004错误是签名参数不合法导致的,代码里存在三个关键问题:
- 误用
GET请求,而MEXC提现接口要求使用POST请求,参数传递方式完全不符合规范。 - 签名生成逻辑错误:既没有将提现业务参数纳入签名范围,还使用了格式化时间字符串(MEXC要求的是毫秒级时间戳)。
- 错误地将业务参数放在HTTP Headers中,不符合接口的参数传递规则。
修正后的代码
import requests import hmac from urllib.parse import urlencode import hashlib import time access_key = "(MY_ACCESS_KEY)" secret_key = "(MY_SECRET_KEY)" def generate_signature(api_secret, timestamp, sign_params): # MEXC要求参数按key升序排序后编码,否则签名不合法 sorted_params = sorted(sign_params.items()) encoded_params = urlencode(sorted_params) # 待签名字符串格式:毫秒时间戳 + 编码后的业务参数 to_sign = f"{timestamp}{encoded_params}" # HMAC SHA256加密生成签名 sign = hmac.new(api_secret.encode('utf-8'), to_sign.encode('utf-8'), hashlib.sha256).hexdigest() return sign # 提现接口地址 url = "https://api.mexc.com/api/v3/capital/withdraw/apply" # 获取13位毫秒级时间戳,匹配MEXC签名规则 timestamp = str(int(time.time() * 1000)) # 提现业务参数,按实际情况填充 withdraw_params = { "symbol": "(MY_SYMBOL)", "network": "(MY_NETWORK)", "address": "(MY_ADDRESS)", "memo": "(MY_MEMO)", "amount": str(MY_AMOUNT) # 金额必须转为字符串类型 } # 生成合法签名 signature = generate_signature(secret_key, timestamp, withdraw_params) # 请求头仅携带认证必要字段 headers = { "apiKey": access_key, "timestamp": timestamp } # 请求体包含所有业务参数和签名 request_body = { **withdraw_params, "signature": signature } # 发送POST请求 response = requests.post(url, headers=headers, json=request_body).json() print(response)
关键修改说明
- 切换为POST请求:严格匹配MEXC提现接口的要求,确保参数能被接口正确解析。
- 修正时间戳格式:使用
time.time()*1000生成13位毫秒时间戳,这是MEXC签名校验的必要条件。 - 签名包含所有业务参数:将所有提现参数排序编码后与时间戳拼接,保证签名的完整性,符合MEXC的签名规则。
- 调整参数位置:业务参数和签名放在JSON请求体中,Headers仅保留
apiKey和timestamp两个认证字段,对齐接口规范。
内容的提问来源于stack exchange,提问作者Rustam
相关产品推荐
相关产品推荐

