Hi zusammen,
ich möchte Carts, die wir über die Store API erstellt haben per Link an User verschicken. Die Store API gibt uns dabei den Token zurück, über den der Warenkorb identifiziert wird.
(Wir erstellen automatisiert Carts, die Links werden dann verschickt oder verteilt und der Kunde soll nur noch seine Adresse / Zahlungsdetails angeben und die Bestellung prüfen, aber keine Product-Discovery mehr machen.)
Ich habe nun ein Plugin erstellt, welche eine neue Route definiert und dieses Token entgegen nimmt. Also: /my-company/cart/cart-token
Das klappt bisher wunderbar, ich kann den entsprechenden Cart und den des Users laden:
/**
* @Route("/my-company/cart/{id}", name="frontend.my-company.cart-link", methods={"GET"})
*/
public function cartLink(Request $request, SalesChannelContext $context) {
/** @var Cart $cart */
$cart = $this->cartService->getCart(
$request->get('id'),
$context
);
$userCart = $this->cartService->getCart($context->getToken(), $context);
// override $userCart with $cart or create new cart and clone line items, discounts etc. into it?
return $this->forwardToRoute('frontend.checkout.cart.page');
}
Ich würde gerne den Cart in der Session des Users mit dem Cart aus dem tokes aus dem link ersetzen. (Falls der User Artikel im Warenkob hat, wären diese dann weg) Oder, falls das nicht geht, den $userCart leeren und dann line items, Discounts,Sshipping etc, „rüberkopieren“
Könnt ihr mir da weiterhelfen? Was wäre der richtige Ansatz hier?
Beste Grüße aus Münster
Nick