Skip to content

Paquetes

Ruta: /student/packages · Auth: Magic link (alumno)

Pagina de compra de servicios del profesor. Muestra los paquetes disponibles con precios y redirige a Stripe Checkout para el pago.


Grid responsive (3 columnas lg, 2 sm, 1 movil) con tarjetas de servicio:

  • Nombre del servicio
  • Numero de creditos
  • Dias de validez (si aplica)
  • Precio grande + desglose por clase (ej: “$19.80 por clase”)
  • Boton CTA

Flujo de compra:

  • Servicios de pago: Click en CTA → POST /student/enrollments → redirect a Stripe Checkout → retorno al portal
  • Servicios gratuitos: Click en CTA → enrollment creado inmediatamente → toast de exito

Formatos de precio:

  • Usa Intl.NumberFormat con la moneda del servicio
  • Desglose por clase: precio / creditos

Estados especiales:

  • Loading: 3 tarjetas skeleton
  • Vacio: Icono de paquete + “No hay paquetes disponibles”
  • Impersonacion: Aviso ambar + boton deshabilitado

FeatureDescripcionEstadoImplementado
Descripciones completasLas tarjetas de servicio ahora incluyen headline y description completa del servicio con detalles de que incluyeBatch 4
Comparacion de preciosDesglose de precio por clase visible para facilitar la comparacion entre paquetes con diferentes cantidades de creditosBatch 4
Mensajes de error diferenciadosLos errores como TRIAL_REQUIRED ahora incluyen enlace directo a la pagina de booking para hacer el trialBatch 4
Codigos de descuentoInput para codigo de descuento en el flujo de compra. Validacion via API, precio tachado con precio final. Descuento server-side antes de Stripe (no Stripe Coupons). Soporte para porcentaje y monto fijo, limites de uso, fecha de vigenciaBatch 4
Gestion de suscripcionesLa pagina es solo de compra. No hay gestion de suscripciones activas (cancelar, cambiar plan, ver facturas)Implementado ✅

BugDescripcionEstadoCorregido
Sin retry si Stripe redirect fallaTimeout de 10s via STRIPE_REDIRECT_TIMEOUT_MS resetea redirectingServiceId. Error handler tambien resetea estado inmediatamenteBatch 5
Error TRIAL_REQUIRED genericoCuando se requeria trial previo, el error TRIAL_REQUIRED mostraba un mensaje especifico pero no enlazaba a la pagina de booking para hacer el trialBatch 4

MejoraDescripcionDificultadEstadoImplementado
Mostrar descripcion completaLas tarjetas incluyen headline y description del servicioFacilBatch 4
Enlace a trial desde errorEl error TRIAL_REQUIRED incluye link directo a la pagina de bookingFacilBatch 4
Portal de suscripcionesPagina para gestionar suscripciones activas: cancelar, ver historial de pagos, cambiar de plan. Usar Stripe Customer PortalMedioImplementado ✅

ArchivoProposito
apps/web/src/routes/student/packages.lazy.tsxPagina de compra
EndpointMetodoProposito
/student/teacherGETInfo del profesor + servicios disponibles
/student/enrollmentsPOSTCrear enrollment (retorna checkoutUrl si pago)