Files
roadwave/docs/regles-metier/17-premium.md
2026-01-31 11:45:11 +01:00

5.9 KiB

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 :

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