Я уверен, что я так близко, но сразу. Я пытаюсь вернуть свои балансы кошельков с помощью API-интерфейса Bitfinex v2, но я продолжаю получать ошибку «недопустимый ключ».
utf8_encode
этот вопрос, я думаю, что моя проблема может быть связана, но обновление моего кода с помощью utf8_encode
не utf8_encode
решить проблему.
Это мой первый раз, когда я использую cURL, поэтому я не уверен, что правильно настроил все параметры.
Заранее спасибо за любую помощь, которая предлагается.
Мой код до сих пор (вам нужно будет доверять, что _APISECRET
и _APIKEY
установлены):
CONST _APIPATH = "v2/auth/r/wallets"; CONST _APIURL = "https://api.bitfinex.com/"; $nonce = strval(time()*1000); $body = json_encode(array()); $signature = '/api/' . _APIPATH . $nonce . $body; $signature = hash_hmac('sha384', $signature, utf8_encode(_APISECRET)); $headers = array('bfx-nonce' => $nonce, 'bfx-apikey' => utf8_encode(_APIKEY), 'bfx-signature' => $signature, 'content-type' => 'application/json'); $ch = curl_init(); curl_setopt($ch, CURLOPT_POST, TRUE); curl_setopt($ch, CURLOPT_POSTFIELDS, $body); curl_setopt($ch, CURLOPT_URL, _APIURL . _APIPATH); curl_setopt($ch, CURLOPT_HEADER, TRUE); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_exec($ch); curl_close($ch);
Сегодня я столкнулся с такой же проблемой. Здесь мое рабочее решение:
/** * Bitfinex API V2 REST AUTHENTICATED ENDPOINT * * @param $method * @param array $request * * @return mixed */ private function queryPrivate($method, array $request = array()) { // build the POST data string $postData = (count($request)) ? '/' . implode("/", $request) : ''; $nonce = (string) number_format(round(microtime(true) * 100000), 0, ".", ""); $path = "/api/v2".'/auth/r/'.$method.$postData.$nonce; $signature = hash_hmac("sha384", utf8_encode($path), utf8_encode($this->secret)); $headers = array( "content-type: application/json", "content-length: ", "bfx-apikey: " . $this->key, "bfx-signature: " . $signature, "bfx-nonce: " . $nonce ); $url = $this->url.'/auth/r/' . $method . $postData; curl_setopt($this->curl, CURLOPT_URL, $url); curl_setopt($this->curl, CURLOPT_POST, true); curl_setopt($this->curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($this->curl, CURLOPT_HTTPHEADER, $headers); curl_setopt($this->curl, CURLOPT_SSL_VERIFYPEER, true); if (!$result=curl_exec($this->curl)) { return $this->curl_error($this->curl); } else { // var_dump($result); return $result; } }
Я вызываю функцию с
$param = array(); $this->queryPrivate("wallets", $param); $param = array('tIOTETH','hist'); $this->queryPrivate("trades", $param);
Удачи!