nznet Posted May 12, 2019 Share Posted May 12, 2019 (edited) Hi, I have tried to write a script to call Binance for Account information... just trying to get the structure right before I create the other calls. My attempt is below... but I keep on getting the response code 403 which means it is on my side malformed calling or whatever... I have remove my API key and Secret for obvious security reasons...I have left other code snippets that show other attempts... Please help! expandcollapse popup#include <Crypt.au3> #include <Date.au3> #include <Array.au3> #include <string.au3> #include <MsgBoxConstants.au3> #include <Timers.au3> #include <String.au3> $timeStamp = _Timer_Init() ConsoleWrite("TimeStamp >> " & $timeStamp & @CRLF) ;$time = _TimeGetStamp() ;ConsoleWrite("time >> " & $time & @CRLF) __AccountInfo() Func __AccountInfo() ; https://github.com/binance-exchange/binance-official-api-docs/blob/master/rest-api.md site with information on Binance API calls $accessKey = "" ;; Add the key from Binance $secretKey = "" ;; Add the key from Binance $param = 'recvWindow=20000×tamp=' & $timeStamp $BinarySignature = HMAC($secretKey, $param) ;$signature = _Base64Encode($BinarySignature) ;Encode signature $signature = _StringToHex($BinarySignature) ;ConsoleWrite(">> Signature >> " & $signature & @CRLF) $request = $param & '&signature=' & $signature ;ConsoleWrite(">> $request >> " & $request & @CRLF) $oHTTP = ObjCreate("winhttp.winhttprequest.5.1") $oHTTP.Open("GET", "https://api.binance.com/api/v3/account", False) $oHTTP.SetRequestHeader("User-Agent", 'Mozilla/5.0 (Windows NT 10.0; WOW64) WinHttp/1.6.3.9 (WinHTTP/5.1) like Gecko') $oHTTP.SetRequestHeader("X-MBX-APIKEY", $accessKey) $oHTTP.Send($request) $oHTTP.Send() $oReceived = $oHTTP.ResponseText $oStatusCode = $oHTTP.Status If $oStatusCode <> 200 Then MsgBox(4096, "Response code", $oStatusCode) EndIf ConsoleWrite("Response Text >> " & $oReceived & @CRLF & @CRLF) EndFunc ;==>__BinanceAPI Func sha256($message) Return _Crypt_HashData($message, $CALG_SHA_256) EndFunc Func HMAC($key, $message, $hash="sha256") Local $blocksize = 64 Local $a_opad[$blocksize], $a_ipad[$blocksize] Local Const $oconst = 0x5C, $iconst = 0x36 Local $opad = Binary(''), $ipad = Binary('') $key = Binary($key) If BinaryLen($key) > $blocksize Then $key = Call($hash, $key) For $i = 1 To BinaryLen($key) $a_ipad[$i-1] = Number(BinaryMid($key, $i, 1)) $a_opad[$i-1] = Number(BinaryMid($key, $i, 1)) Next For $i = 0 To $blocksize - 1 $a_opad[$i] = BitXOR($a_opad[$i], $oconst) $a_ipad[$i] = BitXOR($a_ipad[$i], $iconst) Next For $i = 0 To $blocksize - 1 $ipad &= Binary('0x' & Hex($a_ipad[$i],2)) $opad &= Binary('0x' & Hex($a_opad[$i],2)) Next Return Call($hash, $opad & Call($hash, $ipad & Binary($message))) EndFunc Func _TimeGetStamp() Local $av_Time $av_Time = DllCall('CrtDll.dll', 'long:cdecl', 'time', 'ptr', 0) If @error Then SetError(99) Return False EndIf Return $av_Time[0] EndFunc Func _Base64Encode($input) $input = Binary($input) Local $struct = DllStructCreate("byte[" & BinaryLen($input) & "]") DllStructSetData($struct, 1, $input) Local $strc = DllStructCreate("int") Local $a_Call = DllCall("Crypt32.dll", "int", "CryptBinaryToString", _ "ptr", DllStructGetPtr($struct), _ "int", DllStructGetSize($struct), _ "int", 1, _ "ptr", 0, _ "ptr", DllStructGetPtr($strc)) If @error Or Not $a_Call[0] Then Return SetError(1, 0, "") ; error calculating the length of the buffer needed EndIf Local $a = DllStructCreate("char[" & DllStructGetData($strc, 1) & "]") $a_Call = DllCall("Crypt32.dll", "int", "CryptBinaryToString", _ "ptr", DllStructGetPtr($struct), _ "int", DllStructGetSize($struct), _ "int", 1, _ "ptr", DllStructGetPtr($a), _ "ptr", DllStructGetPtr($strc)) If @error Or Not $a_Call[0] Then Return SetError(2, 0, ""); error encoding EndIf Return DllStructGetData($a, 1) EndFunc ;==>_Base64Encode Edited May 12, 2019 by Jos put source in codebox for readability Link to comment Share on other sites More sharing options...
Developers Jos Posted May 12, 2019 Developers Share Posted May 12, 2019 Moved to the appropriate forum. Moderation Team SciTE4AutoIt3 Full installer Download page - Beta files Read before posting How to post scriptsource Forum etiquette Forum Rules Live for the present, Dream of the future, Learn from the past. Link to comment Share on other sites More sharing options...
notsure Posted June 26, 2019 Share Posted June 26, 2019 Did you got binance to work ? I also having troubles, wrong credentials it seems, im getting errors about the hash i send. Link to comment Share on other sites More sharing options...
Francky4D Posted May 29, 2020 Share Posted May 29, 2020 Hi, Did you manage to get your code to work? Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now