Bitcoin Forum
May 05, 2024, 09:14:11 AM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: API connection für Anfänger  (Read 1125 times)
cypher21 (OP)
Hero Member
*****
Offline Offline

Activity: 854
Merit: 503


View Profile
October 10, 2016, 07:38:32 AM
 #1

Hallo,
ich bin Anfänger im Bereich PHP.
Wollte aus Spass mal ein wenig in die Materie API einarbeiten.

Habe mir als erstes die Platform Yobit vorgenommen und habe dort mit ein wenig Youtube Hilfe den Public API ausgeben können und die einzelnen Daten von den Coins auslesen können.
Leider schaffe ich es nicht die Private zu integrieren um meine eigene Balance auslesen zu können..
Gibt es für so etwas TUTs für Einsteiger? Habe jetzt auf Youtube einfahc nichts passendes gefunden (Ja zu PHP gibt es ne Menge), würde aber gern mehr Beispiele über die Exchange Seiten haben wollen.
Vielen Dank für die Antworten im Voraus. Smiley
"Your bitcoin is secured in a way that is physically impossible for others to access, no matter for what reason, no matter how good the excuse, no matter a majority of miners, no matter what." -- Greg Maxwell
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
Armin van Bruggen
Full Member
***
Offline Offline

Activity: 232
Merit: 101


Stratege, berechnend


View Profile
October 10, 2016, 08:31:14 AM
 #2

Wo genau liegt denn das Problem?
-Du solltest Ahnung in PHP von JSON und Requests an sich haben, mehr ist es nicht...
cypher21 (OP)
Hero Member
*****
Offline Offline

Activity: 854
Merit: 503


View Profile
October 10, 2016, 08:37:28 AM
 #3

Naja ich habe von nichts eine Ahnung.
Habe mal ein wenig C++ programiert und halt jetzt mit PHP mal auf eigene Faust angefangen.
Einfache Befehle funktionieren, sogar auch der Aufruf der Public API.
Habe aber das Problem das ich nicht genau weiß wie man die Private implementiert und die funktionen dann damit aufruft.
Konkret würde mir am meisten helfen wenn es irgendwo ne Seite gibt die genau das bei YOBIT zeigt(Yobit Seite hilft mir nicht wirklich weiter, brauche den konkreten Code). So kann ich mich dann lang hangeln und bei anderen Börsen auch mal probieren.
cypher21 (OP)
Hero Member
*****
Offline Offline

Activity: 854
Merit: 503


View Profile
October 10, 2016, 06:18:36 PM
 #4

Keiner ne Ahnung? Gebe auch gern nen Trinkgeld für nen Hinweis
phantastisch
Legendary
*
Offline Offline

Activity: 2270
Merit: 1363



View Profile
October 10, 2016, 06:31:25 PM
 #5

Wie rufst du denn die Public Api im Moment auf?

Kleines Codebeispiel wäre hilfreich um zu verstehen was du schon geschafft hast, und wo du noch hängst, auch wenn ich schon eine Idee habe.

HOWEYCOINS   ▮      Excitement and         ⭐  ● TWITTER  ● FACEBOOK   ⭐       
  ▮    guaranteed returns                 ●TELEGRAM                         
  ▮  of the travel industry
    ⭐  ●Ann Thread ●Instagram   ⭐ 
✅    U.S.Sec    ➡️
✅  approved!  ➡️
cypher21 (OP)
Hero Member
*****
Offline Offline

Activity: 854
Merit: 503


View Profile
October 10, 2016, 06:48:02 PM
 #6

Hi Danke Smiley
Also das ist meine Public:

function make_public_api_call($query)
{
$base_url = "https://yobit.net/api/3/";
$uri = $base_url . $query;
$ch = curl_init($uri);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$execResult = curl_exec($ch);
$result = json_decode($execResult, true);

return $result;
}


Die funktioniert.


Das meine Private:
function make_private_api_call($query)
{
$apikey = "";
$apisecret = "";
$nonce = time();
$base_url = "https://yobit.net/tapi/";
echo $base_url;
$uri = $base_url . $query . "&apikey=" . $apikey . "&nonce=" . $nonce;
$sign = hash_hmac("sha512", $uri, $apisecret);
$ch = curl_init($uri);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("apisign:" $sign));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$execResult = curl_exec($ch);
$result = json_decode($execResult, true);
sleep(1);

