我错过了解释文档吗?也许是一个错误的URL结构?
文档链接—> here
每个Trade API请求都应通过身份验证.
通过发送以下HTTP标题来完成身份验证:
密钥 – API密钥,例如:FAF816D16FFDFBD1D46EEF5D5B10D8A2
符号 – 通过HMAC-SHA512通过密钥签名的数字签名,POST参数(?param0 = val0& …& nonce = 1)
后续请求中的参数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
####### PUBLIC 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})
##### TRADE 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;
}