Bter API Request Error Python3 — Ошибка: неверный ключ или знак

Я пытался заставить API Bter.com работать с Python3 и чувствую, что он должен работать.

В настоящее время я получаю эту ошибку при отправке запроса через:

{'code': 5, 'result': 'false', 'message': 'Error: invalid key or sign'}

Ниже вы найдете пример в PHP, который они имеют на своем сайте:

function bter_query($path, array $req = array()) {
// API settings, add your Key and Secret at here
$key = '';
$secret = '';

// generate a nonce to avoid problems with 32bits systems
$mt = explode(' ', microtime());
$req['nonce'] = $mt[1].substr($mt[0], 2, 6);

// generate the POST data string
$post_data = http_build_query($req, '', '&');
$sign = hash_hmac('sha512', $post_data, $secret);

// generate the extra headers
$headers = array(
'KEY: '.$key,
'SIGN: '.$sign,
);

//!!! please set Content-Type to application/x-www-form-urlencoded if it's not the default value

// curl handle (initialize if required)
static $ch = null;
if (is_null($ch)) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT,
'Mozilla/4.0 (compatible; Bter PHP bot; '.php_uname('a').'; PHP/'.phpversion().')'
);
}
curl_setopt($ch, CURLOPT_URL, 'https://bter.com/api/'.$path);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);

// run the query
$res = curl_exec($ch);

if ($res === false) throw new Exception('Curl error: '.curl_error($ch));
//echo $res;
$dec = json_decode($res, true);
if (!$dec) throw new Exception('Invalid data: '.$res);
return $dec;
}

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

Вот мой код:

 def __nonce(self):
if self.__wait_for_nonce: time.sleep(1)
self.__nonce_v = str(time.time()).split('.')[0]

def __api_call(self,method,params):
self.__nonce()
params['nonce'] = str(self.__nonce_v)
params = urlencode(params)
sign = hmac.new(self.__api_secret.encode(), params.encode(), hashlib.sha512).hexdigest()
headers = {"Content-type": "application/x-www-form-urlencoded",
"Key": self.__api_key,
"Sign": sign}
response = requests.post("https://bter.com/api/1/private/"+method, params, headers)
data = response.json()
return data

Я изо всех сил пытаюсь найти ошибку. Я связался со службой поддержки Bter, которая только что вернула меня обратно в API Docs. Я также попытался сгенерировать новый ключ API и секрет несколько раз сейчас, и у меня та же ошибка. Я чувствую, что это должно быть так, как я подписываю подпись в шапке.

Любая помощь будет принята с благодарностью.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]