Saltar al contenido principal

RF44: Usuario desactiva renovación automática

Descripción

Como usuario autenticado con suscripción de pago, quiero desactivar la renovación automática para que mi plan no se renueve al final del periodo, conservando el acceso hasta entonces.

Equivale a programar la baja al fin del periodo (cancel_at_period_end: true) sin cancelar de inmediato; el acceso premium continúa hasta el vencimiento, luego se degrada a Free (RF42). Es funcionalmente cercano a RF39, enfocado en el toggle de renovación.

CampoValor
MóduloSubscription Module
ActorUsuario autenticado
EndpointPOST /subscription/auto-renew ({ enabled: false })
PrecondicionesSesión activa; suscripción de pago activa con renovación habilitada
PrioridadMedia (MVP)
EtapaMVP
Requisitos relacionadosRF43, RF39, RF42

Reglas de negocio

  • RN-44.1 — Desactivar la renovación mantiene el acceso premium hasta el fin del periodo ya pagado.
  • RN-44.2 — Equivale a subscriptions.update({ cancel_at_period_end: true }).
  • RN-44.3 — El usuario puede reactivarla antes del vencimiento (RF43).
  • RN-44.4 — Se notifica la fecha de fin de acceso (RF41).
  • RN-44.5 — Operación idempotente.

Validaciones de entrada

CampoReglasMensaje de error
AuthorizationBearer válido."Sesión no válida." (401)
EstadoSuscripción de pago activa."No tienes una suscripción activa." (409)

Criterios de aceptación

Escenario 1: Desactivación exitosa

Dado que tengo una suscripción con renovación activa, Cuando desactivo la renovación automática, Entonces el sistema programa la baja al fin del periodo, Y responde 200 OK indicando hasta cuándo conservo el acceso, Y me notifica la fecha de fin (RF41).

Escenario 2: Reactivar antes del vencimiento

Dado que desactivé la renovación pero aún no vence, Cuando la reactivo (RF43), Entonces el sistema cancela la baja programada.

Escenario 3: Sin suscripción activa

Dado que estoy en plan Free, Cuando intento desactivar la renovación, Entonces el sistema responde 409 con "No tienes una suscripción activa".

Criterios no funcionales

  • Idempotencia; comunicación TLS 1.2+.
  • El estado se sincroniza con Stripe (fuente de verdad por webhook).

Diagrama de secuencia