Sales-Channel API: Warenkorb befüllen und in den Storefront Checkout wechseln

Hallo Leute,

ich habe vor eine Landingpage zu bauen, auf der man mit Hilfe der Sales-Channel API Produkte in den Warenkorb legen kann. Laut Doku erhält man beim Erzeugen eines neues Warenkorbs ein sw-context Token, mit dessen Hilfe man alle nachfolgende Api-Calls macht und den Warenkorb befüllt oder abfragt. Soweit so gut. Auf der Landingpage soll also nur die Warenkorbfunktionalität nachgebaut werden, der eigentliche Kaufprozess soll dann im Frontend von SW6 passieren.

Jetzt meine Frage, weil ich es nirgends gefunden habe: Wie springe ich in das Frontend und übergebe das korrekte sw-context Token an das Frontend, damit der vorher befüllte Warenkorb geladen wird und der Kunde sich registrieren oder als Gast bestellen kann?

Nachtrag (und eventuelle Lösung):

Ich übergebe das von der API erhaltene Token an das Shopware Frontend (z.B. per GET-Parameter) und überschreibe mit Hilfe eines Subscribers das von der Sales-Channel API vergebene Token in der Cart-Tabelle mit dem aktuellen Token des Storefront. Dann müsste der per Sales-Channel Api gefüllte Warenkorb im Shopware Frontend unter dem aktuellen Token sichtbar sein. Dann sollte es nachfolgend auch egal sein, ob der User sich registriert und bestellt oder als Gast bestellt.

Es ist nur eine Idee, falls es nicht sowieso mit Bordmitteln viel einfacher geht. Vielleicht hat so etwas schon mal Jemand gemacht?

Diesen Anwendungsfall habe ich auch. Gibt es dazu eine Info,Anleitung oder Lösung?

Geht im Standard nicht. Du musst dir einen Controller bauen, der dir das in die PHP Session rüberholt. Am besten nicht den sw-context-token übergeben, dadurch öffnest du eine neue Sicherheitslücke

2 Likes

Das ist irgendwie sehr enttäuschend, aber danke für deine Antwort und Aufklärung!

@Shyim schrieb:

Geht im Standard nicht. Du musst dir einen Controller bauen, der dir das in die PHP Session rüberholt. Am besten nicht den sw-context-token übergeben, dadurch öffnest du eine neue Sicherheitslücke

Danke für die Antwort. Wieso mit einem Controller? Ich möchte ja ins Storefront wechseln und dort soll der korrekte Warenkorb angezeigt werden. Ich muss also den sw-context-token irgendwie mitnehmen. Wenn ich das per Session mache, setzt es voraus, dass der Shop auf dem gleichen Server läuft. Davon kann ich aber nicht ausgehen.

Oder meinst du, ich sollte einen Controller via AJAX ansprechen und ihm den Token übergeben, bevor ich in den Shop wechsel? Ich habe auch noch das Problem, dass ich den Kunden schon via API einlogge und wenn ich in den Shop wechsel, er auch eingeloggt sein soll. Das geht meines Wissens nach auch nicht ohne Weiteres.