@@ -4,7 +4,7 @@ import { useParams, useNavigate, useSearchParams } from 'react-router-dom';
44import { useCampaigns } from '@/hooks/useCampaigns' ;
55import { useStripePayment } from '@/hooks/useStripePayment' ;
66import { useToast } from '@/hooks/use-toast' ;
7- import { CheckCircle , AlertCircle , Loader2 } from 'lucide-react' ;
7+ import { CheckCircle , AlertCircle , Loader2 , Flask } from 'lucide-react' ;
88import { Button } from '@/components/ui/button' ;
99import { Card , CardContent , CardHeader , CardTitle } from '@/components/ui/card' ;
1010
@@ -19,6 +19,7 @@ export const PaymentSuccessPage = () => {
1919
2020 const setupIntentId = searchParams . get ( 'setup_intent' ) ;
2121 const campaignId = searchParams . get ( 'campaign_id' ) ;
22+ const isSimulation = searchParams . get ( 'simulation' ) === 'true' ;
2223
2324 useEffect ( ( ) => {
2425 const processPaymentSuccess = async ( ) => {
@@ -29,26 +30,37 @@ export const PaymentSuccessPage = () => {
2930 }
3031
3132 try {
32- console . log ( '🔄 Vérification du statut de paiement...' ) ;
33+ if ( isSimulation ) {
34+ console . log ( '🧪 SIMULATION: Traitement du succès de paiement simulé' ) ;
35+ setMessage ( 'Configuration du paiement simulée...' ) ;
36+ } else {
37+ console . log ( '🔄 Vérification du statut de paiement...' ) ;
38+ setMessage ( 'Vérification du paiement...' ) ;
39+ }
3340
34- // Vérifier le statut du SetupIntent
41+ // Vérifier le statut du SetupIntent (réel ou simulé)
3542 const setupStatus = await verifyPaymentSetup ( setupIntentId ) ;
3643
3744 if ( setupStatus . status === 'succeeded' ) {
3845 console . log ( '✅ Paiement configuré avec succès' ) ;
3946
4047 // Finaliser la campagne
4148 await finalizeCampaign ( campaignId , {
42- customerId : 'cus_placeholder' , // Sera récupéré via l'API
49+ customerId : isSimulation ? 'cus_simulation' : 'cus_placeholder' ,
4350 setupIntentId : setupIntentId ,
4451 } ) ;
4552
4653 setStatus ( 'success' ) ;
47- setMessage ( 'Votre campagne a été créée avec succès !' ) ;
54+ setMessage ( isSimulation
55+ ? 'Votre campagne a été créée avec succès (mode simulation) !'
56+ : 'Votre campagne a été créée avec succès !'
57+ ) ;
4858
4959 toast ( {
5060 title : "Campagne créée !" ,
51- description : "Votre mode de paiement a été configuré et votre campagne est maintenant active." ,
61+ description : isSimulation
62+ ? "Mode simulation: Votre campagne est maintenant active."
63+ : "Votre mode de paiement a été configuré et votre campagne est maintenant active." ,
5264 } ) ;
5365
5466 } else {
@@ -69,7 +81,7 @@ export const PaymentSuccessPage = () => {
6981 } ;
7082
7183 processPaymentSuccess ( ) ;
72- } , [ setupIntentId , campaignId ] ) ;
84+ } , [ setupIntentId , campaignId , isSimulation ] ) ;
7385
7486 const handleBackToDashboard = ( ) => {
7587 navigate ( '/dashboard' ) ;
@@ -84,21 +96,38 @@ export const PaymentSuccessPage = () => {
8496 < Loader2 className = "w-16 h-16 text-blue-600 animate-spin" />
8597 ) }
8698 { status === 'success' && (
87- < CheckCircle className = "w-16 h-16 text-green-600" />
99+ < div className = "relative" >
100+ < CheckCircle className = "w-16 h-16 text-green-600" />
101+ { isSimulation && (
102+ < Flask className = "w-6 h-6 text-orange-500 absolute -top-1 -right-1" />
103+ ) }
104+ </ div >
88105 ) }
89106 { status === 'error' && (
90107 < AlertCircle className = "w-16 h-16 text-red-600" />
91108 ) }
92109 </ div >
93110 < CardTitle >
94111 { status === 'loading' && 'Finalisation en cours...' }
95- { status === 'success' && 'Campagne créée !' }
112+ { status === 'success' && ( isSimulation ? 'Campagne créée (simulation) !' : 'Campagne créée !' ) }
96113 { status === 'error' && 'Erreur' }
97114 </ CardTitle >
98115 </ CardHeader >
99116 < CardContent className = "text-center space-y-4" >
100117 < p className = "text-gray-600" > { message } </ p >
101118
119+ { isSimulation && status === 'success' && (
120+ < div className = "bg-orange-50 border border-orange-200 rounded-lg p-3" >
121+ < div className = "flex items-center justify-center space-x-2 text-orange-700" >
122+ < Flask className = "w-4 h-4" />
123+ < span className = "text-sm font-medium" > Mode simulation</ span >
124+ </ div >
125+ < p className = "text-xs text-orange-600 mt-1" >
126+ Les Firebase Functions seront nécessaires pour le vrai processus Stripe
127+ </ p >
128+ </ div >
129+ ) }
130+
102131 { status !== 'loading' && (
103132 < Button
104133 onClick = { handleBackToDashboard }
0 commit comments