Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Korzystanie z API
Forum PHP.pl > Forum > PHP
Lethys
Witam,

Nigdy nie korzystałem z żadnego API i mam problem z pobraniem danych.

Chcę korzystać z API giełdy kryptowalutowej (BitCurex). W panelu wygenerowałem klucz api i secret, dałem zezwolenia na to co chcę odczytać ale teraz trzeba pobrać te dane przez PHP i tu nie mam pojęcia jak się do tego zabrać.

Link do objaśnień API: https://bitcurex.com/pl-pages,plnapi.html
Link do API: https://pln.bitcurex.com/api/0/

Chodzi mi o uzyskanie stanu mojego konta, czyli getFunds.

Mam taki zalążek ale nie wiem co dalej a w necie nie mogę znaleźć jakiegoś konkretnego tutoriala o obsłudze API:

  1. <?php
  2.  
  3. function bitcurex_api(method, params) {
  4. var url = 'https://pln.bitcurex.com/api/0/'+method;
  5. var api_key='MÓJ KLUCZ';
  6. var api_secret='MÓJ SEKRET';
  7. }
  8.  
  9.  
  10. bitcurex_api("getFunds");
  11.  
  12.  
  13. ?>


Jak stworzyć prosty skrypt to obsługi API, tak aby podane funkcje działały np. getFunds.

luniak
Api wygląda na restowe więc krok po kroku:

  1.  
  2. $key = "twoj-api-key";
  3. $secret = "twoj-api-secret";
  4. $url = 'https://pln.bitcurex.com/api/0/getFunds';
  5.  
  6.  
  7. // Generujemy sobie nonce [ wymagany zgodnei z dok. ]
  8. $mt = explode(' ', microtime());
  9. $req = array('nonce' => $mt[1].substr($mt[0], 2, 6));
  10.  
  11. $post_data = http_build_query($req, '', '&');
  12.  
  13. // Tworzymy headery z kluczmy restowymi
  14. $headers = array(
  15. 'Rest-Key: '.$key,
  16. 'Rest-Sign: '.base64_encode(hash_hmac('sha512', $post_data, base64_decode($secret), true)),
  17. );
  18.  
  19. // Ustawamy curl'a
  20. $ch = curl_init();
  21. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  22. curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; Bitcurex PLN PHP client; '.php_uname('s').'; PHP/'.phpversion().')');
  23. curl_setopt($ch, CURLOPT_URL, $url);
  24. curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
  25. curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
  26. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
  27.  
  28. // wysyłąmy zapytanie
  29. $res = curl_exec($ch);
  30. if ($res === false){ echo "błąd returna"; die; };
  31.  
  32. // dekodujmy jsona i dostajemy objekt z danymi
  33. $dec = json_decode($res, true);
  34.  
  35.  
Lethys
Cytat(luniak @ 19.08.2014, 15:19:37 ) *
Api wygląda na restowe więc krok po kroku:

  1.  
  2. $key = "twoj-api-key";
  3. $secret = "twoj-api-secret";
  4. $url = 'https://pln.bitcurex.com/api/0/getFunds';
  5.  
  6.  
  7. // Generujemy sobie nonce [ wymagany zgodnei z dok. ]
  8. $mt = explode(' ', microtime());
  9. $req = array('nonce' => $mt[1].substr($mt[0], 2, 6));
  10.  
  11. $post_data = http_build_query($req, '', '&');
  12.  
  13. // Tworzymy headery z kluczmy restowymi
  14. $headers = array(
  15. 'Rest-Key: '.$key,
  16. 'Rest-Sign: '.base64_encode(hash_hmac('sha512', $post_data, base64_decode($secret), true)),
  17. );
  18.  
  19. // Ustawamy curl'a
  20. $ch = curl_init();
  21. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  22. curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; Bitcurex PLN PHP client; '.php_uname('s').'; PHP/'.phpversion().')');
  23. curl_setopt($ch, CURLOPT_URL, $url);
  24. curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
  25. curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
  26. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
  27.  
  28. // wysyłąmy zapytanie
  29. $res = curl_exec($ch);
  30. if ($res === false){ echo "błąd returna"; die; };
  31.  
  32. // dekodujmy jsona i dostajemy objekt z danymi
  33. $dec = json_decode($res, true);
  34.  
  35.  


Kurcze nie działa, mam biały ekran nic nie zwraca.

Oczywiście podmieniłem klucz + secret.

Dodałem też:

  1. ini_set('display_errors', 1);


Ale nie pokazuje żadnego błędu.


Co do getFunds to zgodnie z dokumentacją trzeba jeszcz chyba wybrać zwrot:

Cytat
getFunds - pobiera aktualne saldo dostępne konta i adres zasileń BTC
POST: nonce=#, zwrot: plns, btcs, address


próbowałem w ten sposób:

  1. $url = 'https://pln.bitcurex.com/api/0/getFunds[plns]';


ale nie działa sad.gif
luniak
Emm ale jestes śwaidom że:
  1. $dec = json_decode($res, true);


nie wyświetla tylko przypisuje do zmiennej?

Bo mi ten kod ładnie działa i po zdumpowaniu dostaję ładną odpowiedź

array(3) { ["plns"]=> string(10) "0.00000000" ["btcs"]=> string(10) "0.00000000" ["address"]=> string(34) "14RXwdfzG2K2ozoQPwvPaDYvE1rQohUsQV" }
Lethys
Cytat(luniak @ 19.08.2014, 18:49:54 ) *
Emm ale jestes śwaidom że:
  1. $dec = json_decode($res, true);


nie wyświetla tylko przypisuje do zmiennej?

Bo mi ten kod ładnie działa i po zdumpowaniu dostaję ładną odpowiedź

array(3) { ["plns"]=> string(10) "0.00000000" ["btcs"]=> string(10) "0.00000000" ["address"]=> string(34) "14RXwdfzG2K2ozoQPwvPaDYvE1rQohUsQV" }



Dobra działa wielkie dzięki. Dawno nie siedziałem w php i podstaw pozapominałem.

A jakbym chciał skorzystać przykładowo z buyBTC,

Cytat
buyBTC - ustawia zlecenie skupu BTC (BID)
POST: nonce=#&amount=#&price=#, zwrot: plns, btcs, orders


To po prostu zamieniam:

  1. $url = 'https://pln.bitcurex.com/api/0/buyBTC&amount=1.323&price=1762';


tak? czy trzeba będzie jeszcze coś kombinować?
luniak
do tablicy dodajesz pozostałe 2 zmienne:

  1. $req = array(
  2. 'nonce' => $mt[1].substr($mt[0], 2, 6)
  3. 'amount'=>1.323,
  4. 'price'=>1762
  5. );
  6.  


a w urlu zmieniasz tylko metodę:

  1. $url = 'https://pln.bitcurex.com/api/0/buyBTC';
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.