/* 06 Checkout */ function Checkout({ go }) { const [plan, setPlan] = useState('club'); const [step, setStep] = useState('plan'); // plan | pay | done const [payNotice, setPayNotice] = useState(''); // aviso cuando Stripe no está configurado const [payBusy, setPayBusy] = useState(false); // Pago REAL con Stripe. Solo funciona si el fundador puso STRIPE_SECRET_KEY en el .env; // si no, mostramos el flujo en modo "vista previa" con aviso (nunca prometer un cobro falso). async function continueToPay() { setPayNotice(''); setPayBusy(true); try { const r = await window.CruceAPI.Payments.checkout(plan); if (r && r.checkout_url) { window.location.href = r.checkout_url; return; } setPayNotice('No se pudo iniciar el pago. Inténtalo de nuevo.'); } catch (e) { if (e && e.apiError === 'stripe_no_configurado') { setPayNotice('VISTA PREVIA: el pago real se activará cuando el fundador conecte Stripe (falta la clave en el servidor).'); setStep('pay'); } else { setPayNotice((e && e.message) || 'No se pudo iniciar el pago.'); } } finally { setPayBusy(false); } } const plans = { club: { name:'Cruce Club', price:29, per:'mes', total:29 }, signature: { name:'Cruce Signature', price:149, per:'trimestre', total:149 }, club_year: { name:'Cruce Club anual', price:19, per:'mes', total:228, save:'Ahorras 120€' }, }; const p = plans[plan]; if (step === 'done') return ; return (
Cruce
PAGO SEGURO · SSL
{step === 'plan' && (
Elige tu membresía

Desbloquea el chat.
Sin compartir tu teléfono.

Todas las membresías incluyen chat cifrado, videollamada dentro de la app y garantía 30 días.

{payNotice && step === 'plan' && (
{payNotice}
)}
)} {step === 'pay' && (
{payNotice && (
{payNotice}
)}
Método de pago

Última pantalla.

Tarjeta
Bizum
Apple Pay
PayPal
VISA
MC
Cifrado 256-bit
Cumple PSD2 (SCA)
PROCESADO POR STRIPE

Al continuar, aceptas los términos de suscripción. Puedes cancelar cualquier renovación desde Ajustes → Membresía.

)}
); } function PlanRow({ id, p, desc, selected, onSel, popular }) { return ( ); } function CheckoutSuccess({ plan, go }) { return (
Membresía activa

Bienvenido a Cruce {plan.name.replace('Cruce ','')}.

Ya puedes escribir a tus matches, hacer videollamada dentro de la app y reservar plaza en los eventos. Te hemos enviado el recibo por email.

); } window.Checkout = Checkout;