Flujo de Pantallas - Pagos y Suscripciones¶
Identificador: UIF-PAY-001 Modulo: MTS-PAY-001 - Pagos y Suscripciones Version: 1.0.0 Fecha: 2025-12-05 Autor: MobileUxUiDrone (Eight of Eight)
1. Vision General¶
Este documento especifica los flujos de navegacion y pantallas para el modulo de Pagos y Suscripciones, cubriendo:
- Comparativa de planes (Free/Pro/Perfect)
- Flujo de suscripcion via App Store / Google Play
- Gestion de suscripcion activa
- Cancelacion con ofertas de retencion
- Reactivacion de suscripcion
Nota Importante: MedTime no procesa pagos directamente. Todas las transacciones se manejan a traves de App Store (iOS) y Google Play (Android).
2. Arquitectura de Navegacion¶
2.1. Diagrama de Flujo General¶
flowchart TD
ENTRY[Multiples Entry Points] --> COMPARE[SCR-PAY-001<br>Comparativa de Planes]
COMPARE --> PRO[SCR-PAY-002<br>Detalle Plan Pro]
COMPARE --> PERFECT[SCR-PAY-003<br>Detalle Plan Perfect]
PRO --> CHECK[SCR-PAY-004<br>Checkout]
PERFECT --> CHECK
CHECK --> STORE[App Store / Google Play]
STORE --> CONFIRM[SCR-PAY-005<br>Confirmacion]
CONFIRM --> MANAGE[SCR-PAY-006<br>Gestion Suscripcion]
MANAGE --> CANCEL[SCR-PAY-007<br>Cancelacion]
MANAGE --> STORE_MANAGE[Ajustes Store]
CANCEL --> RETAIN[Oferta Retencion]
RETAIN -->|Acepta| MANAGE
RETAIN -->|Rechaza| CANCEL_CONFIRM[Confirmar Cancelacion]
CANCEL_CONFIRM --> FREE[Volver a Free]
FREE --> REACT[SCR-PAY-008<br>Reactivacion]
REACT --> COMPARE
2.2. Entry Points al Modulo¶
| Entry Point | Contexto | Destino |
|---|---|---|
| Tab Mas > Suscripcion | Acceso directo | SCR-PAY-001 o SCR-PAY-006 |
| Banner Free (Home) | Usuario Free | SCR-PAY-001 |
| Limite alcanzado | Funcionalidad bloqueada | SCR-PAY-001 con feature destacada |
| Badge Pro en feature | Feature Pro/Perfect | SCR-PAY-002 o SCR-PAY-003 |
| Deep link upgrade | Marketing | SCR-PAY-001 |
3. User Journeys Detallados¶
3.1. Journey: Suscribirse a Pro (Paciente Independiente)¶
Persona: PI - Paciente adulto Objetivo: Obtener funcionalidades avanzadas (cuidadores, sync, sin anuncios) Contexto: Usuario Free alcanza limite de medicamentos o quiere cuidadores
flowchart TD
A[Banner: Limite alcanzado] --> B[SCR-PAY-001<br>Ver planes]
B --> C[Comparar opciones]
C --> D[Tap Pro - $9.99/mes]
D --> E[SCR-PAY-002<br>Detalle Pro]
E --> F[Tap Suscribirse]
F --> G[SCR-PAY-004<br>Checkout]
G --> H[Redirect a App Store]
H --> I{Pago exitoso?}
I -->|Si| J[SCR-PAY-005<br>Bienvenido a Pro!]
I -->|No| K[Error o cancelacion]
J --> L[Features desbloqueadas]
Pantallas involucradas:
- SCR-PAY-001 - Comparativa de planes
- SCR-PAY-002 - Detalle plan Pro
- SCR-PAY-004 - Checkout
- SCR-PAY-005 - Confirmacion
Tiempo objetivo: < 2 minutos (excluyendo tiempo en Store)
Puntos de friction mitigados:
- Comparativa clara sin jerga tecnica
- Precio prominente pero no agresivo
- Un solo tap para ir al Store
- Confirmacion inmediata tras compra
3.2. Journey: Upgrade a Perfect (Usuario Pro)¶
Persona: PI - Usuario Pro actual Objetivo: Obtener cuidadores ilimitados, MFA avanzado, soporte prioritario Contexto: Usuario Pro necesita mas de 5 cuidadores
flowchart TD
A[SCR-PAY-006<br>Gestion actual Pro] --> B[Ver beneficios Perfect]
B --> C[SCR-PAY-003<br>Detalle Perfect]
C --> D[Comparar con Pro actual]
D --> E{Convencido?}
E -->|Si| F[Tap Actualizar]
F --> G[SCR-PAY-004<br>Checkout upgrade]
G --> H[App Store upgrade]
H --> I[SCR-PAY-005<br>Bienvenido a Perfect!]
E -->|No| J[Volver a gestion]
Diferencia con nuevo usuario:
- Se muestra diferencial de precio vs. Pro actual
- Se destacan features adicionales sobre Pro
- Upgrade es mas simple (ya tiene metodo de pago)
4. Flujo de Checkout via Stores¶
4.1. Secuencia de Compra¶
sequenceDiagram
participant U as Usuario
participant App as MedTime App
participant Store as App Store/Google Play
participant Server as MedTime Server
U->>App: Tap "Suscribirse"
App->>Store: Iniciar compra (product_id)
Store->>U: Mostrar UI de pago
U->>Store: Confirmar pago (FaceID/Touch/PIN)
Store->>Store: Procesar transaccion
alt Pago exitoso
Store->>App: Callback: purchase_success
App->>Server: Validar recibo
Server->>Server: Actualizar tier usuario
Server->>App: Confirmacion
App->>U: SCR-PAY-005 (Exito)
else Pago fallido/cancelado
Store->>App: Callback: purchase_failed
App->>U: Mostrar mensaje apropiado
end
4.2. Estados de Compra¶
| Estado | UI en App |
|---|---|
| Iniciando | Spinner + "Conectando con [Store]..." |
| En Store | App en background, Store en foreground |
| Validando | Spinner + "Verificando compra..." |
| Exito | SCR-PAY-005 |
| Error de red | Toast + "Reintentar" |
| Cancelado por usuario | Volver a pantalla anterior |
| Error de pago | Toast con mensaje del Store |
5. Flujo de Cancelacion con Retencion¶
5.1. Diagrama de Cancelacion¶
flowchart TD
A[SCR-PAY-006<br>Tap Cancelar] --> B[SCR-PAY-007<br>Motivo cancelacion]
B --> C{Motivo?}
C -->|Precio| D[Oferta: 50% off 3 meses]
C -->|No uso| E[Oferta: Pausar 1 mes]
C -->|Alternativa| F[Oferta: Mejoras proximamente]
C -->|Otro| G[Sin oferta especifica]
D & E & F & G --> H{Acepta oferta?}
H -->|Si| I[Aplicar oferta]
I --> J[SCR-PAY-006<br>Suscripcion activa]
H -->|No| K[Confirmar cancelacion]
K --> L[Redirect a Store Settings]
L --> M{Cancela en Store?}
M -->|Si| N[Suscripcion cancela al final del periodo]
M -->|No| J
5.2. Ofertas de Retencion¶
| Motivo | Oferta | Duracion |
|---|---|---|
| Precio muy alto | 50% descuento | 3 meses |
| No uso suficiente | Pausa gratuita | 1 mes |
| Encontre alternativa | Feature preview | N/A |
| Problemas tecnicos | Soporte prioritario | 1 mes |
Nota: Las ofertas se aplican solo UNA vez por usuario.
6. Especificaciones de Precio¶
6.1. Estructura de Planes¶
| Plan | Precio Mensual | Precio Anual | Ahorro Anual |
|---|---|---|---|
| Free | $0 | $0 | N/A |
| Pro | $9.99 USD | $99.99 USD | ~17% |
| Perfect | $19.99 USD | $199.99 USD | ~17% |
6.2. Presentacion de Precios¶
MENSUAL ANUAL (Ahorra 17%)
+------------------------+ +------------------------+
| Pro | | Pro |
| $9.99/mes | | $99.99/ano |
| | | ($8.33/mes) |
| [Suscribirse] | | [Suscribirse] |
+------------------------+ +------------------------+
6.3. Consideraciones de Precio¶
- Precios mostrados son base USD, Store muestra en moneda local
- Impuestos se aplican por Store segun region
- Trial de 7 dias disponible para nuevos usuarios (Pro/Perfect)
- Precio prominente pero no agresivo
- No usar tacticas de presion (countdown, "ultimas horas", etc.)
7. Estados de Suscripcion¶
7.1. Estados Posibles¶
| Estado | Visual | Acciones Disponibles |
|---|---|---|
| active | Badge verde "Activo" | Gestionar, Cancelar, Upgrade |
| trial | Badge azul "Prueba gratuita" | Ver dias restantes, Gestionar |
| grace_period | Badge amarillo "Problema de pago" | Actualizar pago |
| expired | Badge rojo "Expirado" | Reactivar |
| cancelled | Badge gris "Cancela el [fecha]" | Reactivar |
7.2. Grace Period (Periodo de Gracia)¶
Si hay problema de pago:
- Store intenta cobrar automaticamente
- Usuario mantiene acceso 16 dias (App Store) / 7 dias (Google Play)
- Mostrar banner de advertencia
- CTA: "Actualizar metodo de pago"
8. Validaciones y Errores¶
8.1. Errores de Compra¶
| Codigo Store | Mensaje UI | Accion |
|---|---|---|
| SKErrorPaymentCancelled | No mostrar error | Volver a pantalla anterior |
| SKErrorPaymentInvalid | "Pago no procesado" | "Reintentar" |
| SKErrorPaymentNotAllowed | "Compras no permitidas" | Instrucciones para habilitar |
| SKErrorStoreProductNotAvailable | "Plan no disponible" | Contactar soporte |
| SKErrorCloudServiceNetworkConnectionFailed | "Sin conexion" | "Reintentar cuando tengas conexion" |
8.2. Validacion de Recibo¶
| Escenario | Accion |
|---|---|
| Recibo valido | Activar tier, mostrar confirmacion |
| Recibo invalido | Log + mostrar error generico |
| Recibo ya usado | Verificar si es mismo usuario |
| Error de red | Reintentar con backoff |
9. Deep Links¶
| Ruta | Destino |
|---|---|
medtime://subscription |
SCR-PAY-001 (Free) o SCR-PAY-006 (suscrito) |
medtime://subscription/plans |
SCR-PAY-001 |
medtime://subscription/pro |
SCR-PAY-002 |
medtime://subscription/perfect |
SCR-PAY-003 |
medtime://subscription/manage |
SCR-PAY-006 |
medtime://subscription/reactivate |
SCR-PAY-008 |
10. Integraciones¶
10.1. Notificaciones¶
| Evento | Push | |
|---|---|---|
| Suscripcion exitosa | Si | Si |
| Upgrade exitoso | Si | Si |
| Trial por expirar (3 dias) | Si | Si |
| Problema de pago | Si | Si |
| Suscripcion cancelada | - | Si |
| Suscripcion expirada | Si | Si |
| Oferta especial | Opcional | Opcional |
10.2. Analytics¶
| Evento | Parametros |
|---|---|
| plans_viewed | source, current_tier |
| plan_detail_viewed | plan |
| checkout_started | plan, period |
| purchase_completed | plan, period, price |
| purchase_failed | plan, error_code |
| cancellation_started | plan, tenure_days |
| retention_offer_shown | offer_type |
| retention_offer_accepted | offer_type |
| reactivation_completed | plan |
11. Consideraciones de Accesibilidad¶
11.1. Pantallas Criticas¶
| Pantalla | Nivel WCAG | Notas |
|---|---|---|
| SCR-PAY-001 | AA | Precios claros, comparativa accesible |
| SCR-PAY-004 | AA | Proceso claro antes de ir al Store |
| SCR-PAY-007 | AA | Motivos de cancelacion claros |
11.2. Requisitos Especiales¶
- Precios: Siempre con label "por mes" o "por ano"
- Comparativa: Tabla accesible o lista alternativa
- Trial: Dias restantes claramente anunciados
- Ofertas: No depender solo de color para destacar
12. Metricas¶
12.1. KPIs del Modulo¶
| Metrica | Objetivo |
|---|---|
| Conversion Free->Pro | > 5% |
| Conversion Pro->Perfect | > 10% |
| Trial to Paid | > 40% |
| Churn mensual | < 5% |
| Efectividad retencion | > 20% |
12.2. Funnel de Conversion¶
View Plans (100%)
|
v
Plan Detail (60%)
|
v
Checkout Start (40%)
|
v
Store Redirect (35%)
|
v
Purchase Complete (25%)
13. Referencias¶
- MTS-PAY-001
- 02-component-library.md
- 03-accessibility-guidelines.md
- Apple StoreKit Documentation
- Google Play Billing
Documento generado por MobileUxUiDrone (Eight of Eight) "Monetizacion etica: valor claro, sin presion."