Подпись Bitmex не действительна - PullRequest
0 голосов
/ 16 марта 2020

Я пытаюсь сделать аутентифицированный почтовый запрос на размещение заказа на тесте tnet. Я пытался заставить его работать в течение нескольких дней, но не могу понять, почему я получаю «Подпись не действительна»

import json
import requests
import aiohttp
import asyncio
import urllib
import time
import hashlib, hmac
import urllib.parse
import json

api_key = "YOUR_API_KEY"
api_secret = "YOUR_SECRET_KEY"
base_url = 'https://testnet.bitmex.com'
method = 'POST'

data = '{"symbol":"XBTUSD","quantity":1,"price":395.01}'
path = '/api/v1/order'
url = base_url + path
print(url)
nonce = int(time.time() * 1000)
print(nonce)
message = bytes(method + path + str(nonce) + data, 'utf-8')
print(message)

def generate_signature(secret, verb, url, nonce, data):
    """Generate a request signature compatible with BitMEX."""
    # Parse the url so we can remove the base and extract just the path.
    parsedURL = urllib.parse.urlparse(url)
    path = parsedURL.path
    if parsedURL.query:
        path = path + '?' + parsedURL.query

    message = bytes(verb + path + str(nonce) + data, 'utf-8')
    # print("Computing HMAC: %s" % message)

    signature = hmac.new(bytes(secret, 'utf-8'), message, digestmod=hashlib.sha256).hexdigest()
    return signature

# signature = hmac.new(bytes(api_secret, 'utf-8'), message, digestmod=hashlib.sha256).hexdigest()
signature = generate_signature(api_secret, method, path, nonce, data)
print(signature)
headers = {'api-expires':str(nonce),'api-key':api_key,'api-signature':signature, 'Content-Type': 'aplication/json','Accept': 'application/json', 'X-Requested-With': 'XMLHttpRequest'}
print(headers)

r = requests.post(url, data=data,  headers=headers)
print(r.status_code)
print(r.text)

Что не так в этом коде? Пожалуйста, примите во внимание, что указан правильный ключ API и секрет. Я получаю следующий ответ.

401
{"error":{"message":"Signature not valid.","name":"HTTPError"}}

https://www.bitmex.com/app/apiKeysUsage

...