- Tu pago está protegido por Stripe. Tus datos son encriptados y seguros. - {credentials.testMode && ' (Modo de prueba activo)'} -
-+ Tu pago está protegido por Stripe. Tus datos son encriptados y nunca se almacenan en nuestros servidores. + {credentials.testMode && ' (Modo de prueba activo)'} +
{paymentMethods.find(m => m.id === paymentInfo.method)?.name} - {paymentInfo.method === 'credit_card' && paymentInfo.cardNumber && - ` terminada en ${paymentInfo.cardNumber.slice(-4)}` - }
- Tarjeta terminada en {orderData.paymentInfo.cardLast4} + {orderData.paymentInfo.paymentIntentId && ( +
+ ID de Transacción: {orderData.paymentInfo.paymentIntentId}
)} diff --git a/src/pages/PaymentError.tsx b/src/pages/PaymentError.tsx new file mode 100644 index 0000000..7824d8a --- /dev/null +++ b/src/pages/PaymentError.tsx @@ -0,0 +1,101 @@ +import React from 'react'; +import { useNavigate, useSearchParams } from 'react-router-dom'; +import { Button } from '@/components/ui/button'; +import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; +import { XCircle, ArrowLeft, RefreshCw } from 'lucide-react'; +import Header from '@/components/Header'; +import Footer from '@/components/Footer'; + +const PaymentError = () => { + const navigate = useNavigate(); + const [searchParams] = useSearchParams(); + const errorMessage = searchParams.get('message') || 'Hubo un problema al procesar tu pago'; + + return ( ++ No pudimos procesar tu pago. No te preocupes, no se ha realizado ningún cargo. +
+{errorMessage}
++ Nuestro equipo de soporte está disponible 24/7 para ayudarte +
+ +