Un seul catalogue
Les produits d'App Store Connect et de la Play Console correspondent à un seul entitlement : votre backend n'a jamais besoin de distinguer les plateformes.
Paiements
Votre app Lovable ou Bolt a déjà un paiement Stripe. Sur l'App Store et Google Play, certains de ces achats doivent passer à l'achat intégré et d'autres peuvent rester exactement tels quels. La règle est plus simple qu'il n'y paraît, dès que l'on se pose la bonne question : qu'est-ce que l'utilisateur achète réellement ?
Dès $109 en paiement unique par plateforme, ou notre équipe s'occupe de tout dès $698.
La guideline 3.1.1 d'Apple et la politique de paiements de Google disent la même chose en d'autres termes : si l'utilisateur achète quelque chose qui s'utilise dans l'app (fonctionnalités, abonnements, crédits, contenu premium), l'achat doit passer par le système de facturation du store. S'il achète quelque chose qui s'utilise en dehors de l'app (un produit physique, une coupe de cheveux, un ménage, un repas livré), le système de facturation du store ne doit pas être utilisé, et Stripe est le bon outil.
Apple ajoute quelques exceptions nommées dans la 3.1.3 : les services multiplateformes peuvent permettre aux utilisateurs d'accéder à du contenu acheté sur votre site web, à condition que les mêmes éléments soient aussi vendus dans l'app via IAP ; les services en temps réel de personne à personne (cours particuliers, consultations) peuvent utiliser d'autres moyens de paiement ; les apps de type « reader » ont leurs propres règles. Google exempte les biens et services physiques ainsi que quelques cas particuliers comme les dons et les paiements entre particuliers. Tout ce qui est numérique et consommé dans l'app relève de Play Billing.
| Vous vendez… | Dans l'app iOS | Dans l'app Android | Sur votre site web |
|---|---|---|---|
| Un abonnement aux fonctionnalités de l'app (offre SaaS, niveau premium) | IAP obligatoire (3.1.1, 3.1.2) | Play Billing obligatoire | Stripe, comme avant |
| Crédits IA, jetons, générations | IAP (consommable) | Play Billing (consommable) | Stripe |
| Cours, templates, téléchargements utilisés dans l'app | IAP | Play Billing | Stripe |
| Produits physiques (boutique) | Stripe obligatoire ; IAP non autorisé | Stripe ; Play Billing non autorisé | Stripe |
| Services consommés en personne (réservations, ménage, réparations) | Stripe | Stripe | Stripe |
| Services individuels en direct (appel de soutien scolaire, consultation) | Stripe autorisé selon la 3.1.3(d) ; IAP facultatif | En général hors Play Billing ; vérifiez la politique pour votre créneau | Stripe |
| Dons à une association reconnue | Autres moyens autorisés pour les associations approuvées | Exemptés dans de nombreux cas ; vérifiez la politique | Stripe |
La même web app sert les deux canaux ; seul le bouton de paiement change.
Dans Config.swift, définissez useragent_iphone et useragent_ipad, dans Config.java USER_AGENT, avec une chaîne qui contient un jeton unique, par exemple le user agent par défaut suivi de WebViewGoldApp/1.0. Laissez en place l'assistant de connexion Google ; il conserve son propre user agent accepté pour l'étape OAuth.
const inApp = navigator.userAgent.includes("WebViewGoldApp"). Affichez le bouton IAP dans l'app et le bouton Stripe sur le web. Ne masquez pas le prix ; affichez celui du store.
Dans l'app, le bouton navigue vers revenuecat://purchase?external_id=USER_ID&product=PRODUCT_ID (ou revenuecat://launchPaywall?external_id=USER_ID&offering=OFFERING pour un paywall RevenueCat). WebViewGold ouvre la feuille d'achat native.
Les webhooks Stripe et RevenueCat écrivent dans la même table d'abonnements. La web app demande seulement « cet utilisateur est-il actif ? » et ne se soucie jamais du store qui a encaissé.
En dehors des exceptions régionales, l'app ne doit pas inviter les utilisateurs à acheter sur le site web, afficher les prix web ni renvoyer vers le paiement Stripe. Les abonnés web existants se connectent simplement et sont actifs, ce que la 3.1.3(b) autorise tant que l'IAP est aussi proposé.

