From e17b18a25d5d74f260afa7de56e29b4110fe31d0 Mon Sep 17 00:00:00 2001 From: balvarez Date: Sun, 4 Jan 2026 11:31:58 +0100 Subject: [PATCH 1/2] correction stripe email --- .../Http/Controllers/Api/StripeController.php | 40 ++++++++++++++----- src/composer.json | 1 + 2 files changed, 32 insertions(+), 9 deletions(-) diff --git a/src/app/Http/Controllers/Api/StripeController.php b/src/app/Http/Controllers/Api/StripeController.php index 030aa14..4f1154f 100644 --- a/src/app/Http/Controllers/Api/StripeController.php +++ b/src/app/Http/Controllers/Api/StripeController.php @@ -30,7 +30,13 @@ class StripeController extends Controller */ public function createCheckoutSession(Request $request) { - $validator = Validator::make($request->all(), [ + // Normaliser les chaînes vides en null pour customerEmail + $requestData = $request->all(); + if (isset($requestData['customerEmail']) && $requestData['customerEmail'] === '') { + $requestData['customerEmail'] = null; + } + + $validator = Validator::make($requestData, [ 'priceId' => 'required|string', 'orderData' => 'nullable|array', 'successUrl' => 'required|url', @@ -47,12 +53,12 @@ class StripeController extends Controller try { // 1. Sauvegarder la commande dans la base de données - $orderData = $request->input('orderData', []); + $orderData = $requestData['orderData'] ?? []; // Si orderData n'est pas fourni, créer un objet minimal if (empty($orderData)) { $orderData = [ - 'customer_email' => $request->input('customerEmail'), + 'customer_email' => $requestData['customerEmail'] ?? null, ]; } @@ -62,28 +68,44 @@ class StripeController extends Controller ]); // 2. Créer la session Stripe - $successUrl = $request->input('successUrl'); + $successUrl = $requestData['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([ + // Récupérer l'email (peut être dans customerEmail, orderData.email ou orderData.customer_email) + $customerEmail = $requestData['customerEmail'] ?? $orderData['email'] ?? $orderData['customer_email'] ?? null; + + // Ne passer customer_email à Stripe que si l'email est valide et non vide + // Sinon, Stripe demandera l'email au client lors du checkout + $validEmail = null; + if ($customerEmail && is_string($customerEmail) && trim($customerEmail) !== '' && filter_var(trim($customerEmail), FILTER_VALIDATE_EMAIL)) { + $validEmail = trim($customerEmail); + } + + $sessionParams = [ 'payment_method_types' => ['card'], 'line_items' => [ [ - 'price' => $request->input('priceId'), + 'price' => $requestData['priceId'], 'quantity' => 1, ], ], 'mode' => 'payment', 'success_url' => $successUrlWithParams, - 'cancel_url' => $request->input('cancelUrl'), + 'cancel_url' => $requestData['cancelUrl'], 'metadata' => [ 'order_id' => $order->id, 'product_name' => $orderData['product_name'] ?? '', ], - 'customer_email' => $request->input('customerEmail') ?? $orderData['email'] ?? $orderData['customer_email'] ?? null, - ]); + ]; + + // Ajouter customer_email seulement si valide + if ($validEmail) { + $sessionParams['customer_email'] = $validEmail; + } + + $session = $this->stripe->checkout->sessions->create($sessionParams); return response()->json([ 'sessionId' => $session->id, diff --git a/src/composer.json b/src/composer.json index d09a94b..e527340 100644 --- a/src/composer.json +++ b/src/composer.json @@ -2,6 +2,7 @@ "$schema": "https://getcomposer.org/schema.json", "name": "laravel/laravel", "type": "project", + "version": "0.0.3", "description": "The skeleton application for the Laravel framework.", "keywords": ["laravel", "framework"], "license": "MIT", From b41b198f5552b8e02bfdd3dd3b67df8f4676224c Mon Sep 17 00:00:00 2001 From: balvarez Date: Sun, 4 Jan 2026 11:32:58 +0100 Subject: [PATCH 2/2] 0.0.4 --- src/composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/composer.json b/src/composer.json index e527340..addec6d 100644 --- a/src/composer.json +++ b/src/composer.json @@ -2,7 +2,7 @@ "$schema": "https://getcomposer.org/schema.json", "name": "laravel/laravel", "type": "project", - "version": "0.0.3", + "version": "0.0.4", "description": "The skeleton application for the Laravel framework.", "keywords": ["laravel", "framework"], "license": "MIT",