// FLUJO DE PAGO — Checkout, Mercado Pago (real), Oxxo Pay (real), Pendiente, Confirmado window.PaymentFlow = {}; // ── Utilidad compartida ─────────────────────────────────────── function authHeaders() { const tok = localStorage.getItem('sd_token'); return tok ? { Authorization: `Bearer ${tok}`, 'Content-Type': 'application/json' } : { 'Content-Type': 'application/json' }; } // ══════════════════════════════════════════════════════════════ // CHECKOUT — elige método y llama la API // ══════════════════════════════════════════════════════════════ window.PaymentFlow.Checkout = function Checkout({ navigate, store }) { if (!store.session) { navigate('/login'); return null; } const PRUEBAS = store.pruebas || window.SD_SEED.PRUEBAS; const items = store.cart.map(id => PRUEBAS.find(p => p.id === id)).filter(Boolean); const total = items.reduce((s, p) => s + (p.precio || p.precio_mxn || 0), 0); const [metodo, setMetodo] = React.useState('mercadopago'); const [loading, setLoading] = React.useState(false); const [error, setError] = React.useState(''); if (items.length === 0) { return (
Agrega materias desde tu panel.
Pago único. Acceso permanente al proceso comprado.
Modo demo · configura MP_ACCESS_TOKEN en api/config.php para pagos reales.
No se pudo cargar el código. Descarga tu ficha oficial de Mercado Pago para pagar en OXXO.
{barcodeUrl && ( Descargar ficha de pago ↗ )}Estamos esperando que OXXO confirme tu pago. Suele tardar entre 1 y 24 horas. En cuanto se acredite recibirás un correo y tu acceso premium se activará solo — no necesitas hacer nada más.
Estamos confirmando con Mercado Pago. Toma solo unos segundos.
> ) : ( <>Tu acceso premium ya está activo. Practica las veces que necesites.
{mpPayId && ({mpPayId}