# Lagerbestand per REST-API

**URL:** <https://forum.shopware.com/t/lagerbestand-per-rest-api/27473>\
**Category:** Shopware 3.5\
**Tags:** programming\
**Created:** [21. Mai 2015 um 12:28 UTC](https://forum.shopware.com/t/lagerbestand-per-rest-api/27473 "2015-05-21T12:28:47Z")\
**Posts on this page:** 14\
**Page:** 1

<div class="post-metadata">

**Author:** ![Wolle](https://avatars.discourse-cdn.com/v4/letter/w/9f8e36/32.png) [@Wolle](https://forum.shopware.com/u/Wolle)\
**Post date:** [21. Mai 2015 um 12:28 UTC](https://forum.shopware.com/t/lagerbestand-per-rest-api/27473/1 "2015-05-21T12:28:47Z")

</div>

ich versuche eine Schnittstelle zwischen unserer WaWi und Shopware aufzubauen. Aus der WaWi erhalte ich auch den aktuellen Lagerbestand, aber dieser lässt sich nicht per REST-Schnittstelle übertragen… Ich hatte den Beispiel-Code aus der Doku genommen: `$updateInStock = array( 'mainDetail' =\> array( 'inStock' =\> 66 ) ); $client-\>call('articles/3', ApiClient::METHODE\_PUT, $updateInStock); $updateVariantInStock = array( 'variants' =\> array( array( // update per primary key 'id' =\> 726, 'inStock' =\> 99, ), array( // update per ordernumber key 'number' =\> 'SW10204.5', 'inStock' =\> 999, ), ) ); $client-\>call('articles/205', ApiClient::METHODE\_PUT, $updateVariantInStock);` was mache ich falsch?

---

<div class="post-metadata">

**Author:** ![Neox](https://avatars.discourse-cdn.com/v4/letter/n/b5a626/32.png) [@Neox](https://forum.shopware.com/u/Neox)\
**Post date:** [21. Mai 2015 um 12:36 UTC](https://forum.shopware.com/t/lagerbestand-per-rest-api/27473/2 "2015-05-21T12:36:53Z")

</div>

Was bekommst du für eine Fehlermeldung zurück?

---

<div class="post-metadata">

**Author:** ![Wolle](https://avatars.discourse-cdn.com/v4/letter/w/9f8e36/32.png) [@Wolle](https://forum.shopware.com/u/Wolle)\
**Post date:** [21. Mai 2015 um 12:41 UTC](https://forum.shopware.com/t/lagerbestand-per-rest-api/27473/3 "2015-05-21T12:41:47Z")

</div>

ich erhalte leider keine Fehlermeldung zurück

---

<div class="post-metadata">

**Author:** ![Neox](https://avatars.discourse-cdn.com/v4/letter/n/b5a626/32.png) [@Neox](https://forum.shopware.com/u/Neox)\
**Post date:** [21. Mai 2015 um 12:47 UTC](https://forum.shopware.com/t/lagerbestand-per-rest-api/27473/4 "2015-05-21T12:47:45Z")

</div>

Den Auth/Client (Kopf) übergibst du aber schon immer mit?

---

<div class="post-metadata">

**Author:** ![Wolle](https://avatars.discourse-cdn.com/v4/letter/w/9f8e36/32.png) [@Wolle](https://forum.shopware.com/u/Wolle)\
**Post date:** [21. Mai 2015 um 12:53 UTC](https://forum.shopware.com/t/lagerbestand-per-rest-api/27473/5 "2015-05-21T12:53:51Z")

</div>

wird immer übergeben. Das Abrufen der Artikel mit Variationen hatte per API funktioniert. `public function \_\_construct($apiUrl, $username, $apiKey,$debug=false) { $this-\>apiUrl = rtrim($apiUrl, '/') . '/'; $this-\>debug=$debug; //Initializes the cURL instance $this-\>cURL = curl\_init(); curl\_setopt($this-\>cURL, CURLOPT\_RETURNTRANSFER, true); curl\_setopt($this-\>cURL, CURLOPT\_FOLLOWLOCATION, false); curl\_setopt($this-\>cURL, CURLOPT\_HTTPAUTH, CURLAUTH\_DIGEST); curl\_setopt($this-\>cURL, CURLOPT\_USERPWD, $username . ':' . $apiKey); curl\_setopt($this-\>cURL, CURLOPT\_HTTPHEADER, array( 'Content-Type: application/json; charset=utf-8', )); } public function call($url, $method = self::METHODE\_GET, $data = array(), $params = array()) { if (!in\_array($method, $this-\>validMethods)) { throw new Exception('Invalid HTTP-Methode: ' . $method); } $queryString = ''; if (!empty($params)) { $queryString = http\_build\_query($params); } $url = rtrim($url, '?') . '?'; $url = $this-\>apiUrl . $url . $queryString; $dataString = json\_encode($data); curl\_setopt($this-\>cURL, CURLOPT\_URL, $url); curl\_setopt($this-\>cURL, CURLOPT\_CUSTOMREQUEST, $method); curl\_setopt($this-\>cURL, CURLOPT\_POSTFIELDS, $dataString); $result = curl\_exec($this-\>cURL); $httpCode = curl\_getinfo($this-\>cURL, CURLINFO\_HTTP\_CODE); return $this-\>prepareResponse($result, $httpCode); } public function put($url, $data = array(), $params = array()) { return $this-\>call($url, self::METHODE\_PUT, $data, $params); } `

---

<div class="post-metadata">

**Author:** ![Neox](https://avatars.discourse-cdn.com/v4/letter/n/b5a626/32.png) [@Neox](https://forum.shopware.com/u/Neox)\
**Post date:** [21. Mai 2015 um 12:59 UTC](https://forum.shopware.com/t/lagerbestand-per-rest-api/27473/6 "2015-05-21T12:59:10Z")

</div>

Hmm, wenn das Skript ausgeführt wird und irgentwas falsch ist sollte die API dir zumindest einen Fehler z. B. „Invalid JSON string“ etc. zurückgeben. Was sagt den der Server-Log? Und weils mir gerade einfällt, einen HTTP-Verzeichnisschutz hast du nicht auf deinem Shop?

---

<div class="post-metadata">

**Author:** ![Wolle](https://avatars.discourse-cdn.com/v4/letter/w/9f8e36/32.png) [@Wolle](https://forum.shopware.com/u/Wolle)\
**Post date:** [21. Mai 2015 um 13:03 UTC](https://forum.shopware.com/t/lagerbestand-per-rest-api/27473/7 "2015-05-21T13:03:23Z")

</div>

zurück erhalte ich ein Success, aber der Lagerbestand wurde nicht geändert. Shopware liegt nicht auf einen Server, wo ich Zugriff habe auf Server-Log etc…

---

<div class="post-metadata">

**Author:** ![Neox](https://avatars.discourse-cdn.com/v4/letter/n/b5a626/32.png) [@Neox](https://forum.shopware.com/u/Neox)\
**Post date:** [21. Mai 2015 um 13:40 UTC](https://forum.shopware.com/t/lagerbestand-per-rest-api/27473/8 "2015-05-21T13:40:05Z")

</div>

Hmm… Dann ist das Skript zu 99,99% richtig. Worauf läuft dein Shop? Windows, MAC oder Linux-System?

---

<div class="post-metadata">

**Author:** ![Wolle](https://avatars.discourse-cdn.com/v4/letter/w/9f8e36/32.png) [@Wolle](https://forum.shopware.com/u/Wolle)\
**Post date:** [21. Mai 2015 um 13:49 UTC](https://forum.shopware.com/t/lagerbestand-per-rest-api/27473/9 "2015-05-21T13:49:08Z")

</div>

Linux-Server mit Apache

---

<div class="post-metadata">

**Author:** ![Neox](https://avatars.discourse-cdn.com/v4/letter/n/b5a626/32.png) [@Neox](https://forum.shopware.com/u/Neox)\
**Post date:** [21. Mai 2015 um 13:54 UTC](https://forum.shopware.com/t/lagerbestand-per-rest-api/27473/10 "2015-05-21T13:54:26Z")

</div>

mhm… Dann kann ichs mir nicht erklären… Höchsten das ein vermeindliches Pflichtfeld fehlt. Ich übergebe Lagerbestände so: sieht n bisschen anders aus ist aber ansich das gleiche `{"name":"Oliven gr�n mit Paprika-Paste Karton= 6 Gl�ser a. 936 ml","mainDetail":{"number":"KOSK0002","inStock":26,}}` Füg mal den Artikelnamen und die Order-No mit ein und berichte vom Ergebniss. Grüße

---

<div class="post-metadata">

**Author:** ![Neox](https://avatars.discourse-cdn.com/v4/letter/n/b5a626/32.png) [@Neox](https://forum.shopware.com/u/Neox)\
**Post date:** [21. Mai 2015 um 14:00 UTC](https://forum.shopware.com/t/lagerbestand-per-rest-api/27473/11 "2015-05-21T14:00:44Z")

</div>

Grr… :quite: Kuck mal hier: [http://wiki.shopware.com/REST-API-Artik … 1\_919.html](http://wiki.shopware.com/REST-API-Artikel-Endpunkt%5C_detail%5C_1681%5C_919.html) Name ist Pflichtfeld und in den mainDetails die Order-No. Dann dürfte das Problem behoben sein. Dafür spuckt die API leider keine Fehlermeldung aus…

---

<div class="post-metadata">

**Author:** ![Wolle](https://avatars.discourse-cdn.com/v4/letter/w/9f8e36/32.png) [@Wolle](https://forum.shopware.com/u/Wolle)\
**Post date:** [21. Mai 2015 um 15:53 UTC](https://forum.shopware.com/t/lagerbestand-per-rest-api/27473/12 "2015-05-21T15:53:36Z")

</div>

folgendes habe ich jetzt übertragen, aber es passiert nichts hier das übergebene Array `array(2) { ["name"]=\> string(11) "Produktname" ["mainDetail"]=\> array(2) { ["inStock"]=\> int(0) ["number"]=\> string(3) "XYZ" } }` der Aufruf selbst war ` ApiClient::getInstance()-\>put('articles/'.$articlenr, $updateInStock); `

---

<div class="post-metadata">

**Author:** ![Neox](https://avatars.discourse-cdn.com/v4/letter/n/b5a626/32.png) [@Neox](https://forum.shopware.com/u/Neox)\
**Post date:** [21. Mai 2015 um 16:07 UTC](https://forum.shopware.com/t/lagerbestand-per-rest-api/27473/13 "2015-05-21T16:07:02Z")

</div>

Gibt dir die API immernoch ein „Sucess“ zurück? Sollte jetzt nicht mehr der Fall sein. Ich meine, nun stimmt dein Code nicht mehr durch die „“ und „{}“ Du sollst schon deinen Code verwenden (nur erweitern), meiner sieht nur anders aus, weil ich die API über HTTP beliefere, da meine Warenwirtschaft kein php-Script erstellen und ausführen kann. Gruß

---

<div class="post-metadata">

**Author:** ![Wolle](https://avatars.discourse-cdn.com/v4/letter/w/9f8e36/32.png) [@Wolle](https://forum.shopware.com/u/Wolle)\
**Post date:** [21. Mai 2015 um 16:25 UTC](https://forum.shopware.com/t/lagerbestand-per-rest-api/27473/14 "2015-05-21T16:25:13Z")

</div>

kommt jetzt ein PHP-Fehler vom Shop HTTP: 200 Could not decode json json\_last\_error: Syntaxfehler hier frage ich beim Shopbetreiber an, ob es “eigene” Pflichtfelder gibt und ob die API auch entsprechend der Doku ist. Der PDO-Fehler könnte auf ein eigenes Feld hinweisen. Danke erstmal
