Store-API des Warenkorb Uploads pro Bestellung – Headless & PWA (Shopware 6)
Hinweis: Verfügbar ab Version 2.3.0
Wenn Sie Ihren Shop nicht mit der Shopware-Storefront betreiben, sondern mit einem eigenen Frontend – etwa einer PWA, einem Next.js- oder Nuxt-Projekt – lässt sich die komplette Upload-Strecke über die Store-API abbilden.
Alle Endpunkte erwarten den sw-access-key-Header Ihres Verkaufskanals und den sw-context-token des Kunden.
Übersicht der Endpunkte
| Methode | Pfad | Zweck |
|---|---|---|
| HEAD/POST/PATCH/DELETE | /store-api/checkout/order-upload/{id} | tus-Upload (anlegen, Daten senden, abbrechen) |
| GET | /store-api/checkout/order-upload/{id}/get | Status eines laufenden Uploads |
| POST | /store-api/checkout/order-upload-delete | Hochgeladene Datei entfernen |
Hinweis: Die Pfade unterscheiden sich bewusst vom Schwester-Plugin Warenkorb Upload pro Artikel, das
item-uploadverwendet. So können beide Plugins parallel installiert sein, ohne dass sich die Routen ins Gehege kommen.
Wie der Upload abläuft
Der Upload nutzt das tus-Protokoll für wiederaufnehmbare Uploads. Der Ablauf besteht aus zwei Schritten.
1. Upload anlegen
Ein POST ohne Dateiinhalt meldet die Datei an. Die Zuordnung zum Warenkorb passiert über den Upload-Metadata-Header – die Werte sind jeweils Base64-kodiert. Anders als beim Schwester-Plugin gibt es keine lineItemId, weil der Upload für die gesamte Bestellung gilt:
curl -X POST https://ihr-shop.de/store-api/checkout/order-upload/1 \
-H "sw-access-key: IHR-ACCESS-KEY" \
-H "sw-context-token: IHR-CONTEXT-TOKEN" \
-H "Tus-Resumable: 1.0.0" \
-H "Upload-Length: 20480" \
-H "Upload-Metadata: cartToken <base64>,name <base64>"Die Antwort ist 201 Created mit einem Location-Header. Diese URL ist das Ziel für den zweiten Schritt.
Wichtig:
cartTokenmuss der Token des aufrufenden Kontexts sein – also derselbe Wert, den Sie alssw-context-tokensenden. Ein fremder Warenkorb wird mit403abgelehnt.
2. Daten senden
curl -X PATCH <Location-URL> \
-H "sw-access-key: IHR-ACCESS-KEY" \
-H "sw-context-token: IHR-CONTEXT-TOKEN" \
-H "Tus-Resumable: 1.0.0" \
-H "Upload-Offset: 0" \
-H "Content-Type: application/offset+octet-stream" \
--data-binary @datei.pdfDie Antwort ist 204 No Content. Große Dateien lassen sich in mehreren PATCH-Aufrufen mit fortlaufendem Upload-Offset senden; ein abgebrochener Upload kann an derselben Stelle fortgesetzt werden.
Datei entfernen
curl -X POST https://ihr-shop.de/store-api/checkout/order-upload-delete \
-H "sw-access-key: IHR-ACCESS-KEY" \
-H "sw-context-token: IHR-CONTEXT-TOKEN" \
-d "id=<id des Uploads>"Antwort bei Erfolg:
{ "apiAlias": "futi_order_upload_delete", "success": true, "id": "…" }Gehört die Datei zu einem anderen Warenkorb, antwortet die Route mit 403; ist die ID unbekannt, mit 404.
Hinweis: Der Parameter heißt hier
id, nichtcartUploadIdwie beim Schwester-Plugin. Das entspricht der seit jeher genutzten Storefront-Route dieses Plugins.
Was Sie in Ihrem Frontend selbst bauen müssen
Die Store-API deckt die Serverseite ab. Im Frontend bleiben:
- die Auswahl- und Fortschrittsoberfläche für den Upload (die Storefront nutzt dafür Uppy mit dem tus-Plugin – das lässt sich in jedem JavaScript-Frontend genauso einsetzen)
- die Prüfung auf erlaubte Dateitypen und die maximale Anzahl vor dem Absenden, damit Kunden nicht erst nach dem Upload eine Fehlermeldung sehen
- die Anzeige der bereits hochgeladenen Dateien
Die Einstellungen zu erlaubten Dateitypen und Anzahl pflegen Sie weiterhin in der Plugin-Konfiguration, siehe Erweiterung.
Bestellung und Administration
Am Ablauf nach dem Bestellabschluss ändert sich nichts: Die Dateien werden der Bestellung zugeordnet und sind in der Administration abrufbar, siehe Daten herunterladen. Auch das E-Mail-Template funktioniert unverändert.
Nächster Schritt: Changelog →
War diese Seite hilfreich?
Support
Gemietete Plugins (Shopware Store)
Für Support zu im Shopware Store gemieteten Plugins erstellen Sie bitte ein Support-Ticket in Ihrem Shopware-Konto.
Shopware-Ticket erstellenAllgemeine Anfragen
Für allgemeine Fragen oder Kauflizenzen erreichen Sie uns per E-Mail.
E-Mail senden