## 10. Premium ### 10.1 Offre et tarification **Décision** : Deux formules sans essai gratuit | Formule | Prix | Économie | Prix effectif | |---------|------|----------|---------------| | **Mensuel** | 4.99€/mois | - | 4.99€/mois | | **Annuel** | 49.99€/an | 2 mois offerts | 4.16€/mois | **❌ Pas d'essai gratuit** **Raisons** : - **Anti-abus vacances** : évite inscriptions opportunistes (essai 14j avant road trip vacances, puis annulation) - **Protection revenus créateurs** : les écoutes Premium rémunèrent créateurs dès jour 1 - **Simplicité** : pas de gestion période trial + conversion - **Engagement** : utilisateur qui paie dès début = plus engagé **❌ Pas de partage familial (MVP)** **Raisons** : - Complexité technique (gestion invitations, validation liens, limite devices) - Risque abus ("familles" de 6 inconnus) - Coût dev/support élevé pour ROI incertain - La plupart des users RoadWave sont individuels (conducteurs) - **Post-MVP** : Si forte demande, offre "Famille" à 9.99€/mois pour 5 comptes **Justification tarif** : - **Aligné marché bas** : Spotify = 10.99€, YouTube Premium = 11.99€, Apple Music = 10.99€ - **Prix accessible** : cible conducteurs quotidiens (budget raisonnable) - **Incitation annuel** : 2 mois offerts = engagement long terme + réduction churn --- ### 10.2 Multi-devices et détection simultanée **Décision** : 1 seul stream actif par compte à tout moment **Détection connexion simultanée** : ``` User A écoute sur iPhone → User A lance sur iPad → Détection : session active iPhone existe → Action : Arrêt lecture iPhone (WebSocket close) → Message iPhone : "Lecture interrompue : votre compte est utilisé sur un autre appareil" → Lecture démarre iPad ``` **Implémentation technique** : ``` Redis : active_streams:{user_id} → {device_id, started_at} TTL : 5 minutes (refresh à chaque heartbeat) Heartbeat toutes les 30s depuis app : → Si autre device détecté : kill session actuelle → Si pas de heartbeat pendant 5 min : considérer session morte ``` **Exceptions** : - Contenus téléchargés (offline) ne comptent pas comme stream actif - Transition rapide device (<10s) tolérée (changement voiture → maison) **Justification** : - **Anti-partage compte** : empêche 2 personnes d'utiliser même compte Premium - **Protection revenus créateurs** : 1 abonnement = 1 personne = 1 écoute - **UX claire** : message explicite, pas de coupure brutale --- ### 10.3 Contenus exclusifs Premium **Décision** : Créateur décide (déjà couvert section 9.6) **Rappel règles** : - Toggle "Réservé Premium" par contenu - Aucune limite de ratio gratuit/premium - Badge 👑 visible - Users gratuits : lecture bloquée avec CTA "Passez Premium" **Impact algorithme** : - Contenus premium inclus dans recommandations - Si user gratuit → skip automatique (ne consomme pas slot) - Si user premium → diffusé normalement selon score --- ### 10.4 Avantages Premium **Inclus dans l'abonnement** : | Avantage | Gratuit | Premium | |----------|---------|---------| | **Publicités** | 1/5 contenus | 0 (aucune) | | **Contenus exclusifs** | ❌ Bloqués | ✅ Accès complet | | **Qualité audio** | 48 kbps Opus | 64 kbps Opus | | **Mode offline** | 50 contenus max | Illimité | | **Historique écoute** | 100 derniers | Illimité | **Qualité audio** : - Gratuit : 48 kbps Opus (~20 MB/h) = très correct pour voix - Premium : 64 kbps Opus (~30 MB/h) = excellente qualité **Justification différences** : - **0 pub** = argument principal (confort écoute) - **Qualité audio** = avantage tangible audiophiles - **Offline illimité** = use case road trips longs - **Pas d'over-engineering** : pas de badges cosmétiques, fonctionnalités sociales, etc. (focus essentiel) --- ### 10.5 Gestion abonnement **Souscription** : | Canal | Prestataire | Prix | Commission | |-------|-------------|------|------------| | **Web (desktop/mobile)** | Mangopay | 4.99€ | 1.8% + 0.18€ = 0.27€ | | **iOS App** | Apple In-App Purchase | 5.99€ | 30% (Apple) | | **Android App** | Google Play Billing | 5.99€ | 30% (Google) | **Majoration mobile (5.99€)** : - Apple/Google prennent 30% de commission - RoadWave majore prix de 20% pour compenser - **Incitation web** : Email aux users "Abonnez-vous sur roadwave.com pour 4.99€/mois" (38% moins cher en frais !) **Renouvellement automatique** : - Email rappel **7 jours avant** renouvellement - Email confirmation **après** renouvellement réussi - Retry automatique si échec paiement (3 tentatives sur 7 jours) - Annulation automatique après 3 échecs **Annulation** : - Self-service dans Settings app : "Abonnement > Annuler" - Accès Premium maintenu jusqu'à **fin période payée** - Pas de remboursement prorata (standard industrie) - Email confirmation annulation avec date fin d'accès **Réabonnement** : - Possibilité immédiate - ❌ Pas de nouvelle période d'essai (pas d'essai du tout) **Architecture données** : ```sql CREATE TABLE subscriptions ( id UUID PRIMARY KEY, user_id UUID NOT NULL REFERENCES users(id) UNIQUE, mangopay_recurring_payin_id VARCHAR(255), -- Null si IAP mangopay_user_id VARCHAR(255), -- Null si IAP apple_transaction_id VARCHAR(255), -- Null si Mangopay google_purchase_token VARCHAR(255), -- Null si Mangopay status VARCHAR(50) NOT NULL, -- 'active', 'cancelled', 'expired', 'past_due' plan VARCHAR(50) NOT NULL, -- 'monthly', 'yearly' current_period_start TIMESTAMP NOT NULL, current_period_end TIMESTAMP NOT NULL, cancelled_at TIMESTAMP, created_at TIMESTAMP NOT NULL DEFAULT NOW() ); ``` **Vérification Premium en temps réel** : ``` Cache Redis : premium:{user_id} → boolean (TTL 1h) Refresh via webhooks : - Mangopay : PAYIN_NORMAL_SUCCEEDED, PAYIN_NORMAL_FAILED - Apple : App Store Server Notifications - Google : Real-time Developer Notifications ``` --- ## Récapitulatif Section 10