# REST-API Bestellung importieren

**URL:** https://forum.shopware.com/t/rest-api-bestellung-importieren/56723
**Category:** Programmierung
**Created:** [27. November 2018 um 16:57 UTC](https://forum.shopware.com/t/rest-api-bestellung-importieren/56723 "2018-11-27T16:57:12Z")
**Posts on this page:** 6
**Page:** 1

<div class="post-metadata">

### Author: ![Magnum](https://avatars.discourse-cdn.com/v4/letter/m/dec6dc/32.png) [@Magnum](https://forum.shopware.com/u/Magnum)
#### Post date: [27. November 2018 um 16:57 UTC](https://forum.shopware.com/t/rest-api-bestellung-importieren/56723/1 "2018-11-27T16:57:12Z")

</div>

Hallo,

ich möchte über die Rest-API Bestellungen importieren. Hierzu habe ich eine Array erstellt das ich per json\_encode umwandle und per POST an die API schicke.

Leider motzt die API:

**HTTP: 400**

**Could not decode json**

**json\_last\_error: Syntaxerror  
Raw:**

```
**Bad request!**

```

Ich kann wohl davon ausgehen das ich einen Fehler in meinem Array habe. Leider kann ich diesen nicht finden. Auch wenn ich das JSON Ergebnis checke kann ich keinen Fehler ausmachen. Vielleicht sieht hier jemand woch ich den Fehler mache im array:

```
 $import['orders'] = array( //Allgemeine Daten "customerId" =\> $kundenInformationen['data']['0']['id'], "paymentId" =\> $kundenInformationen['data']['0']['paymentId'], "dispatchId" =\> 9, "shopId" =\> 1, "invoiceAmount" =\> $result[$i][2], "invoiceAmountNet" =\> $result[$i][3], "invoiceShipping" =\> 0, "invoiceShippingNet" =\> 0, "orderTime" =\> $result[$i][4], "net" =\> 0, "taxFree" =\> 0, "languageIso" =\> 'd', "currency" =\> $result[$i][5], "currencyFactor" =\> 1, "paymentStatusId" =\> 17, "orderStatusId" =\> 0, //Rechnungsadresse "billing" =\> ["customerId" =\> $kundenInformationen['data']['0']['id'], "countryId" =\> 1, "stateId" =\> 3, ], //Lieferadreese "shipping" =\> ["customerId" =\> $kundenInformationen['data']['0']['id'], "countryId" =\> 1, "stateId" =\> 3, ]); //Artikeldaten While ($i \< count($result)) { $ArtikelId = $client-\>get('articles/'.$result[$i][7].'?useNumberAsId=true'); $import['orders']['details'][$i] = array( "articleId" =\> $ArtikelId['data']['id'], "taxId" =\> $result[$i][9], "taxRate" =\> 1, "statusId" =\> 0, "articleNumber" =\> $result[$i][7], "articleName" =\> $result[$i][10], "price" =\> $result[$i][9], "quantity" =\> 1, ); $i++; } 

```

Vielen Dank für die Mühe im voraus!

---

<div class="post-metadata">

### Author: ![ahmadsaad](https://avatars.discourse-cdn.com/v4/letter/a/65b543/32.png) [@ahmadsaad](https://forum.shopware.com/u/ahmadsaad)
#### Post date: [27. November 2018 um 22:54 UTC](https://forum.shopware.com/t/rest-api-bestellung-importieren/56723/2 "2018-11-27T22:54:28Z")

</div>

Hallo,&nbsp;

&nbsp;

Kannst du bitte das Json request eintragen??

&nbsp;

Vg,&nbsp;

Ahmad

---

<div class="post-metadata">

### Author: ![Magnum](https://avatars.discourse-cdn.com/v4/letter/m/dec6dc/32.png) [@Magnum](https://forum.shopware.com/u/Magnum)
#### Post date: [28. November 2018 um 08:42 UTC](https://forum.shopware.com/t/rest-api-bestellung-importieren/56723/3 "2018-11-28T08:42:30Z")

</div>

Hallo,

ich habe jetzt mal **json\_last\_error\_msg** &nbsp;eingebaut und erhalte folgende Meldung:

_HTTP: 400_

_Could not decode json_

_json\_last\_error: Syntaxerror  
Raw:_

_Bad request!_

_Your browser (or proxy) sent a request that this server could not understand._

_If you think this is a server error, please contact the [webmaster](mailto:postmaster@localhost)._

_Error 400_

_[localhost](http://localhost/)  
Apache/2.4.35 (Win32) OpenSSL/1.1.0i PHP/7.2.11_

&nbsp;

Hier der Json String:

_{„orders“:{„customerId“:1,„paymentId“:5,„dispatchId“:9,„shopId“:1,„invoiceAmount“:„80.79“,„invoiceAmountNet“:„67.89“,„invoiceShipping“:0,„invoiceShippingNet“:0,„orderTime“:„2012-08-31 08:51:46“,„net“:0,„taxFree“:0,„languageIso“:„d“,„currency“:„EUR“,„currencyFactor“:1,„paymentStatusId“:17,„orderStatusId“:0}}_

&nbsp;

Wenn ich die API direkt anspreche mit:

```
 $client-\>post('orders', [//Allgemeine Daten "customerId" =\> $kundenInformationen['data']['0']['id'], "paymentId" =\> $kundenInformationen['data']['0']['paymentId'], "dispatchId" =\> 9, "shopId" =\> 1, "invoiceAmount" =\> $result[$i][2], "invoiceAmountNet" =\> $result[$i][3], "invoiceShipping" =\> 0, "invoiceShippingNet" =\> 0, "orderTime" =\> $result[$i][4], "net" =\> 0, "taxFree" =\> 0, usw... dann funktioniert es einwandfrei. Da ich aber die Artikel Dynamisch generieren muss, dachte ich mir das ein Array die einfachste Lösung wäre. 

```

Ich hoffe mit diesen Infos kannst du schon was anfangen.

Beste Grüße

---

<div class="post-metadata">

### Author: ![stormerMike](https://avatars.discourse-cdn.com/v4/letter/s/e0b2c6/32.png) [@stormerMike](https://forum.shopware.com/u/stormerMike)
#### Post date: [28. November 2018 um 10:40 UTC](https://forum.shopware.com/t/rest-api-bestellung-importieren/56723/4 "2018-11-28T10:40:45Z")

</div>

> [@Magnum schrieb:](https://forum.shopware.com/profile/29723/Magnum "Magnum")
> 
> ich möchte über die Rest-API Bestellungen importieren. Hierzu habe ich eine Array erstellt das ich per json\_encode umwandle und per POST an die API schicke.

In deinem Post ist aber leider nur das

```
$client->get('articles/'.$result[$i][7].'?useNumberAsId=true');

```

zu sehen aber nicht dein wirklicher Code der mit deinem Array den POST/PUT Request macht.

```
{
  "orders": {
    "customerId": 1,
    "paymentId": 5,
    "dispatchId": 9,
    "shopId": 1,
    "invoiceAmount": "80.79",
    "invoiceAmountNet": "67.89",
    "invoiceShipping": 0,
    "invoiceShippingNet": 0,
    "orderTime": "2012-08-31 08:51:46",
    "net": 0,
    "taxFree": 0,
    "languageIso": "d",
    "currency": "EUR",
    "currencyFactor": 1,
    "paymentStatusId": 17,
    "orderStatusId": 0
  }
}

```

Wenn du diesen JSON Payload schickst ist das „order“ Element doch zu viel oder.

Laut [Doku](https://developers.shopware.com/developers-guide/rest-api/examples/order/#example-4-creating-an-order) geht es so:

```
$client->post('orders', [
    "customerId" => 1,
    "paymentId" => 4,
    "dispatchId" => 9,
    "partnerId" => "",
    "shopId" => 1,
    // ...
    ]
);

```

„orders“ ist der Pfad der API (/api/orders) und der JSON Payload ist ein Array das direkt mit " **customerId**", etc. anfängt. Rein mit den gegebenen Informationen sieht es für mich danach aus.

---

<div class="post-metadata">

### Author: ![ahmadsaad](https://avatars.discourse-cdn.com/v4/letter/a/65b543/32.png) [@ahmadsaad](https://forum.shopware.com/u/ahmadsaad)
#### Post date: [28. November 2018 um 15:59 UTC](https://forum.shopware.com/t/rest-api-bestellung-importieren/56723/5 "2018-11-28T15:59:03Z")

</div>

Hallo @Magnum‍,

ja naturlisch benutzen ein Array ist einfacher und es ist die richtig weg.

Shopware Api Client würde diese Array zu Json encoding.

ich möchte die Json Post nur zu sehen was ist das falsche eintrag in ihre request.

also wie&nbsp;[stormerMike](https://forum.shopware.com/profile/29983/stormerMike)&nbsp;hat gesagt das Problem in deine Request diese ‘orders’ key am Anfang diese Array.

was du darfst jetzt machen anderen Ihre Array zu :

```
$order = array(
    //Allgemeine Daten
    "customerId" => $kundenInformationen['data']['0']['id'],
    "paymentId" => $kundenInformationen['data']['0']['paymentId'],
    "dispatchId" => 9,
    "shopId" => 1,
    "invoiceAmount" => $result[$i][2],
    "invoiceAmountNet" => $result[$i][3],
    "invoiceShipping" => 0,
    "invoiceShippingNet" => 0,
    "orderTime" => $result[$i][4],
    "net" => 0,
    "taxFree" => 0,
    "languageIso" => 'd',
    "currency" => $result[$i][5],
    "currencyFactor" => 1,
    "paymentStatusId" => 17,
    "orderStatusId" => 0,
    //Rechnungsadresse
    "billing" => [
        "customerId" => $kundenInformationen['data']['0']['id'],
        "countryId" => 1,
        "stateId" => 3,
    ],
    //Lieferadreese
    "shipping" => [
        "customerId" => $kundenInformationen['data']['0']['id'],
        "countryId" => 1,
        "stateId" => 3,
    ]);
//Artikeldaten
While ($i < count($result)) {
    $ArtikelId = $client->get('articles/'.$result[$i][7].'?useNumberAsId=true');
    $order['details'][$i] = array(
        "articleId" => $ArtikelId['data']['id'],
        "taxId" => $result[$i][9],
        "taxRate" => 1,
        "statusId" => 0,
        "articleNumber" => $result[$i][7],
        "articleName" => $result[$i][10],
        "price" => $result[$i][9],
        "quantity" => 1,
    );
    $i++;
}

```

dann schick deine Request wie so :

&nbsp;

```
$client->post('orders', $order);

```

&nbsp;

VG,

Tel.: +49 755&nbsp;- 183 990 00 | Web:&nbsp;[http://enbit.de/](http://enbit.de/)

---

<div class="post-metadata">

### Author: ![Magnum](https://avatars.discourse-cdn.com/v4/letter/m/dec6dc/32.png) [@Magnum](https://forum.shopware.com/u/Magnum)
#### Post date: [28. November 2018 um 19:35 UTC](https://forum.shopware.com/t/rest-api-bestellung-importieren/56723/6 "2018-11-28T19:35:38Z")

</div>

Hallo,

vielen Dank für eure Korrektur im Bezug auf das Array. Hat wie erwartet sofort funktioniert. Manchmal sieht man die Lösung einfach nicht!

Beste Grüße

&nbsp;
