Jump to content

Entwicklung von Python Skript zur Investition


Mr.Davidwater

Recommended Posts

Hi,

derzeit Programmiere ich in Python ein Skript für die API von Bitcoin.de. Leider bekommen ich immer den selben Fehler und kann ihn leider nicht finden.
Soweit ich sehen kann müsste mein Hash Code richtig sein den ich generiere, es liegt wahrscheinlich an der Versendung der Anfrage. 
Bekomme genau den selben Hash Code mit dem php Interpreter raus.
 

Bitte einfach erklären, kann mit Fachwörter nicht viel Anfangen. Würde mich sehr über ein Code Beispiel freuen 😄
 

Skript für den Hash Code:

import hashlib
import hmac


Post_Parameter={''}
GET_Parameter={''}
api_key= 'mein Api-Key'
nonce= "1234569"
api_secret= 'mein Api-secret'
http_method= 'GET'
uri= 'https://api.bitcoin.de/v4/orders'

get_parameter_url_encoded_query_string = ''
uri = uri+'?'+get_parameter_url_encoded_query_string
post_parameter_md5_hashed_url_encoded_query_string = hashlib.md5(''.encode('UTF-8')).hexdigest()
hmac_data= http_method+'#'+uri+'#'+api_key+'#'+nonce+'#'+post_parameter_md5_hashed_url_encoded_query_string
print(hmac_data)

hmac1= hmac.new(b'mein api-secret', b'', hashlib.sha256)
hmac1.update(bytes(hmac_data, 'utf-8'))
print(hmac1.hexdigest())

Mein Skript für die Abfrage:

import requests

url = "https://api.bitcoin.de/v4/orders"

payload={}
headers = {
  'X-API-KEY': 'Api-Key',
  'X-API-NONCE': "1234569",
  'X-API-SIGNATURE': 'signatur',

}

response = requests.request("GET", url, headers=headers, data=payload)

print(response.json())

Fehler Meldung:

{'errors': [{'message': 'Invalid signature', 'code': 5}], 'credits': 23}

 

Dokumentation Bitcoin.de: 

Signatur-GET-Beispiel

Es soll die API-Funktion showOrderbook mit den folgenden Ausgangswerten durchgeführt werden:

GET-Parameter:
{
    'type'    : 'buy',
    'amount'  : 5.3,
    'price'   : 255.50
}

POST-Parameter:
{
}

api_key:     'MY_API_KEY'    // Entspricht dem eigenen API-Key
nonce:       1234567         // Das für den aktuellen Request verwendete Nonce
api_secret:  'MY_API_SECRET' // Entspricht dem eigenen API-Secret
http_method: 'GET'
uri:         'https://api.bitcoin.de/v4/orders'

Schritt 1: einen validen URL-encoded Query-String aus den GET-Parametern generieren

get_parameter_url_encoded_query_string = 'type=buy&amount=5.3&price=255.5' // Die Reihenfolge der GET-Parameter ist irrelevant

Schritt 2: Erweitern der URI um GET-Parameter

uri = uri+'?'+get_parameter_url_encoded_query_string
=> 'https://api.bitcoin.de/v4/orders?type=buy&amount=5.3&price=255.5'

Schritt 3: md5-Hash der POST-Parameter für die HMAC-Daten erstellen¹

post_parameter_md5_hashed_url_encoded_query_string = md5('');
=> 'd41d8cd98f00b204e9800998ecf8427e'

Schritt 4: Konkatinieren der HMAC-Eingabedaten

hmac_data = http_method+'#'+uri+'#'+api_key+'#'+nonce+'#'+post_parameter_md5_hashed_url_encoded_query_string
=> 'GET#https://api.bitcoin.de/v4/orders?type=buy&amount=5.3&price=255.5#MY_API_KEY#1234567#d41d8cd98f00b204e9800998ecf8427e'

Schritt 5: Bilden des eigentlichen sha256-HMACs

hmac = HMAC('sha256', hmac_data, api_secret)
=> ''

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.