Jump to content
xt:Commerce Community Forum

xt:Commerce API - Frage zur Verwendung


Kauert
 Share

Recommended Posts

Hallo Liebes Forum,

zunächst kurze Info zum System: 

xt:Commerce Version 6.1.2

Plugin xt_api Version 6.0.6

 

Nun mein Problem/meine Frage:

Ich bekam die Aufgabe, dieses Plugin Einzurichten, damit später in einem anderen Programm mit den Daten gearbeitet werden kann.
Ich hielt mich dabei an die Anleitung von xt:Commerce zu dem Plugin.

Ich habe im Schritt " Authentifizierung & Request" folgende Dinge befolgt

  1. Einen Benutzer unter Einstellungen > API angelegt
  2. Benutzer und Log aktiviert

 

Und nun stehe ich leider schon auf dem Schlauch, denn der Aufruf über http://YOUR-SHOP.com/index.php?page=xt_api (Domain natürlich mit der richtigen ausgetauscht) liefert mir folgenden Output:

{"result":false,"message":"invalid JSON"}

Ich kenne mich leider mit API Schnittstellen nicht aus, gehe aber stark davon aus, das hier noch ein Zwischenschritt fehlt, da ich noch nirgends angegeben habe, was den überhaupt ausgegeben werden soll. In der Anleitung steht als Beispiel Call zum Beispiel eine kleine JSON Datei. Mein erster Gedanke ist also, das ich diese Datei/diesen Code irgendwo angeben muss, damit er auch ausgeführt wird.

Nun steht hier leider nirgends wo. Ich habe schon recherchiert, aber die meisten Forenbeiträge sind immerhin schon an einem Punkt, wo etwas ausgeben wird. Leider bin ich bis dahin noch gar nicht gekommen. In xt:Commerce selbst finde ich nur die Einstellungen zu dem Benutzer und das Log, in dem nichts steht.

Meine Frage ist nun also, wo/wie ich der API sage, was genau sie ausführen soll.

 

Über Rückmeldung und Hilfe würde ich mich sehr freuen.

 

Link to comment
Share on other sites

Mit der API kommunizierst du in der Regel über ein Skript, z.B. PHP.

Über Curl kannst du z.B. dann Anfragen an die API schicken.

Das könnte dann z.B. zum löschen eines Produkts in etwa so aussehen (hab ich nicht direkt getestet, sollte aber in etwa hinhauen):

// Hier muss dein API Username hin 
$api_user = "username";
// Hier muss dein API User Passwort hin
$api_pass = "pass";
// Hier muss deine Shop URL hin
$api_url = "https://YOUR-SHOP.com/index.php?page=xt_api";

// Lösche Produkt mit nummer 123
$products_id = 123;

$post_data = array(
    "function" => "deleteArticle",
    "paras" => array(
        "user" => $api_user,
        "pass" => $api_pass,
        "products_id" => $products_id,
    )
);
$post_data_json = json_encode($post_data);
$ch = curl_init($api_url);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data_json);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Content-Type: application/json',
    'Content-Length: ' . strlen($post_data_json))
);
$response = curl_exec($ch);
var_dump($response); 

 

 

 

Link to comment
Share on other sites

Vielen Dank für die Antwort!

Ich habe es mittlerweile über unser Schnittstellen-Programm geschafft. Dieses spielt die JSON ein und liefert dann das Ergebnis wieder zurück.

Nun habe ich allerdings das Problem, dass mir bei dem Call getAttributes(JSON) die ausgegebene Anzahl der Attribute auf 100 beschränkt wird. In dem Call steht außer den Anmelde-Parametern nur "extNumberRange". Ich habe hier ein wenig herumgespielt, aber es hatte keinerlei Auswirkungen. 

Ist der Call an sich auf 100 beschränkt?

 

Link to comment
Share on other sites

Von einer Beschränkung steht zumindest in der API Dokumentation nichts. Andere Funktionen haben aber eine Beschränkung (z.B. getOrders(JSON)). Da kann man dann über die Parameter "start" und "blocksize" durch die Einträge blättern. Also z.B. start = 0 und blocksize = 100 würde dir die ersten 100 Ergebnisse liefern. start = 100, blocksize = 100 dann die nächsten 100. Eventuell wurde das in der Dokumentation für getAttributes(JSON) einfach vergessen. Am besten mal ausprobieren.

Link to comment
Share on other sites

  • 3 weeks later...

Hallo, 

danke für die Antwort.

Ich habe es mittlerweile gefunden. In der getattributes.php im API Plugin war der Parameter size=100 gesetzt. Ich gehe daher davon aus, dass das den in dem Call angegeben Parameter size überschrieben hat. Ich habe den Wert in der php auf 9999 gesetzt und dann wurden mir auch alle Attribute ausgegeben.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
  • Create New...