import hmac
import time
import hashlib
import requests
import json
from urllib.parse import urlencode
KEY = ‘xxx’
SECRET = ‘xxx’
BASE_URL = ‘https://fapi.binance.com’
def hashing(query_string):
return hmac.new(SECRET.encode(‘utf-8’), query_string.encode(‘utf-8’), hashlib.sha256).hexdigest()
def get_timestamp():
return int(time.time() * 1000)
def dispatch_request(http_method):
session = requests.Session()
session.headers.update({
‘Content-Type’: ‘application/json;charset=utf-8’,
‘X-MBX-APIKEY’: KEY
})
return {
‘GET’: session.get,
‘DELETE’: session.delete,
‘PUT’: session.put,
‘POST’: session.post,
}.get(http_method, ‘GET’)
used for sending request requires the signature
def send_signed_request(http_method, url_path, payload={}):
query_string = urlencode(payload)
# replace single quote to double quote
query_string = query_string.replace(’%27’, ‘%22’)
if query_string:
query_string = “{}×tamp={}”.format(query_string, get_timestamp())
else:
query_string = ‘timestamp={}’.format(get_timestamp())
url = BASE_URL + url_path + '?' + query_string + '&signature=' + hashing(query_string)
print("{} {}".format(http_method, url))
params = {'url': url, 'params': {}}
response = dispatch_request(http_method)(**params)
return response.json()
used for sending public data request
def send_public_request(url_path, payload={}):
query_string = urlencode(payload, True)
url = BASE_URL + url_path
if query_string:
url = url + ‘?’ + query_string
print("{}".format(url))
response = dispatch_request(‘GET’)(url=url)
return response.json()
params = {
“symbol”: “LTCUSDT”,
“orderId”: 16135555493
}
response = send_signed_request(‘DELETE’, ‘/fapi/v1/order’, params)
print(response)
########### out put #######
{‘code’: -2011, ‘msg’: ‘Unknown order sent.’}