Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 二进制API';allOrders';(HMAC sha256)错误1022_Python_Sha256_Hmac_Binance - Fatal编程技术网

Python 二进制API';allOrders';(HMAC sha256)错误1022

Python 二进制API';allOrders';(HMAC sha256)错误1022,python,sha256,hmac,binance,Python,Sha256,Hmac,Binance,大约在过去的一周里,我一直在努力思考签名HMACSHA256请求的概念 在这个例子中,我只是想得到所有当前订单的列表。 我想我已经弄明白了,但由于某种原因,这仍然行不通。 API密钥是新的…我尝试了读和写版本,我的IP被列入了白名单 我收到{'code':-1022,'msg':'此请求的签名无效。} 我的代码 import hmac import hashlib import json import requests import time import Credentials class

大约在过去的一周里,我一直在努力思考签名HMACSHA256请求的概念

在这个例子中,我只是想得到所有当前订单的列表。 我想我已经弄明白了,但由于某种原因,这仍然行不通。 API密钥是新的…我尝试了读和写版本,我的IP被列入了白名单

我收到{'code':-1022,'msg':'此请求的签名无效。}

我的代码

import hmac
import hashlib
import json
import requests
import time

import Credentials

class Private:

    def GetAllOrders(pair,orderid='',start='',finish='',limit='',window=''):

        # Credentials #
        ApiKey = Credentials.Binance.ReadAPIKey
        SecretKey = Credentials.Binance.ReadSecretKey

        # Base #
        BaseURL = 'https://api.binance.com'
        EndPoint = '/api/v3/allOrders'
                
        # Required #
        Pair = '?symbol='+str(pair)                                     
        Time = '&timestamp='+str(int(time.time()*1000))  

        # Optional #
        if orderid != '':
            OrderID = '&orderId='+str(orderid)                       
        else:                   
            OrderID = orderid

        if start != '':
            Start = '&startTime='+str(start*1000)                      
        else:                   
            Start = start

        if finish != '':
            Finish = '&endTime='+str(finish*1000)                       
        else:
            Finish = finish

        if limit != '':
            Limit = '&limit='+str(limit)                                   
        else:
            Limit = limit

        if window != '':
            Window = '&recvWindow='+str(window)                         
        else:
            Window = window
        
        # HMAC #
        HMAC = hmac.new(bytes(SecretKey.encode('utf-8')), 
                        (Pair+OrderID+Start+Finish+Limit+Window+Time).encode('utf-8'),
                        hashlib.sha256).hexdigest()
        
        # Signature #                    
        Signature = '&signature='+str(HMAC)
        
        # Headers #
        Headers = {'X-MBX-APIKEY': ApiKey}

        # Request #
        JSON = requests.get(BaseURL+EndPoint+Pair+OrderID+Start+Finish+Limit+Window+Time+Signature,headers=Headers).json()

        return JSON

print(Private.GetAllOrders(pair='BTCUSDT'))


任何帮助都将不胜感激……

我想出来了

HMAC不会将“?”识别为参数的开头,而URL(API)会识别

以下几行应该是这样的

# Required #
Pair = 'symbol='+str(pair)   

# Request #
JSON = requests.get(BaseURL+EndPoint+'?'+Pair+OrderID+Start+Finish+Limit+Window+Time+Signature,headers=Headers).json()