虽说MEXC已经出了v3版的API,但截至目前合约API尚未在v3版上线。当初写代码时,由于笔者对python的hmac等库不太熟悉,写到鉴权部分的代码时,遇到一些阻碍。因此将鉴权部分的代码写在这里,方便后之来者(
通过`client = exchange_contactAPI(access_key='你的access_key字符串', secret_key='你的secret_key字符串')`调用即可。当然具体函数得自己写了。
import hmac
import time
import json
import requests
class exchange_contactAPI:
def __init__(self, access_key, secret_key):
self.base_url = 'https://api.mexc.com' #此为合约API的baseurl,如要使用现货API需改为'https://www.mexc.com'
self.access_key = access_key
self.secret_key = secret_key
def get_auth(self, uri, params={}): #需要鉴权的GET请求,传入参数params为字典类型
url = self.base_url + uri
header = {}
header['ApiKey'] = self.access_key
timestamp_s = time.time()
timestamp_ms_int = int(1000 * timestamp_s)
header['Request-Time'] = str(timestamp_ms_int)
params_str = '&'.join(["{}={}".format(i, params[i]) for i in sorted(params.keys())])
signature_str = self.access_key + str(timestamp_ms_int) + params_str
byte_key = self.secret_key.encode()
byte_msg = signature_str.encode()
signature = hmac.new(byte_key, byte_msg, digestmod='SHA256') #maybe exchange byte_key and |
header['Signature'] = signature.hexdigest()
header['Content-Type'] = 'application/json'
res = requests.get(url=url, headers=header)
return res.text
def post_auth(self, uri, params={}): #需要鉴权的POST请求
url = self.base_url + uri
header = {}
header['ApiKey'] = self.access_key
timestamp_s = time.time()
timestamp_ms_int = int(1000 * timestamp_s)
header['Request-Time'] = str(timestamp_ms_int)
params_str = json.dumps('&'.join(["{}={}".format(i, params[i]) for i in sorted(params.keys())]))
signature_str = self.access_key + str(timestamp_ms_int) + params_str
byte_key = self.secret_key.encode()
byte_msg = signature_str.encode()
signature = hmac.new(byte_key, byte_msg, digestmod='SHA256')
header['Signature'] = signature.hexdigest()
header['Content-Type'] = 'application/json'
res = requests.get(url=url, headers=header)
return res.text