Saltar a contenido

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]

5.4.6. Pantalla de Downgrade Inmediato por Pago Fallido

+--------------------------------------------------+
| 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]

5.5.5. Formulario de Feedback (Opcional y Separado)

+--------------------------------------------------+
| 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."