Saltar al contenido principal

RF37: Usuario elimina método de pago

Descripción

Como usuario autenticado, quiero eliminar un método de pago registrado para dejar de tener una tarjeta asociada a mi cuenta.

Se elimina (detach) el PaymentMethod del Customer en Stripe. Si hay una suscripción de pago activa que depende de él, se previene dejar la suscripción sin método válido.

CampoValor
MóduloSubscription Module
ActorUsuario autenticado
EndpointDELETE /subscription/payment-method/:id
PrecondicionesSesión activa; el método pertenece al Customer del usuario
PrioridadMedia (MVP)
EtapaMVP
Requisitos relacionadosRF34, RF36, RF39

Reglas de negocio

  • RN-37.1 — Solo se puede eliminar un método propio (validado por user_id/customer_id).
  • RN-37.2 — No se permite eliminar el único método si hay una suscripción de pago activa con renovación automática; primero se debe agregar otro o cancelar/desactivar la renovación.
  • RN-37.3 — La eliminación hace detach en Stripe; Finnova no guarda datos de tarjeta que eliminar.

Validaciones de entrada

CampoReglasMensaje de error
idObligatorio. PaymentMethod del usuario."Método de pago no encontrado." (404)
AuthorizationBearer válido."Sesión no válida." (401)

Criterios de aceptación

Escenario 1: Eliminación exitosa

Dado que tengo más de un método o no tengo suscripción de pago activa que dependa de él, Cuando elimino el método, Entonces el sistema hace detach en Stripe, Y responde 200 OK, Y deja de mostrarlo.

Escenario 2: Único método con suscripción activa

Dado que es mi único método y tengo una suscripción de pago con renovación automática, Cuando intento eliminarlo, Entonces el sistema lo impide con 409 Conflict y un mensaje que explica agregar otro o cancelar/desactivar la renovación.

Escenario 3: Método inexistente o ajeno (seguridad)

Dado que envío un id que no es mío, Cuando intento eliminar, Entonces el sistema responde 404 Not Found.

Criterios no funcionales

  • Operación idempotente; comunicación TLS 1.2+.

Diagrama de secuencia