2014-10-06 1 views
1

У меня мало проблем, когда я пытаюсь использовать API-интерфейс для биткойнов через python. У меня есть пример функции в PHP:Python: использование подписи HMAC для использования API (реализация из примера PHP)

function bitmarket_api($method, $params = array()) 
{ 
$key = "my_key"; 
$secret = "my_secret"; 
$params["method"] = $method; 
$params["tonce"] = time(); 
$post = http_build_query($params, "", "&"); 
$sign = hash_hmac("sha512", $post, $secret); 
$headers = array(
"API-Key: " . $key, 
"API-Hash: " . $sign, 
); 

$curl = curl_init(); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($curl, CURLOPT_URL, "https://www.bitmarket.pl/api2/"); 
curl_setopt($curl, CURLOPT_POST, true); 
curl_setopt($curl, CURLOPT_POSTFIELDS, $post); 
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); 
$ret = curl_exec($curl); 
return json_decode($ret); 
} 

И это моя реализация питон:

def bitmarket_api(method, params): 

    key = 'my_key' 
    secret = 'my_secret' 
    url = 'https://www.bitmarket.pl/api2/' 

    params['method'] = method 
    params['tonce'] = timestamp() 

    post = urllib.urlencode(params) 
    sign = base64.b64encode(str(HMAC(secret, post, sha512).digest())) 

    headers = {} 

    headers['API-Key:'] = key 
    headers['API-Hash:'] = sign 

    req = urllib2.Request(url, post, headers) 
    res = urllib2.urlopen(req, post) 
    return json.load(res) 

Так что, когда я пытаюсь вызвать метод INFO (или другой метод) я получаю «Invalid ключ API ' ошибка. Я искал решение, и я пробовал несколько других подходов без каких-либо успехов. Могут ли ребята помочь мне? Я думаю, проблема может быть в заголовках ... Прошу прощения за мой плохой английский. Я стараюсь изо всех сил, но я все еще ошибаюсь.

ответ