Ich versuche mich mit C-CEX.com zu authentifizieren, indem ich auf einen Test account's wallet information zugreife.Signatur für C-CEX API nicht akzeptiert
Ich habe gefolgt sorgfältig the documentation und abgekocht die Bahn zum Beispiel Code, aber ohne Erfolg (abgesehen von this veralteter Bibliothek) - das Ergebnis ist immer:
>>>make_sign_and_request('getbalances')
{'success': False, 'result': None, 'message': 'INVALID_SIGNATURE'}
Der gesamte Prozess ist weiter komplizierter durch die Tatsache, dass es anscheinend kein Python-Beispiel gibt, and authentication is explained in PHP only (auf dem mein Code unten basiert).
Meine Signaturfunktion:
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())
Nun, ich bin kein PHP
Assistenten, aber ich bin ziemlich sicher, dass ich den Code in Python ziemlich genau dupliziert haben. Nun, natürlich nicht, sonst würde die Unterschrift akzeptiert werden.
Die API-Schlüssel wurden aktiviert und sollten wie erwartet funktionieren.
Das erwartete Ergebnis in etwa so aussehen sollte, according to the documentation:
{"success":true,"message":"","result":{"Currency":"BTC","Balance":0.00000000,"Available":0,"Pending":0.00000000,"CryptoAddress":""}}