0

尝试通过 bitmex 上的 REST API 发送取消订单请求。响应是签名无效。我将签名生成器用于获取和发布请求并且工作正常。

仍然试图弄清楚我在这里做错了什么。

def cancel_order(cl_order_id):

    url = '/api/v1/order'
    verb = 'DELETE'
    data = {'clOrdID':cl_order_id} # Cancel order.
    expires = int(round(time.time()) + 86400)
    signature = generate_signature(secret, verb, url, expires,     json.dumps(data).replace(' ', ''))
    headers = {'api-expires': str(expires), 'api-key': api_key, 'api-signature': signature}
    response = requests.delete(base_url + url, headers=headers, params=data)

    print('Cancelling the order {} ... '.format(cl_order_id))
    print(response.json())


def generate_signature(secret, verb, url, expires, data):
    """Generate a request signature compatible with BitMEX."""

    parsedURL = urllib.parse.urlparse(url)
    path = parsedURL.path
    if parsedURL.query:
        path = path + '?' + parsedURL.query
    
    if isinstance(data, (bytes, bytearray)):
        data = data.decode('utf8')

    message = bytes(verb + path + str(expires) + data, 'utf-8')
    print(message)
    
    signature = hmac.new(bytes(secret, 'utf-8'), message, digestmod=hashlib.sha256).hexdigest()
    
    return signature
4

0 回答 0