RF34: Usuario consulta método de pago
Descripción
Como usuario autenticado, quiero ver el método de pago que tengo registrado (marca y últimos 4 dígitos) para saber con qué tarjeta se cobra mi suscripción.
Finnova nunca almacena datos completos de tarjeta (PCI SAQ A): solo se muestran los metadatos no sensibles (brand, last4, exp_month/year) que provee Stripe del PaymentMethod (Stripe §Consideraciones de seguridad).
| Campo | Valor |
|---|---|
| Módulo | Subscription Module |
| Actor | Usuario autenticado |
| Endpoint | GET /subscription/payment-method |
| Precondiciones | Sesión activa |
| Prioridad | Media (MVP) |
| Etapa | MVP |
| Requisitos relacionados | RF35, RF36, RF37 |
Reglas de negocio
- RN-34.1 — Solo se muestran metadatos no sensibles del método de pago; nunca el PAN completo, CVV ni datos PAN.
- RN-34.2 — Los datos provienen de Stripe (fuente de verdad) usando el
stripe_customer_iddel usuario. - RN-34.3 — Si no hay método registrado, se muestra estado vacío con acción para agregar uno (RF35).
Validaciones de entrada
| Campo | Reglas | Mensaje de error |
|---|---|---|
Authorization | Bearer válido. | "Sesión no válida." (401) |
Criterios de aceptación
Escenario 1: Consulta con método registrado
Dado que tengo una tarjeta registrada,
Cuando consulto mi método de pago,
Entonces el sistema muestra marca y últimos 4 dígitos (sin datos sensibles),
Y responde 200 OK.
Escenario 2: Sin método de pago
Dado que no tengo método registrado, Cuando consulto, Entonces se muestra un estado vacío con la acción "Agregar método de pago".
Escenario 3: No exposición de datos sensibles (seguridad)
Dado que veo mi método de pago, Cuando reviso la respuesta, Entonces nunca incluye el número completo de tarjeta ni CVV.
Criterios no funcionales
- Respuesta < 1.5 s (lectura desde Stripe, cacheable brevemente).
- Comunicación TLS 1.2+; sin datos de tarjeta en logs.