BitBay 3.0 API - problem z POST request

Początkujący
Posty: 2
Rejestracja: 18 lipca 2018
Reputacja: 0
Reputacja postu: 
0
Napiwki za post: 0 BTC

BitBay 3.0 API - problem z POST request

Postautor: wojtekr » środa, 18 lipca 2018, 17:25

Witam,

Na wstepie
Mam problem z API request ktore wymaga podania parametrow (np. placing orders). Problem tyczy sie nowego API 3.0 na gieldzie bitbay.net.
Przepisuje dzialajacy kod z API 2.0 do API 3.0. Trzymam sie oficjalnej dokumentacji https://docs.bitbay.net/v3.1.0/docs

Moj kod w python3.6 (wciecia sie wyrownaly niestety ale mysle ze jest czytelnie)

import requests
import json
import uuid
import time
import hashlib
import hmac

credentials = {'priv': 'xxx', 'pub': 'xxx'}
payload = {
'url':'https://api.bitbay.net/rest/trading/offer/BTC-PLN',
'params':{
'mode':'limit',
'offerType':'Sell',
'amount':'0.01',
'rate':'30000.0',
}
}
timestamp = str(int(time.time()))
string_data = credentials ['pub'] + timestamp + str(payload['params'])
sign = hmac.new(
credentials['priv'].encode(),
string_data.encode(),
hashlib.sha512
)
payload['headers'] = {
'API-Hash':sign.hexdigest(),
'API-Key': credentials['pub'],
'Request-Timestamp': timestamp,
'Operation-Id': str(uuid.uuid4())}
server_response = requests.post(**payload).json()


Problem
Powyzszy kod zwraca blad: INVALID_HASH_SIGNATURE
Zaznaczam ze podobny kod tylko bez parametrow, ktory korzysta z requests.get() dziala poprawnie (np. balance query), wiec domyslam sie ze problem tkwi w tym jak przekazuje parametry. Kontaktowalem sie juz z supportem z bitbay ale sa malo pomocni, mam wrazenie ze przydzielili do mnie jakiegos praktykanta...

Czy ktos bylby w stanie mi w tym pomoc?

Pozdrawiam,
Wojtek

Początkujący
Posty: 31
Rejestracja: 12 lipca 2017
Reputacja: 15
Reputacja postu: 
0
Napiwki za post: 0 BTC

BitBay 3.0 API - problem z POST request

Postautor: grzgrzgrz3 » środa, 18 lipca 2018, 17:51

Nie dam Ci gotowego rozwiązania ale Ci podpowiem, pomęcz się sam.

Podpowiedz:

:idea: json != dict

Kod: Zaznacz cały

grzegorz@grzegorz-VirtualBox:~/tmp/cypher$ python3 -c 'print({"test": "test"})' | jq
parse error: Invalid numeric literal at line 1, column 8


Kod: Zaznacz cały

grzegorz@grzegorz-VirtualBox:~/tmp/cypher$ man jq | head -5
JQ(1)

NAME
       jq - Command-line JSON processor



EDIT: zmieniłem trochę podpowiedz :)

Początkujący
Posty: 2
Rejestracja: 18 lipca 2018
Reputacja: 0
Reputacja postu: 
0
Napiwki za post: 0 BTC

BitBay 3.0 API - problem z POST request

Postautor: wojtekr » czwartek, 19 lipca 2018, 11:14

@grzgrzgrz3 dzieki za podpowiedz, dalo rade. Daj adres BCH albo DASH to ci wysle tipa;) na transakcje BTC mnie nie stac.

A wiec, dla kolejnych zagubionych.

W powyzszym kodzie sa dwa bledy.
1. dane do requesta nalezy podac jako "data" a nie "params"
2. "data" nalezy podac jako string (albo json.dumps()) a nie dict
3. nie jest to obowiazkowe ale powinno sie rowniez okreslic parametry 'postOnly', 'hidden' oraz 'fillOrKill'
4. rowniez nie obowiazkowo, ale w nowej dokumentacji znalazlem ze nalezy rowniez podac header 'Content-Type' - nie wiem po co to jest, dziala bez tego

Poprawiony, dzialajacy kod:

import requests
import json
import uuid
import time
import hashlib
import hmac

credentials = {'priv': 'xxx', 'pub': 'xxx'}
payload = {
'url':'https://api.bitbay.net/rest/trading/offer/BTC-PLN',
'data':str(
{
'amount':0.01,
'rate':30000.0,
'offerType':'sell',
'mode':'limit',
'postOnly':False,
'hidden':False,
'fillOrKill':False,
}
)
}

timestamp = str(int(time.time()))
string_data = credentials['pub'] + timestamp + payload['data']
sign = hmac.new(
credentials['priv'].encode(),
string_data.encode(),
hashlib.sha512
)
payload['headers'] = {
'API-Hash':sign.hexdigest(),
'API-Key': credentials['pub'],
'Request-Timestamp': timestamp,
'operation-id': str(uuid.uuid4()),
'Content-Type':'application/json',
}
raw_response = requests.post(**payload).json()


Pozatym bitbay udostepnil wzbogacona dokumentacje ktora jest o wiele bardziej kompletna
https://docs.bitbay.net/v3.2.1/

Pozdrawiam,
Wojtek;)

Wróć do „Programowanie i wdrożenia”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 1 gość