Python调用MEXC API实现签名认证查询钱包余额的技术问询
MEXC交易所账户查询接口签名实现方案
官方签名规则中文翻译
- 收集除
sign外的所有请求参数,按参数名ASCII码从小到大做字典序排序 - 将排序后的参数拼接为
key=value格式,参数间用&连接,生成待签名字符串 - 将API Secret直接拼接在待签名字符串末尾
- 对最终字符串做MD5加密,取32位小写十六进制结果作为签名值
请求构造要求
调用/open/api/v2/account/infoGET接口需满足以下要求:
- URL参数携带三个必填字段:
api_key(API公钥)、timestamp(13位毫秒级Unix时间戳,与服务器时间误差不能超过5秒)、sign(计算得到的签名值) - 请求头额外添加两个字段:
ApiKey值为你的API公钥,Sign值为计算得到的签名值
Python实现示例
import hashlib import time import requests # 替换为自己的API信息 API_KEY = "你的MEXC API公钥" API_SECRET = "你的MEXC API私钥" API_DOMAIN = "https://api.mexc.com" def calc_sign(params: dict, secret: str) -> str: # 参数按ASCII码升序排序 sorted_items = sorted(params.items(), key=lambda x: x[0]) # 拼接参数字符串 raw_str = "&".join([f"{k}={v}" for k, v in sorted_items]) # 拼接私钥 raw_str += secret # MD5加密转小写 return hashlib.md5(raw_str.encode("utf-8")).hexdigest().lower() def query_account_balance(): req_params = { "api_key": API_KEY, "timestamp": int(time.time() * 1000) } req_params["sign"] = calc_sign(req_params, API_SECRET) req_headers = { "ApiKey": API_KEY, "Sign": req_params["sign"] } response = requests.get( url=f"{API_DOMAIN}/open/api/v2/account/info", params=req_params, headers=req_headers ) return response.json() if __name__ == "__main__": print(query_account_balance())
常见异常排查
- 签名过期错误:检查本地时间是否准确,确保使用13位毫秒级时间戳,可先获取交易所服务器时间校准
- 签名无效错误:检查参数排序是否符合要求,MD5结果是否为全小写,API Secret是否正确
- 权限不足错误:检查创建API时是否开启了账户查询权限,请求IP是否在API白名单内
内容的提问来源于stack exchange,提问作者PL1337
相关产品推荐
相关产品推荐

