gateio / gateapi-python

250 stars 92 forks source link

b'{"label":"INVALID_SIGNATURE","message":"Signature mismatch"}\n' #15

Closed sunysen closed 4 years ago

sunysen commented 4 years ago
def gen_sign(method, url, query_string=None, payload_string=None):
    key = 'xxxxx'  # api_key
    secret = 'xxxxx'  # api_secret

    current_time = time.time()
    m = hashlib.sha512()
    if payload_string is not None:
        m.update(payload_string.encode('utf-8'))
    hashed_payload = m.hexdigest()
    s = '%s\n%s\n%s\n%s\n%s' % (method, url, query_string or "", hashed_payload, current_time)
    sign = hmac.new(secret.encode('utf-8'), s.encode('utf-8'), hashlib.sha512).hexdigest()
    return {'KEY': key, 'Timestamp': str(current_time), 'SIGN': sign}

if __name__ == "__main__":
    host = "https://api.gateio.ws"
    prefix = "/api/v4"
    common_headers = {'Accept': 'application/json', 'Content-Type': 'application/json'}

    url = '/futures/accounts'
    sign_headers = gen_sign('GET', prefix + url, "", None)
    sign_headers.update(common_headers)
    print('signature headers: %s' % sign_headers)
    res = requests.post(host + prefix + url, headers=sign_headers, data=None)
    print(res.status_code)
    print(res.content)
revilwang commented 4 years ago

requests 调用的是 post 方法,但是参与验签用的是 GET