2017-12-18 12 views
1

私は、暗号化交換のためのPythonラッパーを作成しようとしています。Rest API Parameter Error

#!/usr/bin/python2.7 
import hashlib 
import hmac 
import time 

base_url = 'https://api.coinnest.co.kr' 

class Coinnest(): 
def __init__(self, key, secret): 
    self.key = key 
    self.secret = secret 

def get_balance(self): 
    url = base_url + '/api/account/balance' 
    nonce = str(int(time.time())*1000) 
    key = hashlib.md5(self.secret).hexdigest() 
    message = 'key={}&nonce={}'.format(self.key, nonce) 
    signature = hmac.new(key, message, hashlib.sha256).hexdigest() 
    payload = {'key': key, 'nonce': nonce, 'signature': signature} 
    r = requests.post(url, data=payload) 
    return r.json() 

coinnest = Coinnest('','') 
print coinnest.get_order_history() 

応答:APIレスポンス記述に従ってu'status': 102, u'msg': u'', u'data': u''

:コード102は

パラメータエラーを意味します。必要なパラメータがないか、間違った形式です。

私は、すべての必要なパラメータが1.キー2.ノンス3.シグネチャを持っていると思います。ペイロードを間​​違った場所や間違った形式で配信していますか?残念ながら、そのドキュメントはあまり明確ではなく、私は初心者です。

ありがとうございます。

+0

郵便配達員はコードの前にリクエストをテストしましたか? – Gahan

+0

私は郵便受けをダウンロードし、システムを介して要求を実行しようとしました。私のペイロードが承認、ヘッダーまたは本文タブに該当するかどうかは不明です。 O.Auth 1.0はアクセストークン、トークン秘密鍵と最もよく似ていますが、md5ハッシュは標準機能ではありません。 – tada23

+0

[offtopic]しかし、私はcoinnest.co.krの皆さんに多くの質問をしています。なぜあいまいなハッシュアルゴリズムを使用しますか?なぜあなたはHTTPエラーコードの代わりにあいまいなエラーコードを使用しますか?私はあなたの痛みを感じますOP。[/ offtopic] – vittore

答えて

1

ドキュメントはひどいですが、md5(secret)でメッセージに署名し、keyを公開鍵に設定すると、md5(secret)とは異なるようです。

from collections import OrderedDict 
key = self.key 
secret_md5 = hashlib.md5(self.secret).hexdigest() 
signature = hmac.new(secret_md5, message, hashlib.sha256).hexdigest() 
payload = OrderedDict([('key', key), ('nonce', nonce), ('signature', signature)]) 

また、パラメータの順序を強制するために順序付き辞書を使用することをおすすめします。

+0

はい。そのとおり。 –