Compare commits
2 Commits
75b8c6f2d2
...
0.0.3
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ba089cef70 | ||
|
|
f78820c850 |
@@ -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;
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user