Bitcoin Forum

Local => Off-Topic (Deutsch) => Topic started by: cypher21 on October 10, 2016, 07:38:32 AM



Title: API connection für Anfänger
Post by: cypher21 on October 10, 2016, 07:38:32 AM
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. :)


Title: Re: API connection für Anfänger
Post by: Armin van Bruggen on October 10, 2016, 08:31:14 AM
Wo genau liegt denn das Problem?
-Du solltest Ahnung in PHP von JSON und Requests an sich haben, mehr ist es nicht...


Title: Re: API connection für Anfänger
Post by: cypher21 on October 10, 2016, 08:37:28 AM
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.


Title: Re: API connection für Anfänger
Post by: cypher21 on October 10, 2016, 06:18:36 PM
Keiner ne Ahnung? Gebe auch gern nen Trinkgeld für nen Hinweis


Title: Re: API connection für Anfänger
Post by: phantastisch on October 10, 2016, 06:31:25 PM
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.


Title: Re: API connection für Anfänger
Post by: cypher21 on October 10, 2016, 06:48:02 PM
Hi Danke :)
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.


Title: Re: API connection für Anfänger
Post by: phantastisch on October 10, 2016, 07:52:15 PM
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;
}


Title: Re: API connection für Anfänger
Post by: cypher21 on October 10, 2016, 08:02:09 PM
Vielen Vielen Dank.

Ich kann jetzt endlich weiter arbeiten. ich danke dir so vielmals :) Besonders das du dir die Mühe gegeben hast sie zu verbessern.


Title: Re: API connection für Anfänger
Post by: cypher21 on October 11, 2016, 09:35:43 AM
So getestet und für gut befunden, jedoch nächstes Problem.
Ich bekomme vom Server nen Error Response wieder.

Jemand ne Idee ;)


Title: Re: API connection für Anfänger
Post by: phantastisch on October 11, 2016, 11:06:19 AM
So getestet und für gut befunden, jedoch nächstes Problem.
Ich bekomme vom Server nen Error Response wieder.

Jemand ne Idee ;)

Was sagt die Response ?


Title: Re: API connection für Anfänger
Post by: cypher21 on October 11, 2016, 04:38:02 PM
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?