Я пытаюсь написать сценарий для общения с онлайн-обменом.
запросы 'Public направляются: https://yobit.net/api/3/
запросы 'Trade' направляются: https://yobit.net/tapi/Проверка аутентификации API в Python (рабочий пример PHP)
Мои общественные запросы работают отлично. Однако мои «частные вызовы» возвращают ошибку 404. Мои ключи на 100% правильны.
Я в настоящее время производят следующий URL: https://yobit.net/tapi/activeorders/ltc_btc/&apikey=MY_APIKEY_HERE&nonce=1456192036
ли я missinterpret документацию? Возможно, ложная структура URL?
Документация Link --->here
Каждый запрос API торговли должен пройти аутентификацию. Аутентификация выполняется путем отправки следующих HTTP-заголовков: Key - API-ключ, пример: FAF816D16FFDFBD1D46EEF5D5B10D8A2 знак - цифровая подпись, POST-параметры (param0 = val0 & ... & = 1 одноразовое значение?), Подписанное секретным ключом через HMAC-SHA512 Параметр nonce (1 минимум до 2147483646 максимум) в последующем запросе должен превышать значение предыдущего. К нулевому nonce необходимо создать новый ключ.
Мой сценарий
class yobit(object):
def __init__(self, key, secret):
self.key = key
self.secret = secret
self.public = ['info', 'ticker', 'depth', 'trades']
self.trade = ['activeorders']
def query(self, method, values={}):
if method in self.public:
url = 'https://yobit.net/api/3/'
elif method in self.trade:
url = 'https://yobit.net/tapi/'
else:
return 'You're doing it wrong'
urlString = ''
for i, k in values.iteritems():
urlString += k+'/'
url += method + '/' + urlString
print url
if method not in self.public:
url += '&apikey=' + self.key
url += '&nonce=' + str(int(time.time()))
signature = hmac.new(self.secret, url, hashlib.sha512).hexdigest()
headers = {'apisign': signature}
else:
headers = {}
print url
req = requests.get(url, headers=headers)
response = json.loads(req.text)
return response
####### ОБЩЕСТВЕННОГО API
def getinfo(self):
return self.query('info')
def getticker(self, currency):
return self.query('ticker', {'currency': currency})
def getdepth(self, currency):
return self.query('depth', {'currency': currency})
def gettrades(self, currency):
return self.query('trades', {'currency': currency})
##### ТОРГОВЛЕ API
def getactiveorders(self, pair):
return self.query('activeorders', {'pair': pair})
рабочий пример в PHP
Я считаю, что это рабочий пример PHP, к сожалению, я не могу читать этот язык.
function yobit_api_query2($method, $req = array())
{
$api_key = '';
$api_secret = '';
$req['method'] = $method;
$req['nonce'] = time();
$post_data = http_build_query($req, '', '&');
$sign = hash_hmac("sha512", $post_data, $api_secret);
$headers = array(
'Sign: '.$sign,
'Key: '.$api_key,
);
$ch = null;
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; SMART_API PHP client; '.php_uname('s').'; PHP/'.phpversion().')');
curl_setopt($ch, CURLOPT_URL, 'https://yobit.net/tapi/');
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_ENCODING , 'gzip');
$res = curl_exec($ch);
if($res === false)
{
$e = curl_error($ch);
debuglog($e);
curl_close($ch);
return null;
}
curl_close($ch);
$result = json_decode($res, true);
if(!$result) debuglog($res);
return $result;
}
ли вы когда-нибудь получить эту работу? –