From f78820c850b2efbdfb1418e813e3befc14dcea4b Mon Sep 17 00:00:00 2001 From: balvarez Date: Sat, 3 Jan 2026 21:32:24 +0100 Subject: [PATCH] adaptaion site --- .../Api/OrderConfirmationController.php | 25 +++++++++++++++++-- .../Http/Controllers/Api/StripeController.php | 7 +++++- 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/src/app/Http/Controllers/Api/OrderConfirmationController.php b/src/app/Http/Controllers/Api/OrderConfirmationController.php index 1c834ae..f5390c6 100644 --- a/src/app/Http/Controllers/Api/OrderConfirmationController.php +++ b/src/app/Http/Controllers/Api/OrderConfirmationController.php @@ -31,6 +31,7 @@ class OrderConfirmationController extends Controller $validator = Validator::make($request->all(), [ 'orderData' => 'required|array', 'sessionId' => 'nullable|string', + 'orderId' => 'nullable|string', ]); if ($validator->fails()) { @@ -41,6 +42,7 @@ class OrderConfirmationController extends Controller $orderData = $request->input('orderData'); $sessionId = $request->input('sessionId'); + $orderId = $request->input('orderId'); // 1. Récupérer l'email vérifié depuis la session Stripe $customerEmail = null; @@ -57,7 +59,20 @@ class OrderConfirmationController extends Controller $customerEmail = $orderData['email'] ?? $orderData['customer_email'] ?? null; } - // 2. Enregistrer la commande dans la base de données + // 2. Chercher une commande existante ou en créer une nouvelle + $order = null; + + // Chercher d'abord par orderId si fourni + if ($orderId) { + $order = Order::find($orderId); + } + + // Sinon, chercher par sessionId + if (!$order && $sessionId) { + $order = Order::where('session_id', $sessionId)->first(); + } + + // Préparer les données de mise à jour $finalOrderData = [ ...$orderData, 'customer_email' => $customerEmail, @@ -66,7 +81,13 @@ class OrderConfirmationController extends Controller ]; try { - $order = Order::create($finalOrderData); + if ($order) { + // Mettre à jour la commande existante + $order->update($finalOrderData); + } else { + // Créer une nouvelle commande si aucune n'existe + $order = Order::create($finalOrderData); + } } catch (\Exception $e) { \Log::error('Error saving order: ' . $e->getMessage()); $order = null; diff --git a/src/app/Http/Controllers/Api/StripeController.php b/src/app/Http/Controllers/Api/StripeController.php index b6eed60..030aa14 100644 --- a/src/app/Http/Controllers/Api/StripeController.php +++ b/src/app/Http/Controllers/Api/StripeController.php @@ -62,6 +62,11 @@ class StripeController extends Controller ]); // 2. Créer la session Stripe + $successUrl = $request->input('successUrl'); + // Ajouter les paramètres à l'URL (utiliser ? ou & selon si l'URL contient déjà des paramètres) + $separator = strpos($successUrl, '?') !== false ? '&' : '?'; + $successUrlWithParams = $successUrl . $separator . 'session_id={CHECKOUT_SESSION_ID}&order_id=' . $order->id; + $session = $this->stripe->checkout->sessions->create([ 'payment_method_types' => ['card'], 'line_items' => [ @@ -71,7 +76,7 @@ class StripeController extends Controller ], ], 'mode' => 'payment', - 'success_url' => $request->input('successUrl') . '&session_id={CHECKOUT_SESSION_ID}&order_id=' . $order->id, + 'success_url' => $successUrlWithParams, 'cancel_url' => $request->input('cancelUrl'), 'metadata' => [ 'order_id' => $order->id,