Binance 400 ответа и повторяющиеся значения для параметра обнаружено - PullRequest
0 голосов
/ 23 февраля 2019

все еще пытаюсь разобраться с API и связями.

Я пытаюсь сделать заказ на покупку для Binance, но продолжаю получать ответ 400.Я знаю, что это было проблемой для некоторых других, но я просто не могу понять, где я иду не так.Надеюсь, что кто-то может мне помочь.

Это проблемы только с POST, все запросы GET работают нормально, и поэтому с подписью и отметкой времени ... или, по крайней мере, я получаю ответы для своей учетной записи, поэтому япредположим, что так.

Первый CURL предназначен только для serverTime, а второй CURL - для ордера на покупку / продажу.

Это ответ, который я получаю сейчас ...

"Object ([code] => -1102 [msg] => Обязательный параметр 'side' не был отправлен,был пустым / пустым или неправильно сформирован.) "

Если я ввожу строку вручную, она работает просто отлично, но по той или иной причине, когда я передаю $ qs, это вызывает вышеуказанную ошибку.Я отобразил $ qs на экран и скопировал его вместо передачи $ qs, и это сработало, когда я вставил новую метку времени.Я в тупике ...

"символ = TRXUSDC & сторона = ПРОДАЖА и тип = LIMIT & timeInForce = GTC & количество = 63000.00000000 & цена = 0.02550000 & recvWindow = 1000000 × тамп = 1550922237310"

любой совет?

$header = array('X-MBX-APIKEY:' . KEY);
$url = BINANCE . 'api/v1/time';
$curl = curl_init();
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($curl, CURLOPT_TIMEOUT, 60);
curl_setopt($curl, CURLOPT_ENCODING, "");
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($curl, CURLOPT_URL,$url);
$response = curl_exec($curl);

if (FALSE === $response){
        echo curl_error($curl), curl_errno($curl);
    }
$serverTime = json_decode($response);
curl_close($curl);

$url = BINANCE . "api/v3/order";
$signature = NULL;
$queryString = NULL;

$query = array(
    "symbol" => "TRXUSDC",
    "side" => "SELL",
    "type" => "LIMIT",
    "timeInForce" => "GTC", 
    "quantity" => number_format(63000.00000000,8,'.',''),
    "price" => number_format(0.02550000,8,'.',''), 
    "recvWindow" => 1000000,
    "timestamp" => $serverTime->serverTime);

$qs = htmlentities(http_build_query(array_unique($query)));
$query['signature'] = hash_hmac('SHA256', $qs, SECRET );
$curl = curl_init();
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($curl, CURLOPT_TIMEOUT, 60);
curl_setopt($curl, CURLOPT_ENCODING, "application/x-www-form-urlencoded");
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($curl,CURLOPT_FAILONERROR,FALSE);
curl_setopt($curl, CURLOPT_VERBOSE, TRUE);
curl_setopt($curl, CURLOPT_POST, TRUE);
curl_setopt($curl, CURLOPT_POSTFIELDS,$qs);
curl_setopt($curl, CURLOPT_URL, $url);
$response = curl_exec($curl);
if (FALSE === $response){
    echo curl_error($curl).':'.curl_errno($curl);
}
$obj = json_decode($response);
curl_close($curl);

1 Ответ

0 голосов
/ 10 марта 2019

Я попробовал этот код и var_dump $ qs

symbol=BTCUSDT&side=BUY&...

, поэтому я думаю, что вы должны удалить amp;

...