2017-06-22 22 views
0

私はC-CEX.comで自分自身を認証し、account's wallet informationというテストにアクセスしようとしています。私は、細心の注意を払ってthe documentationに続いて、サンプルコードのためのWebを洗い上げますが、無駄に(脇this時代遅れのライブラリーから)しているC-CEX APIの署名が受け付けられません

- 結果は常にこれです:

>>>make_sign_and_request('getbalances') 
{'success': False, 'result': None, 'message': 'INVALID_SIGNATURE'} 

全体のプロセスはさらに複雑です実際には、見つかるべきPythonの例がないように見えます。and authentication is explained in PHP only(私のコードはこの上に基づいています)。

私の署名機能:

import requests 
import time 
import urllib 
import hashlib 
import hmac 

# Keys for the test account 
API_KEY = '7EAEBD233321AB48C8B5EAB58FF8849B' 
API_SECRET = '139057C3B770C2DBCFCFFDD0D8A56E3F' 


def make_sign_and_request(endpoint, **request_kwargs): 
    req_kwargs = {'url': 'https://c-cex.com/t', 'headers': {}, 'files': {}, 
        'data': {}, 'params': {}, 'auth': {}, 'cookies': {}, 
        'hooks': {}, 'json': {}} 
    req_kwargs.update(request_kwargs) 

    # Prepare Payload arguments 
    nonce = str(int(time.time() * 1000)) 

    params = req_kwargs.pop('params') 
    params['apikey'] = API_KEY 
    params['nonce'] = nonce 
    post_params = params 
    post_params.update({'nonce': nonce, 'a': endpoint}) 
    url_encoded_params = urllib.parse.urlencode(post_params) 
    url = req_kwargs['url'] + '/api.html?' + url_encoded_params 
    print(url) 
    # generate signature 
    sig = hmac.new(API_SECRET.encode('utf-8'), url.encode('utf-8'), 
        hashlib.sha512).digest() 

    # update req_kwargs keys 
    req_kwargs['headers'] = {'apisign': sig} 
    req_kwargs['url'] = url 
    return requests.request('GET', **req_kwargs) 

print(make_sign_and_request('getbalances').json()) 

は今、私はPHPウィザードないんだけど、私は、私はかなり正確にPythonでコードを重複してきたかなり確信しています。まあ、明らかにそうでなければ、署名は受け入れられるでしょう。

apiキーが有効になっており、期待どおりに動作するはずです。期待される結果は次のようになります

according to the documentation:

{"success":true,"message":"","result":{"Currency":"BTC","Balance":0.00000000,"Available":0,"Pending":0.00000000,"CryptoAddress":""}} 

答えて

0

問題が解決されました:

は、問題を解決しhmacオブジェクト上hexdigest()への呼び出しを追加します。

関連する問題