Avec une bonne version optimisée de votre application Web, vous pouvez avoir une superbe application mobile en quelques minutes. De plus, le service client est très agréable et très utile! Je ne peux que recommander WebViewGold :-)
Une version minimale. En production, lisez les IDs de produits depuis votre backend pour qu'ils restent synchronisés avec les deux stores.
const inApp = /WebViewGoldApp/.test(navigator.userAgent);
function subscribe(userId) {
if (inApp) {
// Feuille d'achat native via WebViewGold + RevenueCat (iOS et Android)
window.location.href = "revenuecat://purchase?external_id=" + encodeURIComponent(userId) + "&product=premium_monthly";
} else {
// Web : votre session Stripe Checkout existante
window.location.href = "/api/stripe/checkout?plan=premium_monthly";
}
}
// Une fois la feuille native fermée, interrogez votre backend jusqu'à l'arrivée du webhook
async function waitForEntitlement(userId, tries = 10) {
for (let i = 0; i < tries; i++) {
const r = await fetch("/api/me/subscription").then(x => x.json());
if (r.active) return true;
await new Promise(res => setTimeout(res, 1000));
}
return false;
}cancelinapppurchase:// pour les abonnements des stores (il ouvre l'écran d'abonnements du système).Les produits d'App Store Connect et de la Play Console correspondent à un seul entitlement : votre backend n'a jamais besoin de distinguer les plateformes.
Deux clés dans Config.swift et Config.java, puis des liens revenuecat:// depuis la web app. Aucun code natif. Les achats intégrés nécessitent la licence étendue (Extended License) de WebViewGold.
Les événements d'achat initial, de renouvellement, de résiliation, de problème de facturation et d'expiration arrivent dans votre edge function Supabase ou votre Cloud Function. Le guide de configuration RevenueCat vous guide pas à pas.
C'est justement le fait de le leur dire qui pose problème : en dehors des exceptions régionales, cela compte comme une incitation au sens de la 3.1.1. Une app limitée à la connexion, sans aucun parcours d'achat, est parfois acceptée, mais les reviewers demandent souvent comment un nouvel utilisateur devient un utilisateur payant. Proposer l'IAP est la réponse fiable.
Oui, pour les biens physiques et les services consommés hors de l'app. Apple n'autorise pas du tout l'IAP dans ces cas.
Non. La commission ne s'applique qu'aux achats effectués via la facturation d'Apple ou de Google.
Les pourboires numériques et le contenu de coaching dans l'app relèvent de l'IAP. Les sessions individuelles en temps réel entre deux personnes peuvent utiliser d'autres moyens de paiement sur iOS selon la 3.1.3(d). Précisez votre cas dans les notes pour la validation.
Oui, l'Extended License. Tout le reste de ce guide fonctionne avec la licence standard.
Même résultat, charge de travail différente de votre côté. Les trois formules incluent la garantie d'approbation et le support humain 24/7.
$109 par plateforme, paiement unique
La licence WebViewGold : un projet Xcode ou Android Studio prêt à l'emploi. Collez votre URL, définissez le nom et l'icône, activez les fonctionnalités, compilez et soumettez. Mises à jour gratuites à vie.
Voir les offres sur la page principale$349 par licence, extension en paiement unique
Ni Mac, ni Xcode, ni Android Studio : configurez dans le navigateur, nous compilons les deux apps dans le cloud et les transmettons à App Store Connect et à la Play Console.
Comment fonctionne le Cloud Builder Essayer la démo gratuite$698 par plateforme $798
Envoyez-nous votre URL et votre icône. Notre équipe configure, compile et livre votre app sous 72 heures, en marque blanche, projets sources inclus. Les deux plateformes pour $1,158.
Détails du Full Service Propulsé parPrix Soldes d'hiver valables jusqu'au 31 décembre 2026.
Garantie d'approbation App Store & Google Play – ou remboursement sous 14 jours
Vous préférez déléguer ? Full Service : nous configurons, compilons et livrons sous 72 heures, dès $698 par plateforme. Des questions ? Chattez avec nous 24/7.
Les remboursements sont accordés aux conditions indiquées dans notre FAQ : un refus non lié au contenu par Apple et/ou Google, demandé dans les 14 jours suivant l'achat.