Я пытаюсь получить Bittrex API 1.1, работающий в Excel, но по какой-то причине я не получить это право.
Там, кажется, что-то не так в них так, как я вычислить подпись.
Я получаю ошибку follwing:
Код:
{"успех":ложный,"сообщение":"INVALID_SIGNATURE","результат":ноль}
Это мой текущий Macro код:
Код:
Public Sub getopenorders ()
Dim apikey As String
Dim apisecret As String
Dim As String URI
Dim знак As String
Dim ответ As String
Dim PARAMS As String
«Для отладки
Ассортимент("B3") .Value = ""
Ассортимент("B4") .Value = ""
Ассортимент("B5") .Value = ""
apikey = "BITTREX API KEY"
apisecret = "BITTREX API SECRET"
= URI "https://bittrex.com/api/v1.1/market/getopenorders"
Титулы = "?" + "apikey =" + Apikey + "&= нонс" + getNonce
знак = createSignature (apisecret, Uri + PARAMS)
ответ = GetResponse (URI, "apisign", Знак, PARAMS)
Ассортимент("B3") .Value = ответ
End Sub
Функция GetResponse (ByVal PURL As String, sendVarKey As String, sendVarValue As String, Params As String) As String
Dim oRequest Как WinHttp.WinHttpRequest
Набор oRequest = GetHttpObj ("ПОСЛЕ", PURL + Титулы, False, sendVarKey, sendVarValue)
oRequest.send ""
GetResponse = oRequest.responseText
End Function
Public Function GetHttpObj (HTTPMethod As String, Ури As String, асинхронная As Boolean, _
sendVarKey As String, sendVarValue As String, _
Необязательные CONTENTTYPE As String = "Применение / JSON") Как WinHttp.WinHttpRequest
Dim httpObj As New WinHttp.WinHttpRequest
С httpObj
.Открыть HTTPMethod, Урьте, асинхронные
.setRequestHeader "происхождения", "pamsXL"
.setRequestHeader "User-Agent", "Mozilla / 4.0 (совместимый; MSIE 6.0; Windows NT 5.1)"
.setRequestHeader "соединение", "поддержания активности"
.setRequestHeader "Тип содержимого", Тип содержимого
.setRequestHeader "кэш-контроль", "нет кэша"
End With
Ассортимент("B4") .Value = URI
Ассортимент("B5") .Value = sendVarValue
httpObj.setRequestHeader sendVarKey, sendVarValue
Установите GetHttpObj = httpObj
End Function
Private Function createSignature (KeyString As String, URL As String) As String
createSignature = SHA512 (KeyString, URL)
End Function
Private Function sha512 (ByVal KeyString As String, ByVal ул As String) As String
Dim закодировать As Object, шифровать As Object, с As String, _
т () As Byte, б () As Byte, privateKeyBytes () As Byte
Набор закодировать = CreateObject ("System.Text.UTF8Encoding")
Набор шифровать = CreateObject ("System.Security.Cryptography.HMACSHA512")
s = KeyString
privateKeyBytes = decodeBase64 (ы)
encrypt.Key = privateKeyBytes
т = encode.Getbytes_4 (ул)
б = encrypt.ComputeHash_2 ((т))
s = tob64 (б)
SHA512 = Заменить (с, vbLf, "")
Устан закодировать = Ничто
Устан шифровать = Ничто
End Function
Private Function tob64 (ByRef arrData () As Byte) As String
Dim objXML Как MSXML2.DOMDocument60
Dim objNode Как MSXML2.IXMLDOMElement
Установить objXML = Новый MSXML2.DOMDocument60
Набор objNode = objXML.createElement ("B64")
objNode.DataType = "bin.base64"
objNode.nodeTypedValue = arrData
tob64 = objNode.Text
не указан objNode = Nothing
не указан objXML = Nothing
End Function
Private Function decodeBase64 (ByVal strData As String) As Byte ()
Dim objXML Как MSXML2.DOMDocument60
Dim objNode Как MSXML2.IXMLDOMElement
Установить objXML = Новый MSXML2.DOMDocument60
Набор objNode = objXML.createElement ("B64")
objNode.DataType = "bin.base64"
objNode.Text = strData
decodeBase64 = objNode.nodeTypedValue
не указан objNode = Nothing
не указан objXML = Nothing
End Function
Функция getNonce () As String
getNonce = CStr (DateDiff ("S", "1/1/1970", Теперь()))
End Function
Dim apikey As String
Dim apisecret As String
Dim As String URI
Dim знак As String
Dim ответ As String
Dim PARAMS As String
«Для отладки
Ассортимент("B3") .Value = ""
Ассортимент("B4") .Value = ""
Ассортимент("B5") .Value = ""
apikey = "BITTREX API KEY"
apisecret = "BITTREX API SECRET"
= URI "https://bittrex.com/api/v1.1/market/getopenorders"
Титулы = "?" + "apikey =" + Apikey + "&= нонс" + getNonce
знак = createSignature (apisecret, Uri + PARAMS)
ответ = GetResponse (URI, "apisign", Знак, PARAMS)
Ассортимент("B3") .Value = ответ
End Sub
Функция GetResponse (ByVal PURL As String, sendVarKey As String, sendVarValue As String, Params As String) As String
Dim oRequest Как WinHttp.WinHttpRequest
Набор oRequest = GetHttpObj ("ПОСЛЕ", PURL + Титулы, False, sendVarKey, sendVarValue)
oRequest.send ""
GetResponse = oRequest.responseText
End Function
Public Function GetHttpObj (HTTPMethod As String, Ури As String, асинхронная As Boolean, _
sendVarKey As String, sendVarValue As String, _
Необязательные CONTENTTYPE As String = "Применение / JSON") Как WinHttp.WinHttpRequest
Dim httpObj As New WinHttp.WinHttpRequest
С httpObj
.Открыть HTTPMethod, Урьте, асинхронные
.setRequestHeader "происхождения", "pamsXL"
.setRequestHeader "User-Agent", "Mozilla / 4.0 (совместимый; MSIE 6.0; Windows NT 5.1)"
.setRequestHeader "соединение", "поддержания активности"
.setRequestHeader "Тип содержимого", Тип содержимого
.setRequestHeader "кэш-контроль", "нет кэша"
End With
Ассортимент("B4") .Value = URI
Ассортимент("B5") .Value = sendVarValue
httpObj.setRequestHeader sendVarKey, sendVarValue
Установите GetHttpObj = httpObj
End Function
Private Function createSignature (KeyString As String, URL As String) As String
createSignature = SHA512 (KeyString, URL)
End Function
Private Function sha512 (ByVal KeyString As String, ByVal ул As String) As String
Dim закодировать As Object, шифровать As Object, с As String, _
т () As Byte, б () As Byte, privateKeyBytes () As Byte
Набор закодировать = CreateObject ("System.Text.UTF8Encoding")
Набор шифровать = CreateObject ("System.Security.Cryptography.HMACSHA512")
s = KeyString
privateKeyBytes = decodeBase64 (ы)
encrypt.Key = privateKeyBytes
т = encode.Getbytes_4 (ул)
б = encrypt.ComputeHash_2 ((т))
s = tob64 (б)
SHA512 = Заменить (с, vbLf, "")
Устан закодировать = Ничто
Устан шифровать = Ничто
End Function
Private Function tob64 (ByRef arrData () As Byte) As String
Dim objXML Как MSXML2.DOMDocument60
Dim objNode Как MSXML2.IXMLDOMElement
Установить objXML = Новый MSXML2.DOMDocument60
Набор objNode = objXML.createElement ("B64")
objNode.DataType = "bin.base64"
objNode.nodeTypedValue = arrData
tob64 = objNode.Text
не указан objNode = Nothing
не указан objXML = Nothing
End Function
Private Function decodeBase64 (ByVal strData As String) As Byte ()
Dim objXML Как MSXML2.DOMDocument60
Dim objNode Как MSXML2.IXMLDOMElement
Установить objXML = Новый MSXML2.DOMDocument60
Набор objNode = objXML.createElement ("B64")
objNode.DataType = "bin.base64"
objNode.Text = strData
decodeBase64 = objNode.nodeTypedValue
не указан objNode = Nothing
не указан objXML = Nothing
End Function
Функция getNonce () As String
getNonce = CStr (DateDiff ("S", "1/1/1970", Теперь()))
End Function
Большое спасибо за вашу помощь.