# Store API - Produkt in Warenkorb legen

**URL:** <https://forum.shopware.com/t/store-api-produkt-in-warenkorb-legen/101975>\
**Category:** Programmierung\
**Tags:** general, programming\
**Created:** [20. November 2023 um 09:06 UTC](https://forum.shopware.com/t/store-api-produkt-in-warenkorb-legen/101975 "2023-11-20T09:06:22Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![slowhand](https://avatars.discourse-cdn.com/v4/letter/s/35a633/32.png) [@slowhand](https://forum.shopware.com/u/slowhand)\
**Post date:** [20. November 2023 um 09:06 UTC](https://forum.shopware.com/t/store-api-produkt-in-warenkorb-legen/101975/1 "2023-11-20T09:06:22Z")

</div>

Hallo,

ich habe versuche einen Artikel in den Warenkorb zu legen und habe mich exakt an folgendes gehalten:  
[Add items to the cart | Store API](https://shopware.stoplight.io/docs/store-api/c42e41eaf2490-add-items-to-the-cart) \> XMLHttpRequest

Als response bekomme ich auch positives feedback zurück. Allerdings erscheint der Artikel nicht im Warenkorb.

Ich habe bestimmt nur einen kleinen Denkfehler. Wäre um jeden Hinweis dankbar!

---

<div class="post-metadata">

**Author:** ![Schulte-Einhaus](https://avatars.discourse-cdn.com/v4/letter/s/f07891/32.png) [@Schulte-Einhaus](https://forum.shopware.com/u/Schulte-Einhaus)\
**Post date:** [21. November 2023 um 02:17 UTC](https://forum.shopware.com/t/store-api-produkt-in-warenkorb-legen/101975/2 "2023-11-21T02:17:39Z")

</div>

Ich denke, es liegt an dem fehlenden Token. Der Token wird ja verwendet um die Cart mit der User Sessions zu „verbinden“.

---

<div class="post-metadata">

**Author:** ![slowhand](https://avatars.discourse-cdn.com/v4/letter/s/35a633/32.png) [@slowhand](https://forum.shopware.com/u/slowhand)\
**Post date:** [21. November 2023 um 06:37 UTC](https://forum.shopware.com/t/store-api-produkt-in-warenkorb-legen/101975/3 "2023-11-21T06:37:16Z")

</div>

Hi, den Context-Token übergebe ich. Jedoch tut sich im cart selber trotzdem nichts.

---

<div class="post-metadata">

**Author:** ![Schulte-Einhaus](https://avatars.discourse-cdn.com/v4/letter/s/f07891/32.png) [@Schulte-Einhaus](https://forum.shopware.com/u/Schulte-Einhaus)\
**Post date:** [21. November 2023 um 22:07 UTC](https://forum.shopware.com/t/store-api-produkt-in-warenkorb-legen/101975/4 "2023-11-21T22:07:38Z")

</div>

Du müsstest dich als erstes als Kunden einloggen mittels store-api/account/login.  
In der Response bekommst du ein contextToken zurück.  
Dann machst du ein Request durch die URL store-api/checkout/cart/line-item. Im Header übergibst du als sw-context-token den contextToken den du zuvor erhalten hast. Dann werden die Items der Cart hinzugefügt. Taucht auch im Frontend auf. Hab ich getestet.  
Problem könnte nur sein, dass der User seine Cart verliert, wenn er sich neu einloggt. Das müsste man testen. Hier ist noch ein alter Thread dazu: [How to connect an existing customer with a cart created with sales channel API? - #3 von SorinSologics2019](https://forum.shopware.com/t/how-to-connect-an-existing-customer-with-a-cart-created-with-sales-channel-api/61657/3)

---

<div class="post-metadata">

**Author:** ![slowhand](https://avatars.discourse-cdn.com/v4/letter/s/35a633/32.png) [@slowhand](https://forum.shopware.com/u/slowhand)\
**Post date:** [22. November 2023 um 06:42 UTC](https://forum.shopware.com/t/store-api-produkt-in-warenkorb-legen/101975/5 "2023-11-22T06:42:21Z")

</div>

Also ohne Login geht das nicht?  
Einem Neukunden kann also nichts via API in den Warenkorb gelegt werden?  
Denn auch ohne Logged-in user bekomme ich ja einen context-token.

Es muss doch auch ohne login möglich sein?

---

<div class="post-metadata">

**Author:** ![Schulte-Einhaus](https://avatars.discourse-cdn.com/v4/letter/s/f07891/32.png) [@Schulte-Einhaus](https://forum.shopware.com/u/Schulte-Einhaus)\
**Post date:** [22. November 2023 um 12:28 UTC](https://forum.shopware.com/t/store-api-produkt-in-warenkorb-legen/101975/6 "2023-11-22T12:28:10Z")

</div>

Ich habe auf die Schnelle nichts dafür in den API docs gefunden.

Du könntest aber auch eine eigene Route dafür bauen, technisch möglich ist es auf jeden Fall.

---

<div class="post-metadata">

**Author:** ![slowhand](https://avatars.discourse-cdn.com/v4/letter/s/35a633/32.png) [@slowhand](https://forum.shopware.com/u/slowhand)\
**Post date:** [22. November 2023 um 12:42 UTC](https://forum.shopware.com/t/store-api-produkt-in-warenkorb-legen/101975/7 "2023-11-22T12:42:25Z")

</div>

Ich befürchte, das übersteigt meine Fähigkeiten. Shopware ist eigentlich nicht mein gewohntes Umfeld.  
Aber danke trotzdem.

---

<div class="post-metadata">

**Author:** ![slowhand](https://avatars.discourse-cdn.com/v4/letter/s/35a633/32.png) [@slowhand](https://forum.shopware.com/u/slowhand)\
**Post date:** [22. November 2023 um 16:54 UTC](https://forum.shopware.com/t/store-api-produkt-in-warenkorb-legen/101975/8 "2023-11-22T16:54:42Z")

</div>

P.s.: Das geht eingelogged auch nicht.

Hier mal mein Script:

````auto
             const data = JSON.stringify({
                items: [
                  {
                    type: 'product',
                    id: 'e7b6a5682d2c4027bd93b62ddf8d5c25',
                    referencedId: 'e7b6a5682d2c4027bd93b62ddf8d5c25',
                    quantity: 1,
                    removable: true
                  }
                ],
                //apiAlias: 'cart'
              });

              const xhr = new XMLHttpRequest();
              xhr.withCredentials = true;

              xhr.addEventListener('readystatechange', function () {
                if (this.readyState === this.DONE) {
                  // console.log(this.responseText);
                  
                } else {
                 // console.log(this.responseText);
                }
              });

              xhr.open('POST', 'https://hxxxxx.shop/store-api/checkout/cart/line-item');
              xhr.setRequestHeader('Content-Type', 'application/json');
              xhr.setRequestHeader('Accept', 'application/json');
              xhr.setRequestHeader('sw-access-key', 'XXXXX');
              xhr.setRequestHeader('sw-context-token', XXXXX);
         
              xhr.send(data);```
````

---

<div class="post-metadata">

**Author:** ![slowhand](https://avatars.discourse-cdn.com/v4/letter/s/35a633/32.png) [@slowhand](https://forum.shopware.com/u/slowhand)\
**Post date:** [6. Dezember 2023 um 09:09 UTC](https://forum.shopware.com/t/store-api-produkt-in-warenkorb-legen/101975/9 "2023-12-06T09:09:46Z")

</div>

Zur Info, so geht es:

```auto
                        var result = this.responseText;
                        var jsonResponse = JSON.parse(result);
                        var toke = jsonResponse["token"];
                        let formData = new FormData();

                        formData.append('_csrf_token', 'xxx.xxxx.xxxxxxxxx');
                        formData.append('lineItems[e7b6a5682d2c4027bd93b62ddf8d5c25][quantity]', 1);
                        formData.append('redirectTo', 'frontend.cart.offcanvas');
                        formData.append('lineItems[e7b6a5682d2c4027bd93b62ddf8d5c25][id]', 'e7b6a5682d2c4027bd93b62ddf8d5c25');
                        formData.append('lineItems[e7b6a5682d2c4027bd93b62ddf8d5c25][type]', 'product');
                        formData.append('lineItems[e7b6a5682d2c4027bd93b62ddf8d5c25][referencedId]', 'e7b6a5682d2c4027bd93b62ddf8d5c25');
                        formData.append('lineItems[e7b6a5682d2c4027bd93b62ddf8d5c25][stackable]', 1);
                        formData.append('lineItems[e7b6a5682d2c4027bd93b62ddf8d5c25][removable]', 1);
                        formData.append('product-name', 'Werkszeugnis 2.2/3.1');
                        formData.append('brand-name', '');
                        

                        const xhr = new XMLHttpRequest();
                        xhr.withCredentials = true;

                        xhr.addEventListener('readystatechange', function () {
                          if (this.readyState === this.DONE) {
                            // console.log(this.responseText);
                            
                          } else {
                           // console.log(this.responseText);
                          }
                        });

                        xhr.open('POST', 'https://domain.shop/en/checkout/line-item/add');
                        // xhr.setRequestHeader('Content-Type', 'multipart/form-data');
                        // xhr.setRequestHeader('Accept', '*/*');
                        xhr.setRequestHeader('sw-access-key', 'xxxxx');
                        xhr.setRequestHeader('sw-context-token', toke);
                        xhr.send(formData);

```

---

<div class="post-metadata">

**Author:** ![system](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/3X/2/9/29c7587ba660f00e4995d1743162782e5d6d8653.svg) [@system](https://forum.shopware.com/u/system)\
**Post date:** [5. Januar 2024 um 09:09 UTC](https://forum.shopware.com/t/store-api-produkt-in-warenkorb-legen/101975/10 "2024-01-05T09:09:47Z")

</div>

Dieses Thema wurde automatisch 30 Tage nach der letzten Antwort geschlossen. Es sind keine neuen Antworten mehr erlaubt.