return $result;

}

Die macht Probleme

und das die get_balance.

function get_balance()
{
$command = "info";
$params = "";
$query = "$command/$params";
$result = make_private_api_call($query);


return $result;
}

Vielen lieben Dank. Ich komme einfach nicht weiter.
phantastisch
Legendary
*
Offline Offline

Activity: 2270
Merit: 1363



View Profile
October 10, 2016, 07:52:15 PM
 #7

Hab mal damit ein wenig rumgespielt und folgende Dinge gefunden :

Deine Variablen sind nicht richtig benannt und unvollständig : Im Header müssen sie Sign und Key heißen und beide vorhanden sein.
Deine Postparameter enthalten nicht getInfo als Method, sondern nur Info.
Die Postparameter müssen folgende sein : nonce und method.
Du hashst als Sign die komplette Url, du musst nur die Postparameter Hashen.
Das Sleep solltest du nicht brauchen, da der Request synchron ist und das Skript erst weiterläuft wenn eine Antwort da ist oder es einen Timeout gibt.

Hab mir mal die Freiheit genommen und hier eine funktionierende verbesserte Version :

function make_private_api_call($query)
{
    $apikey = "";
    $apisecret = "";
    $base_url = "https://yobit.net/tapi/";

    $req['method'] = $query;
    $req['nonce'] = time();
    $post_data = http_build_query($req, '', '&');

    $sign = hash_hmac("sha512", $post_data, $apisecret);
    $headers = array(
        'Sign: '.$sign,
        'Key: '.$apikey,
    );


    $ch = curl_init($base_url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_ENCODING , 'gzip');


$execResult = curl_exec($ch);
$result = json_decode($execResult, true);

return $result;

}

function get_balance()
{
    $command = "getInfo";
    $params = "";
    $query = "$command";
    $result = make_private_api_call($query);


    return $result;
}

HOWEYCOINS   ▮      Excitement and         ⭐  ● TWITTER  ● FACEBOOK   ⭐       
  ▮    guaranteed returns                 ●TELEGRAM                         
  ▮  of the travel industry
    ⭐  ●Ann Thread ●Instagram   ⭐ 
✅    U.S.Sec    ➡️
✅  approved!  ➡️
cypher21 (OP)
Hero Member
*****
Offline Offline

Activity: 854
Merit: 503


View Profile
October 10, 2016, 08:02:09 PM
 #8

Vielen Vielen Dank.

Ich kann jetzt endlich weiter arbeiten. ich danke dir so vielmals Smiley Besonders das du dir die Mühe gegeben hast sie zu verbessern.
cypher21 (OP)
Hero Member
*****
Offline Offline

Activity: 854
Merit: 503


View Profile
October 11, 2016, 09:35:43 AM
 #9

So getestet und für gut befunden, jedoch nächstes Problem.
Ich bekomme vom Server nen Error Response wieder.

Jemand ne Idee Wink
phantastisch
Legendary
*
Offline Offline

Activity: 2270
Merit: 1363



View Profile
October 11, 2016, 11:06:19 AM
 #10

So getestet und für gut befunden, jedoch nächstes Problem.
Ich bekomme vom Server nen Error Response wieder.

Jemand ne Idee Wink

Was sagt die Response ?

HOWEYCOINS   ▮      Excitement and         ⭐  ● TWITTER  ● FACEBOOK   ⭐       
  ▮    guaranteed returns                 ●TELEGRAM                         
  ▮  of the travel industry
    ⭐  ●Ann Thread ●Instagram   ⭐ 
✅    U.S.Sec    ➡️
✅  approved!  ➡️
cypher21 (OP)
Hero Member
*****
Offline Offline

Activity: 854
Merit: 503


View Profile
October 11, 2016, 04:38:02 PM
 #11

Ich rufe die get_balance in der Main auf:

<?php
include "yobit_api.php";
print_r(get_balance())
?>


und im browser steht

Array ( [success] => 0 [error] => invalid method )

Die Methode müsste aber doch richtig sein oder nicht?
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!