sandbox (RUT + Luhn + cargo simulado). Para validación real en producción, activar Mercado Pago o Webpay.
| Variable Railway | Uso |
|---|---|
PAYMENT_PROVIDER=mercadopago | Activa pasarela real |
MERCADOPAGO_PUBLIC_KEY | Frontend — tokeniza tarjeta (PCI en MP) |
MERCADOPAGO_ACCESS_TOKEN | Backend — guarda tarjeta en customer |
PAYMENT_MICROCHARGE_CLP | Opcional — monto verificación (ej. 990) |
Flujo: app → SDK Mercado Pago → card_token → POST /api/account/payment-methods/enroll → Supabase user_payment_methods.
Cuenta developers: mercadopago.cl/developers
Contrato comercial Transbank → Webpay Plus / Oneclick. Integración futura (bloque D). Mismo patrón: token en pasarela, nunca PAN en Cubik.
Sin variables MP: PAYMENT_PROVIDER=sandbox o vacío en dev. En producción piloto sigue sandbox hasta configurar MP.
PAYMENT_ALLOW_SANDBOX=true — fuerza sandbox aunque exista MP (solo pruebas).
GET /health → objeto payment con provider_mode.
GET /api/account/payment-config — modo y clave pública MP para la app.
RUN_027_payment_methods_fcm.sql — tabla user_payment_methods.