Modulo de Pagos y Suscripciones
Identificador: MTS-PAY-001
Version: 2.0.0
Fecha: 2025-12-05
Autor: SpecQueen
Iteracion: 13 - Consolidacion de flujos de pago
Dependencias: MTS-AUTH-001, MTS-USR-001, MTS-ONB-001
Estado: Borrador
1. Vision General
Este modulo gestiona el sistema de suscripciones, pagos y monetizacion de MedTime. Define los tiers de servicio (Free, Pro, Perfect), procesos de upgrade/downgrade, y el manejo de datos durante cambios de tier.
IMPORTANTE V1.0: La version 1.0 de MedTime utilizaexclusivamente In-App Purchase (IAP) de Apple App Store y Google Play. NO hay pasarela de pagos propia ni integracion con Stripe.
Referencia Canonica (Iteracion 13): Las reglas de negocio centrales se encuentran en 06-reglas-de-negocio.md.
2. Actores
2.1. Roles de Usuario en V1.0
| Rol |
Descripcion |
Puede Suscribirse |
| Paciente Independiente |
Usuario gestionando su propia salud, sin dependientes ni cuidadores |
Si (titular) |
| Paciente Dependiente |
Persona cuya salud es gestionada por un Cuidador Responsable |
No (cubierto por titular) |
| Cuidador Solidario |
Familiar/amigo que ayuda a un paciente sin responsabilidad completa |
No (acceso delegado) |
| Cuidador Responsable |
Familiar con responsabilidad total sobre uno o mas dependientes |
Si (titular) |
Nota: La suscripcion siempre pertenece al titular (Paciente Independiente o Cuidador Responsable). Los Pacientes Dependientes y Cuidadores Solidarios acceden bajo la suscripcion del titular.
2.2. Sistemas Involucrados
| Sistema |
Descripcion |
| Apple App Store |
In-App Purchase para dispositivos iOS (StoreKit 2) |
| Google Play |
In-App Purchase para dispositivos Android (Play Billing) |
| Servidor MedTime |
Verificacion de receipts y gestion de suscripciones |
| Sistema de Notificaciones |
Alertas de pago, vencimiento, cambios de tier |
3. Modelo de Monetizacion
3.1. Tiers de Servicio (V1.0)
IMPORTANTE: V1.0 solo tiene 3 tiers: Free, Pro, Perfect. NO existe tier "Familia" - la gestion de dependientes es una funcionalidad dentro de Pro/Perfect, no un tier separado.
| Tier |
Precio Mensual |
Precio Anual |
Descripcion |
| Free |
$0 |
$0 |
Uso basico, datos locales, maxima privacidad |
| Pro |
$4.99 USD |
$49.99 USD |
Sync cloud, cuidadores, OCR limitado |
| Perfect |
$9.99 USD |
$99.99 USD |
Todo ilimitado, IA incluida, soporte prioritario |
3.2. Matriz de Funcionalidades por Tier
| Funcionalidad |
Free |
Pro |
Perfect |
| Medicamentos activos |
Ilimitados |
Ilimitados |
Ilimitados |
| Alertas locales |
Si |
Si |
Si |
| Modo offline completo |
Si |
Si |
Si |
| Sincronizacion cloud |
No |
Si |
Si |
| Dependientes (para Cuidador Responsable) |
1 maximo |
Hasta 5 |
Hasta 10 |
| Cuidadores Solidarios |
0 |
Hasta 5 |
Hasta 10 |
| OCR de recetas |
No |
Limitado (ver V2.0) |
Incluido |
| Deteccion interacciones IA |
No |
Limitado (ver V2.0) |
Incluido |
| SMS backup notificaciones |
Nativo telefono |
50/mes |
Ilimitado |
| Gamificacion |
Basica |
Completa |
Completa |
| Estadisticas |
Basicas |
Avanzadas |
Avanzadas |
| Soporte |
FAQ |
Email 48h |
Chat 24h |
3.3. Suscripciones IAP (V1.0)
| Aspecto |
Implementacion V1.0 |
| Procesador |
Apple App Store / Google Play (exclusivamente) |
| Productos |
Suscripciones auto-renovables |
| Periodos |
Mensual o Anual |
| Trial |
7 dias gratis (primera suscripcion) |
| Prorrateo |
Manejado automaticamente por Apple/Google |
| Cancelacion |
Via configuracion de App Store/Google Play |
| Reembolsos |
Via Apple/Google (no directo en MedTime) |
3.4. On-Demand (V2.0+ - Diferido)
APLAZADO A V2.0+: El sistema de creditos y compras On-Demand NO esta disponible en V1.0. En V1.0, las funciones de IA estan incluidas en Perfect o no disponibles en otros tiers.
| Funcion |
V1.0 |
V2.0+ (Planificado) |
| OCR de receta |
Perfect: Incluido / Pro: No |
Pro: $0.25 USD por uso |
| Analisis interacciones IA |
Perfect: Incluido / Pro: No |
Pro: $0.10 USD por uso |
| Paquetes de creditos |
No disponible |
Si (descuentos por volumen) |
3.5. Storage Cloud por Tier
| Tier |
Storage Cloud |
Archivos Soportados |
Retencion |
| Free |
0 (local only) |
N/A |
Indefinida local |
| Pro |
5 GB |
Analisis, recetas, adjuntos |
7 anos |
| Perfect |
50 GB |
Todo + respaldos completos |
7 anos |
Nota: Free tier funciona 100% offline sin almacenamiento cloud. Los datos permanecen exclusivamente en el dispositivo del usuario.
3.6. Precios por Region
3.6.1. Mexico (MXN)
| Tier |
Mensual |
Anual |
| Free |
$0 |
$0 |
| Pro |
$89 |
$899 |
| Perfect |
$179 |
$1,799 |
3.6.2. Estados Unidos (USD)
| Tier |
Mensual |
Anual |
| Free |
$0 |
$0 |
| Pro |
$4.99 |
$49.99 |
| Perfect |
$9.99 |
$99.99 |
3.6.3. Brasil (BRL)
| Tier |
Mensual |
Anual |
| Free |
$0 |
$0 |
| Pro |
R$24.90 |
R$249.90 |
| Perfect |
R$49.90 |
R$499.90 |
4. Funcionalidades
4.1. Suscripcion (MTS-PAY-001-F01)
Descripcion: Proceso de suscripcion inicial a tiers Pro o Perfect usando exclusivamente IAP.
Precondiciones:
- Usuario tiene cuenta Free activa
- Dispositivo tiene cuenta de App Store/Google Play configurada
- Conexion a internet disponible
Postcondiciones:
- Suscripcion activa en tier seleccionado
- Datos migrados a cloud (si aplica)
- Funcionalidades premium habilitadas
4.2. Cambio de Plan (MTS-PAY-001-F02)
Descripcion: Permite cambiar entre tiers (upgrade o downgrade).
Tipos de cambio:
- Upgrade: Free -> Pro -> Perfect (inmediato con prorrateo)
- Downgrade: Perfect -> Pro -> Free (al final del periodo o inmediato si pago falla)
4.3. Cancelacion de Suscripcion (MTS-PAY-001-F03)
Descripcion: Proceso de cancelacion de suscripcion Pro/Perfect. La cancelacion es directa sin preguntas obligatorias.
Decision del Director (Iteracion 13): Cancelacion directa sin preguntas que bloqueen. Formulario de feedback opcional y separado.
4.4. Metodos de Pago V1.0 (MTS-PAY-001-F04)
| Plataforma |
Metodo |
Descripcion |
| iOS |
Apple Pay / Tarjeta |
Via StoreKit 2, Apple maneja el pago |
| Android |
Google Pay / Tarjeta |
Via Play Billing, Google maneja el pago |
IMPORTANTE V1.0: NO hay Stripe, PayPal, OXXO, PIX ni ningun otro procesador directo. Todo pago pasa por las tiendas de aplicaciones.
5. Flujos de Pago
5.1. PAY-F01: Suscripcion Nueva (Upgrade Free a Pro/Perfect)
5.1.1. Descripcion
Proceso de conversion de usuario Free a suscriptor Pro/Perfect usando In-App Purchase.
5.1.2. Precondiciones
- Usuario tiene cuenta Free activa
- Dispositivo tiene cuenta de App Store/Google Play configurada
- Conexion a internet disponible
5.1.3. Flujo Principal
flowchart TD
A[Usuario Free selecciona Upgrade] --> B[Mostrar comparativa Free vs Pro/Perfect]
B --> C[Usuario selecciona tier]
C --> D{Tier seleccionado}
D -->|Pro| E[Mostrar opciones Pro]
D -->|Perfect| F[Mostrar opciones Perfect]
E --> G{Periodo seleccionado}
F --> G
G -->|Mensual| H[Preparar compra mensual]
G -->|Anual| I[Preparar compra anual]
H --> J[Iniciar flujo IAP]
I --> J
J --> K{Plataforma}
K -->|iOS| L[StoreKit 2 - App Store]
K -->|Android| M[Google Play Billing]
L --> N[Mostrar sheet de compra nativo]
M --> N
N --> O[Usuario autentica compra]
O --> P{Compra exitosa?}
P -->|Si| Q[Recibir receipt/token]
P -->|No| R[Mostrar error y opciones]
P -->|Cancelada| S[Usuario cancelo - volver a Free]
Q --> T[Verificar receipt con servidor MedTime]
T --> U{Verificacion OK?}
U -->|Si| V[Activar suscripcion]
U -->|No| W[Log error, permitir uso temporal 24h]
V --> X[Migrar datos a cloud]
X --> Y[Habilitar funcionalidades]
Y --> Z[Mostrar pantalla de exito]
W --> AA[Reintentar verificacion en background]
AA --> AB{Verificacion eventual OK?}
AB -->|Si| V
AB -->|No en 24h| AC[Revertir a Free, notificar usuario]
Z --> AD[Tutorial de funciones nuevas]
5.1.4. Pantalla de Seleccion de Plan
+--------------------------------------------------+
| ELIGE TU PLAN |
+--------------------------------------------------+
+------------------------+ +------------------------+
| PRO | | PERFECT |
| | | |
| $4.99/mes | | $9.99/mes |
| $49.99/ano | | $99.99/ano |
| | | |
| [x] Sync cloud | | [x] Todo de Pro |
| [x] 5 cuidadores | | [x] IA ilimitada |
| [x] 5 dependientes | | [x] 10 dependientes |
| [x] Gamificacion | | [x] SMS ilimitado |
| | | [x] Soporte 24h |
| | | |
| [Elegir Pro] | | [Elegir Perfect] |
+------------------------+ +------------------------+
7 DIAS DE PRUEBA GRATIS (primera suscripcion)
Cancela cuando quieras desde tu App Store.
Todos los precios en USD. Impuestos incluidos.
5.1.5. Reglas de Negocio
| ID |
Regla |
| RN-PAY-F01-001 |
Solo IAP (In-App Purchase) para V1.0 |
| RN-PAY-F01-002 |
Verificacion de receipt obligatoria con servidor |
| RN-PAY-F01-003 |
Si verificacion falla, uso temporal de 24h |
| RN-PAY-F01-004 |
7 dias de prueba gratuita en primera suscripcion |
| RN-PAY-F01-005 |
Migracion de datos locales a cloud es automatica |
5.2. PAY-F02: Renovacion Automatica
5.2.1. Descripcion
Proceso de renovacion automatica manejado por Apple/Google.
5.2.2. Flujo Principal
flowchart TD
A[Fecha de renovacion] --> B[Apple/Google intenta cobro]
B --> C{Cobro exitoso?}
C -->|Si| D[Renovar suscripcion]
D --> E[Actualizar fecha_fin_periodo]
E --> F[Notificar usuario: Renovacion exitosa]
C -->|No| G[Apple/Google reintenta segun sus politicas]
G --> H{Cobro eventual exitoso?}
H -->|Si| D
H -->|No| I[Notificar a MedTime via webhook]
I --> J[Ejecutar PAY-F06: Recuperacion de Fallo]
5.3. PAY-F03: Upgrade Pro a Perfect (Prorrateo)
5.3.1. Descripcion
Proceso de upgrade de suscriptor Pro a Perfect con calculo de prorrateo manejado por Apple/Google.
5.3.2. Precondiciones
- Usuario tiene suscripcion Pro activa
- Suscripcion Pro no esta en periodo de cancelacion
5.3.3. Flujo Principal
flowchart TD
A[Usuario Pro selecciona Upgrade a Perfect] --> B[Mostrar comparativa Pro vs Perfect]
B --> C[Mostrar informacion de prorrateo]
C --> D{Usuario acepta?}
D -->|Si| E[Iniciar flujo IAP]
D -->|No| F[Volver a configuracion]
E --> G{Plataforma}
G -->|iOS| H[StoreKit 2 - Upgrade]
G -->|Android| I[Google Play - Upgrade]
H --> J[Apple maneja prorrateo automatico]
I --> K[Google Play maneja prorrateo]
J --> L{Upgrade exitoso?}
K --> L
L -->|Si| M[Recibir nuevo receipt]
L -->|No| N[Mostrar error]
M --> O[Verificar con servidor]
O --> P{Verificacion OK?}
P -->|Si| Q[Activar Perfect inmediatamente]
P -->|No| R[Mantener Pro, log error]
Q --> S[Habilitar funciones Perfect]
S --> T[Ajustar fecha de renovacion]
T --> U[Notificar usuario]
U --> V[Tutorial de IA incluida]
5.3.4. Pantalla de Upgrade Pro a Perfect
+--------------------------------------------------+
| ACTUALIZA A PERFECT |
+--------------------------------------------------+
PLAN ACTUAL: Pro ($4.99/mes)
Te quedan 18 dias de tu periodo actual.
+--------------------------------------------------+
| PERFECT - Todo de Pro mas: |
| |
| [x] IA ilimitada (OCR, interacciones) |
| [x] Hasta 10 dependientes |
| [x] SMS de emergencia ilimitados |
| [x] Soporte prioritario 24h |
+--------------------------------------------------+
PRECIO: $9.99/mes
Nota: Apple/Google aplicara automaticamente un
credito proporcional por los dias restantes de Pro.
[Confirmar upgrade] [Cancelar]
5.3.5. Reglas de Negocio
| ID |
Regla |
| RN-PAY-F03-001 |
Prorrateo manejado por plataforma (Apple/Google) |
| RN-PAY-F03-002 |
Upgrade es inmediato tras pago exitoso |
| RN-PAY-F03-003 |
Funciones Perfect se activan inmediatamente |
| RN-PAY-F03-004 |
Fecha de renovacion se ajusta segun plataforma |
| RN-PAY-F03-005 |
No se puede hacer upgrade si suscripcion esta cancelada |
5.4. PAY-F04: Downgrade (Sin Grace Period)
5.4.1. Descripcion
Proceso de downgrade de Perfect a Pro, o de Pro/Perfect a Free. Incluye wizard para seleccionar que datos conservar/eliminar. Sin periodo de gracia - el downgrade es inmediato cuando el pago falla.
Decision del Director (Iteracion 13):
- Sin grace period - Si el pago falla, el downgrade es inmediato
- Wizard de seleccion de datos - Usuario elige que conservar
- Datos cifrados conservados 7 anos - Aunque no pueda acceder
5.4.2. Precondiciones
- Usuario tiene suscripcion Pro o Perfect activa
- Usuario solicita downgrade o pago falla
5.4.3. Flujo Principal - Downgrade Voluntario
flowchart TD
A[Usuario solicita downgrade] --> B{Tipo de downgrade}
B -->|Perfect -> Pro| C[Verificar datos actuales]
B -->|Pro -> Free| D[Verificar datos actuales]
B -->|Perfect -> Free| D
C --> E{Excede limites Pro?}
E -->|Si| F[Wizard seleccion de datos - Perfect a Pro]
E -->|No| G[Confirmar downgrade directo]
D --> H[Wizard seleccion de datos - A Free]
F --> I[Mostrar: 10 dependientes -> max 5]
I --> J[Usuario selecciona 5 a conservar]
J --> K[Mostrar: Cuidadores a desactivar]
K --> L[Usuario confirma seleccion]
H --> M[Advertencia: Sin sync cloud en Free]
M --> N[Mostrar datos que perdera acceso]
N --> O{Exportar datos antes?}
O -->|Si| P[Generar archivo .medtime cifrado]
O -->|No| Q[Continuar sin exportar]
P --> R[Descargar backup]
R --> S[Confirmar downgrade]
Q --> S
G --> S
L --> S
S --> T{Cuando aplicar?}
T -->|Al final del periodo| U[Programar downgrade]
T -->|Inmediato| V[Aplicar downgrade ahora]
U --> W[Notificar fecha de cambio]
V --> X[Ejecutar downgrade]
X --> Y[Desactivar funciones del tier anterior]
Y --> Z[Ajustar limites]
Z --> AA[Datos excedentes quedan cifrados - 7 anos]
AA --> AB[Notificar usuario]
5.4.4. Flujo - Downgrade por Pago Fallido (Sin Grace Period)
flowchart TD
A[Pago de renovacion falla] --> B[Notificar usuario inmediatamente]
B --> C[Ejecutar downgrade INMEDIATO]
C --> D{Tier actual?}
D -->|Perfect| E[Degradar a Pro]
D -->|Pro| F[Degradar a Free]
E --> G[Desactivar funciones Perfect]
G --> H[Mantener acceso a funciones Pro]
H --> I[Notificar: Tu cuenta es ahora Pro]
F --> J[Desactivar sync cloud]
J --> K[Convertir a modo local]
K --> L[Cuidadores pierden acceso]
L --> M[Datos permanecen cifrados en cloud 7 anos]
M --> N[Notificar: Tu cuenta es ahora Free]
I --> O[Ofrecer: Actualiza pago para restaurar]
N --> O
O --> P{Usuario actualiza pago?}
P -->|Si| Q[Restaurar tier anterior inmediatamente]
P -->|No| R[Continuar en tier reducido]
Q --> S[Reactivar funciones]
S --> T[Sincronizar datos pendientes]
5.4.5. Wizard de Seleccion de Datos
+--------------------------------------------------+
| CAMBIAR A PLAN FREE |
+--------------------------------------------------+
El plan Free no incluye sincronizacion en la nube.
Selecciona como manejar tus datos:
+--------------------------------------------------+
| OPCION 1: EXPORTAR TODO |
| |
| Descarga un archivo .medtime con todos tus datos |
| cifrados. Podras importarlos si vuelves a Pro. |
| |
| [Exportar mis datos] |
+--------------------------------------------------+
+--------------------------------------------------+
| OPCION 2: CONTINUAR SIN EXPORTAR |
| |
| Tus datos en la nube se conservaran cifrados |
| por 7 anos. No tendras acceso pero podras |
| recuperarlos si vuelves a suscribirte. |
| |
| [Continuar sin exportar] |
+--------------------------------------------------+
+--------------------------------------------------+
| IMPORTANTE: |
| |
| - Cuidadores solidarios perderan acceso |
| - Tus datos locales NO se afectan |
| - Alertas seguiran funcionando offline |
+--------------------------------------------------+
[Cancelar - Mantener Pro]
+--------------------------------------------------+
| TU PAGO NO PUDO PROCESARSE |
+--------------------------------------------------+
No pudimos renovar tu suscripcion Pro.
Tu cuenta ha sido cambiada a Free.
+--------------------------------------------------+
| QUE SIGNIFICA ESTO: |
| |
| [x] Tus alertas siguen funcionando |
| [x] Tus datos locales estan intactos |
| [ ] Sincronizacion desactivada |
| [ ] Cuidadores ya no tienen acceso |
+--------------------------------------------------+
+--------------------------------------------------+
| TUS DATOS EN LA NUBE: |
| |
| Estan seguros y cifrados. Se conservaran por |
| 7 anos. Podras acceder nuevamente si reactivas |
| tu suscripcion. |
+--------------------------------------------------+
[Actualizar metodo de pago]
[Continuar como Free]
5.4.7. Datos que Exceden Limites (Downgrade Perfect->Pro)
| Elemento |
Limite Pro |
Accion Requerida |
| Dependientes |
5 |
Seleccionar cuales conservar |
| Cuidadores solidarios |
5 |
Revocar acceso de excedentes |
5.4.8. Reglas de Negocio
| ID |
Regla |
| RN-PAY-F04-001 |
Sin grace period - Downgrade inmediato cuando pago falla |
| RN-PAY-F04-002 |
Datos cloud se conservan cifrados por 7 anos |
| RN-PAY-F04-003 |
Datos locales nunca se eliminan por downgrade |
| RN-PAY-F04-004 |
Cuidadores pierden acceso inmediatamente en downgrade a Free |
| RN-PAY-F04-005 |
Exportacion de datos disponible antes del downgrade |
| RN-PAY-F04-006 |
Downgrade voluntario puede ser al final del periodo o inmediato |
| RN-PAY-F04-007 |
Perfect->Pro: seleccionar dependientes a conservar si excede 5 |
5.5. PAY-F05: Cancelacion (Directa sin Preguntas)
5.5.1. Descripcion
Proceso de cancelacion de suscripcion. La cancelacion es directa sin preguntas obligatorias. Existe un formulario de feedback opcional y separado.
Decision del Director (Iteracion 13):
- Cancelacion directa - Sin preguntas obligatorias que bloqueen
- Formulario separado - Feedback opcional despues de cancelar
5.5.2. Precondiciones
- Usuario tiene suscripcion Pro o Perfect activa
5.5.3. Flujo Principal
flowchart TD
A[Usuario accede a Cancelar Suscripcion] --> B[Mostrar informacion de cancelacion]
B --> C[Mostrar fecha de fin de acceso]
C --> D[Checkbox: Entiendo que perdere acceso]
D --> E{Usuario confirma?}
E -->|No| F[Volver a configuracion]
E -->|Si| G[Iniciar cancelacion via IAP]
G --> H{Plataforma}
H -->|iOS| I[Abrir configuracion de suscripciones iOS]
H -->|Android| J[Abrir Google Play suscripciones]
I --> K[Usuario completa cancelacion en sistema]
J --> K
K --> L[Recibir confirmacion de cancelacion]
L --> M[Registrar cancelacion en servidor]
M --> N[Programar downgrade para fin de periodo]
N --> O[Mostrar confirmacion]
O --> P[Ofrecer formulario de feedback OPCIONAL]
P --> Q{Usuario quiere dar feedback?}
Q -->|Si| R[Mostrar formulario simple]
Q -->|No| S[Ir a dashboard]
R --> T[Usuario responde opcionalmente]
T --> U[Agradecer feedback]
U --> S
S --> V[Mantener acceso hasta fin de periodo]
5.5.4. Pantalla de Cancelacion Directa
+--------------------------------------------------+
| CANCELAR SUSCRIPCION |
+--------------------------------------------------+
Estas a punto de cancelar tu suscripcion Pro.
+--------------------------------------------------+
| LO QUE PASARA: |
| |
| - Mantendras acceso hasta: [fecha fin periodo] |
| - Despues, tu cuenta cambiara a Free |
| - Tus datos locales NO se eliminan |
| - Datos cloud se conservan 7 anos (cifrados) |
| - Tus cuidadores perderan acceso |
+--------------------------------------------------+
[ ] Entiendo y quiero cancelar
[Cancelar suscripcion]
[Volver - Mantener Pro]
+--------------------------------------------------+
| AYUDANOS A MEJORAR (Opcional) |
+--------------------------------------------------+
Lamentamos verte ir. Si quieres, cuentanos
por que cancelaste:
( ) Muy caro
( ) No usaba las funciones Pro
( ) Problemas tecnicos
( ) Encontre otra app
( ) Solo la necesitaba temporalmente
( ) Otro: [__________________]
Comentarios adicionales (opcional):
[________________________________]
[Enviar feedback] [No, gracias]
5.5.6. Reglas de Negocio
| ID |
Regla |
| RN-PAY-F05-001 |
Cancelacion es directa, sin preguntas que bloqueen |
| RN-PAY-F05-002 |
Formulario de feedback es opcional y separado |
| RN-PAY-F05-003 |
Acceso se mantiene hasta fin del periodo pagado |
| RN-PAY-F05-004 |
Cancelacion se procesa via App Store/Google Play |
| RN-PAY-F05-005 |
No hay reembolso por tiempo restante |
5.6. PAY-F06: Recuperacion de Fallo de Pago
5.6.1. Descripcion
Flujo cuando falla un pago de renovacion. Sin grace period - downgrade inmediato.
5.6.2. Flujo Principal
flowchart TD
A[Apple/Google notifica fallo de pago] --> B[Webhook recibido en servidor MedTime]
B --> C[Notificar usuario: Email + Push]
C --> D[Ejecutar downgrade INMEDIATO]
D --> E{Tier actual?}
E -->|Perfect| F[Degradar a Pro]
E -->|Pro| G[Degradar a Free]
F --> H[Mantener Pro, desactivar Perfect]
G --> I[Desactivar sync, modo local]
H --> J[Mostrar pantalla de fallo]
I --> J
J --> K[Usuario intenta actualizar pago]
K --> L{Actualiza en App Store/Google Play?}
L -->|Si| M[Nueva compra via IAP]
M --> N{Compra exitosa?}
N -->|Si| O[Restaurar tier original]
N -->|No| P[Mantener tier reducido]
L -->|No| P
O --> Q[Sincronizar datos pendientes]
Q --> R[Notificar restauracion exitosa]
5.7. PAY-F07: Reactivacion
5.7.1. Descripcion
Proceso de reactivacion de suscripcion despues de cancelacion o downgrade.
5.7.2. Precondiciones
- Usuario tiene cuenta MedTime existente
- Usuario fue previamente suscriptor Pro o Perfect
5.7.3. Flujo Principal
flowchart TD
A[Usuario Free quiere reactivar] --> B{Tiene datos cloud previos?}
B -->|Si| C[Mostrar datos recuperables]
B -->|No| D[Flujo de upgrade normal - PAY-F01]
C --> E[Mostrar resumen de datos guardados]
E --> F[Seleccionar plan a reactivar]
F --> G{Plan seleccionado}
G -->|Pro| H[Flujo de pago Pro]
G -->|Perfect| I[Flujo de pago Perfect]
H --> J{Pago exitoso?}
I --> J
J -->|Si| K[Restaurar acceso a datos cloud]
J -->|No| L[Mostrar error, mantener Free]
K --> M[Sincronizar datos cloud con dispositivo]
M --> N[Restaurar cuidadores si aplica]
N --> O[Notificar cuidadores de reactivacion]
O --> P[Mostrar datos recuperados]
P --> Q[Dashboard con datos restaurados]
5.7.4. Pantalla de Reactivacion
+--------------------------------------------------+
| BIENVENIDO DE VUELTA |
+--------------------------------------------------+
Encontramos tus datos guardados:
+--------------------------------------------------+
| DATOS RECUPERABLES: |
| |
| - 5 medicamentos |
| - 127 registros de tomas |
| - 3 recetas guardadas |
| - Racha maxima: 45 dias |
| - Ultimo acceso: hace 2 meses |
+--------------------------------------------------+
Al reactivar tu suscripcion, todos estos datos
se sincronizaran automaticamente.
[Reactivar Pro - $4.99/mes]
[Reactivar Perfect - $9.99/mes]
[Empezar de cero - Free]
5.7.5. Reglas de Negocio
| ID |
Regla |
| RN-PAY-F07-001 |
Datos cloud disponibles para recuperar por 7 anos |
| RN-PAY-F07-002 |
Reactivacion restaura datos automaticamente |
| RN-PAY-F07-003 |
Cuidadores previos son notificados de reactivacion |
| RN-PAY-F07-004 |
Gamificacion: puntos se conservan, rachas se reinician |
| RN-PAY-F07-005 |
Usuario puede elegir empezar de cero en lugar de recuperar |
6. Modelo de Datos
6.1. Entidad Suscripcion
Suscripcion {
id: UUID (PK)
usuario_id: UUID (FK)
tier: enum [FREE, PRO, PERFECT]
estado: enum [ACTIVA, CANCELADA, EXPIRADA]
fecha_inicio: timestamp
fecha_fin_periodo: timestamp
fecha_cancelacion: timestamp (nullable)
periodo: enum [MENSUAL, ANUAL]
plataforma: enum [APPLE, GOOGLE]
store_transaction_id: string
store_subscription_id: string
created_at: timestamp
updated_at: timestamp
}
6.2. Entidad Transaccion
Transaccion {
id: UUID (PK)
usuario_id: UUID (FK)
suscripcion_id: UUID (FK, nullable)
tipo: enum [SUSCRIPCION_NUEVA, RENOVACION, UPGRADE, REACTIVACION]
tier_origen: enum [FREE, PRO, PERFECT] (nullable)
tier_destino: enum [FREE, PRO, PERFECT]
monto: decimal
moneda: string
estado: enum [PENDIENTE, COMPLETADA, FALLIDA, REEMBOLSADA]
plataforma: enum [APPLE, GOOGLE]
store_transaction_id: string
metadata: jsonb
created_at: timestamp
}
6.3. Entidad HistorialTier
HistorialTier {
id: UUID (PK)
usuario_id: UUID (FK)
tier_anterior: enum [FREE, PRO, PERFECT]
tier_nuevo: enum [FREE, PRO, PERFECT]
motivo: enum [UPGRADE, DOWNGRADE_VOLUNTARIO, DOWNGRADE_PAGO_FALLIDO, CANCELACION, REACTIVACION]
fecha_cambio: timestamp
transaccion_id: UUID (FK, nullable)
created_at: timestamp
}
7. Reglas de Negocio
7.1. Reglas de Suscripcion
| ID |
Regla |
| RN-PAY-001 |
Suscripcion se activa inmediatamente tras pago exitoso |
| RN-PAY-002 |
Facturacion recurrente automatica via Apple/Google |
| RN-PAY-003 |
Recordatorio 7 dias antes de renovacion |
| RN-PAY-004 |
Precio bloqueado durante vigencia de suscripcion |
| RN-PAY-005 |
Solo titulares (Paciente Independiente o Cuidador Responsable) pueden suscribirse |
7.2. Reglas de Cambio de Plan
| ID |
Regla |
| RN-PAY-010 |
Upgrade es inmediato con prorrateo (manejado por Apple/Google) |
| RN-PAY-011 |
Downgrade voluntario efectivo al final del periodo pagado |
| RN-PAY-012 |
No hay reembolso por tiempo restante en downgrade |
| RN-PAY-013 |
Downgrade bloqueado si datos exceden limites del tier destino |
| RN-PAY-014 |
Sin grace period - Downgrade inmediato cuando pago falla |
7.3. Reglas de Cancelacion
| ID |
Regla |
| RN-PAY-020 |
Acceso completo hasta fin de periodo pagado |
| RN-PAY-021 |
Datos cloud se retienen 7 anos post-cancelacion (cifrados) |
| RN-PAY-022 |
Datos locales no se afectan |
| RN-PAY-023 |
Cuidadores pierden acceso al expirar suscripcion |
| RN-PAY-024 |
Usuario puede reactivar en cualquier momento |
7.4. Reglas de Manejo de Errores
| ID |
Regla |
| RN-ERR-PAY-001 |
Sin grace period - Downgrade inmediato cuando pago falla |
| RN-ERR-PAY-002 |
Downgrade bloqueado hasta cumplir requisitos de tier destino |
| RN-ERR-PAY-003 |
Verificacion de receipt fallida permite uso temporal 24h |
| RN-ERR-PAY-004 |
Reembolsos se procesan via Apple/Google, no directo |
8. Integraciones
8.1. Apple App Store (StoreKit 2)
| Aspecto |
Detalle |
| API |
StoreKit 2 (Swift) |
| Productos |
Auto-renewable subscriptions |
| Verificacion |
App Store Server API |
| Notificaciones |
App Store Server Notifications V2 |
| Sandbox |
Ambiente de pruebas disponible |
8.2. Google Play Billing
| Aspecto |
Detalle |
| API |
Google Play Billing Library 6.x |
| Productos |
Subscriptions |
| Verificacion |
Google Play Developer API |
| Notificaciones |
Real-time developer notifications (RTDN) |
| Test tracks |
Ambiente de pruebas disponible |
8.3. Verificacion de Receipts
flowchart TD
A[App recibe purchase token] --> B[Enviar token a servidor MedTime]
B --> C{Plataforma?}
C -->|iOS| D[Verificar con App Store Server API]
C -->|Android| E[Verificar con Google Play API]
D --> F{Valido?}
E --> F
F -->|Si| G[Activar/Actualizar suscripcion]
F -->|No| H[Rechazar, log de fraude potencial]
G --> I[Almacenar transaction_id]
I --> J[Configurar escucha de notificaciones]
9. Seguridad y Cumplimiento
9.1. Datos Almacenados
| Dato |
Almacenado en MedTime |
Almacenado en Apple/Google |
| Metodo de pago completo |
No |
Si |
| Token de transaccion |
Si |
Si |
| Historial de pagos |
Metadata |
Completo |
| Estado de suscripcion |
Si |
Si (fuente de verdad) |
| Informacion de reembolso |
Solo notificacion |
Si |
9.2. Cumplimiento Regulatorio
| Regulacion |
Implementacion |
| HIPAA |
Datos de pago separados de datos de salud |
| LGPD |
Consentimiento explicito, portabilidad |
| GDPR |
Derecho al olvido (excepto retencion legal) |
| PCI DSS |
No aplica - MedTime no procesa tarjetas |
10. Requisitos Regulatorios
| Requisito |
Descripcion |
Implementacion |
| Transparencia de precios |
Precios claros antes de compra |
Mostrar en moneda local con impuestos |
| Derecho de cancelacion |
Cancelar en cualquier momento |
Redirigir a App Store/Google Play |
| Retencion de datos |
7 anos para datos medicos |
Datos cifrados en cold storage |
| Facturacion |
Comprobante de compra |
Apple/Google proveen recibo |
| Privacidad |
No vincular pago con datos de salud |
Sistemas separados, solo user_id |
11. Casos de Error
11.1. ERR-PAY-001: Fallo Pago Recurrente
| Campo |
Valor |
| Codigo |
ERR-PAY-001 |
| Descripcion |
El cobro automatico de renovacion falla |
| Causa |
Tarjeta expirada, fondos insuficientes, cuenta suspendida |
| Deteccion |
Webhook de Apple/Google indica fallo |
| Accion Usuario |
Email + Push: "Tu pago ha fallado. Tu cuenta ha sido cambiada a [tier inferior]." |
| Accion Sistema |
Downgrade inmediato (sin grace period). Ejecutar flujo PAY-F04. |
| Severidad |
Alta |
| Recuperacion |
Usuario actualiza pago en App Store/Google Play y reactiva |
11.2. ERR-PAY-002: Downgrade con Datos Excedidos
| Campo |
Valor |
| Codigo |
ERR-PAY-002 |
| Descripcion |
Usuario intenta bajar de tier pero tiene mas datos de los permitidos |
| Causa |
Perfect->Pro con >5 dependientes |
| Deteccion |
Validacion pre-downgrade detecta exceso |
| Accion Usuario |
Wizard de seleccion de datos a conservar |
| Accion Sistema |
Bloquear downgrade hasta cumplir requisitos |
| Severidad |
Media |
| Recuperacion |
Usuario selecciona que datos conservar |
11.3. ERR-PAY-003: Procesador de Pago No Disponible
| Campo |
Valor |
| Codigo |
ERR-PAY-003 |
| Descripcion |
App Store o Google Play no responde |
| Causa |
Outage del servicio, problema de red |
| Deteccion |
Timeout o error en flujo IAP |
| Accion Usuario |
"El servicio de pagos no esta disponible. Intenta en unos minutos." |
| Accion Sistema |
No degradar usuarios activos, reintentar mas tarde |
| Severidad |
Alta |
| Recuperacion |
Reintento automatico cuando servicio se restaure |
11.4. ERR-PAY-004: Reembolso Solicitado
| Campo |
Valor |
| Codigo |
ERR-PAY-004 |
| Descripcion |
Usuario solicita reembolso via Apple/Google |
| Causa |
Insatisfaccion, compra accidental |
| Deteccion |
Webhook de reembolso de Apple/Google |
| Accion Usuario |
Notificar que reembolso fue procesado |
| Accion Sistema |
Ejecutar downgrade, registrar evento |
| Severidad |
Media |
| Recuperacion |
Usuario puede re-suscribirse si lo desea |
12. Criterios de Aceptacion
| ID |
Criterio |
| AC-PAY-001 |
Usuario puede suscribirse a Pro o Perfect exclusivamente via IAP |
| AC-PAY-002 |
Upgrade Pro a Perfect es inmediato con prorrateo |
| AC-PAY-003 |
Downgrade bloquea si datos exceden limites (wizard de seleccion) |
| AC-PAY-004 |
Downgrade inmediato en pago fallido (sin grace period) |
| AC-PAY-005 |
Cancelacion mantiene acceso hasta fin de periodo |
| AC-PAY-006 |
Cancelacion es directa sin preguntas obligatorias |
| AC-PAY-007 |
Datos cloud se conservan 7 anos tras downgrade/cancelacion |
| AC-PAY-008 |
Reactivacion restaura datos automaticamente |
| AC-PAY-009 |
Verificacion de receipts funciona para Apple y Google |
| AC-PAY-010 |
Webhooks de Apple/Google actualizan estado en tiempo real |
13. GAPs y Politicas por Tier
13.1. GAP-FREE-001: Limitaciones No Comunicadas Intrusivamente
13.1.1. Descripcion
Las limitaciones del tier Free no deben comunicarse de forma intrusiva o frustrante.
13.1.2. Implementacion
| Situacion |
Comunicacion |
NO Hacer |
| Usuario intenta usar sync |
Modal informativo con opcion de upgrade |
Pop-ups frecuentes |
| Usuario quiere agregar cuidador |
Explicacion de beneficio Pro |
Bloquear navegacion |
| Usuario ve estadisticas basicas |
Mostrar preview de avanzadas |
Ocultar la seccion |
13.1.3. Principio
"El tier Free debe sentirse completo, no mutilado."
13.2. GAP-FREE-002: Migracion de Datos (Conservar Cifrados 7 Anos)
13.2.1. Descripcion
Los datos de usuarios que hacen downgrade a Free se conservan cifrados por 7 anos.
13.2.2. Politica de Retencion
| Tipo de Dato |
Retencion |
Accesible en Free |
| Medicamentos cloud |
7 anos |
No (solo local) |
| Registros de toma |
7 anos |
No (solo local) |
| Recetas |
7 anos |
No (solo local) |
| Estadisticas |
7 anos |
No (solo local) |
13.2.3. Recuperacion
- Al reactivar Pro/Perfect, datos se sincronizan automaticamente
- Usuario puede solicitar eliminacion permanente via ARCO
13.3. GAP-FREE-003: Backup Prominente
13.3.1. Descripcion
Usuarios Free deben recibir recordatorios prominentes sobre la importancia de hacer backup.
13.3.2. Estrategia de Recordatorios
| Frecuencia |
Canal |
Mensaje |
| Cada 30 dias |
In-app banner |
"Hace [X] dias de tu ultimo backup" |
| Cada 60 dias |
Push notification |
"Recuerda hacer backup de tus datos" |
| Cada 90 dias |
Modal al abrir app |
"Tus datos solo estan en este dispositivo" |
13.3.3. Mensaje Clave
IMPORTANTE: Si pierdes tu telefono,
perderas tus datos de MedTime.
[Hacer backup ahora] [Recordarme despues]
13.4. GAP-PRO-001: Sin Grace Period (Documentar)
13.4.1. Descripcion
Documentacion explicita de que no hay periodo de gracia.
13.4.2. Comunicacion al Usuario
| Momento |
Canal |
Mensaje |
| Al suscribirse |
T&C |
"Si el pago falla, tu cuenta cambiara inmediatamente" |
| Pago fallido |
Push + Email |
"Tu pago fallo. Tu cuenta es ahora [tier inferior]" |
| Post-downgrade |
In-app banner |
"Tu cuenta es Free. Actualiza pago para restaurar" |
13.4.3. FAQ
13.4.4. Q: Que pasa si mi pago falla?
A: Tu cuenta cambia inmediatamente al tier inferior (Perfect->Pro->Free). Tus datos locales no se afectan, y tus datos en la nube se conservan cifrados por 7 anos. Puedes restaurar tu cuenta actualizando tu metodo de pago en la App Store o Google Play.
14. Exportacion FHIR (Pro/Perfect desde v1.0)
14.1. Descripcion
Usuarios Pro y Perfect pueden exportar sus datos en formato FHIR R4 desde la version 1.0.
14.2. Flujo de Exportacion
flowchart TD
A[Usuario accede a Exportar Datos] --> B{Tier del usuario?}
B -->|Free| C[Mostrar: Disponible en Pro/Perfect]
B -->|Pro/Perfect| D[Mostrar opciones de exportacion]
D --> E{Formato}
E -->|FHIR R4| F[Preparar bundle FHIR]
E -->|CSV| G[Preparar archivos CSV]
E -->|PDF| H[Preparar reporte PDF]
F --> I[Re-autenticar con MFA]
G --> I
H --> I
I --> J{Autenticacion OK?}
J -->|Si| K[Generar y descargar archivo]
J -->|No| L[Error de autenticacion]
14.3. Recursos FHIR Exportados
| Recurso FHIR |
Datos MedTime |
| Patient |
Perfil de usuario |
| MedicationStatement |
Medicamentos activos |
| MedicationRequest |
Recetas |
| Observation |
Registros de toma, mediciones |
| CarePlan |
Planes de tratamiento |
14.4. Reglas de Negocio
| ID |
Regla |
| RN-FHIR-001 |
Exportacion FHIR solo en Pro/Perfect |
| RN-FHIR-002 |
Re-autenticacion MFA obligatoria |
| RN-FHIR-003 |
Formato FHIR R4 (4.0.1) |
| RN-FHIR-004 |
Maximo 10 exportaciones por dia |
15. Referencias Cruzadas
Documento generado por SpecQueen - "La resistencia es futil. Tu modelo de negocio sera asimilado en una especificacion impecable."