在发送请求时,需要设置正确的时间戳,并且时间戳需要在recvWindow允许的范围内。可以通过计算时间戳与服务器时间的差值来动态调整时间戳。以下是一个Python代码示例:
import time
import requests
import json
API_KEY = 'YOUR_API_KEY'
API_SECRET = 'YOUR_SECRET_KEY'
API_URL = 'https://api.binance.com/api/v3/order'
# 计算时间戳与服务器时间的差值
server_time = requests.get('https://api.binance.com/api/v1/time').json()['serverTime']
timestamp = int(time.time() * 1000)
time_diff = server_time - timestamp
# 设置正确的时间戳
params = {
'symbol': 'BTCUSDT',
'side': 'BUY',
'type': 'LIMIT',
'timeInForce': 'GTC',
'quantity': 0.01,
'price': 50000,
'timestamp': timestamp + time_diff, # 加上时间差
'recvWindow': 5000
}
# 计算签名
query_string = '&'.join([f'{k}={v}' for k, v in params.items()])
signature = hashlib.sha256(f'{query_string}&{API_SECRET}'.encode('utf-8')).hexdigest()
params['signature'] = signature
# 发送请求
headers = {'X-MBX-APIKEY': API_KEY}
response = requests.post(API_URL, params=params, headers=headers)
print(response.json())