Imaginez: un utilisateur achète un abonnement, change d’appareil, réinstalle votre application et perd soudainement son accès. C’est le moyen le plus simple de perdre sa confiance.
C’est exactement pour cela que la fonction « Restaurer l’achat » existe. Elle peut sembler facultative, mais elle est indispensable, en particulier pour les applications basées sur un abonnement.
Cette option permet aux utilisateurs de retrouver l’accès à du contenu acheté précédemment sans avoir à repayer.
Il s’agit d’un petit bouton qui joue un rôle important en matière de confiance, de conformité et de fidélisation des utilisateurs.
Pourquoi c’est important
- Confiance des utilisateurs : si quelqu’un a payé une fois, il s’attend à conserver son accès, quel que soit l’appareil utilisé.
- Charge de support : logique de restauration confuse ou manquante = utilisateurs mécontents + augmentation du nombre de tickets.
- Conformité à l’App Store : Apple et Google exigent tous deux que vous incluiez une option de restauration pour certains types de produits.
Quels achats peuvent être restaurés
Les achats pouvant être restaurés comprennent :
- Non consommables : achats uniques tels que l’accès à vie ou des fonctionnalités premium.
- Abonnements à renouvellement automatique : forfaits mensuels/annuels synchronisés sur tous les appareils.
- Abonnements non renouvelables : accès à durée déterminée (par exemple, un abonnement de 3 mois).
Non restaurable :
- Consommables tels que des pièces, des vies supplémentaires ou des bonus à usage unique. Ils sont destinés à être utilisés.
Comment fonctionne le bouton « Restaurer les achats »
- UI/UX. Ajoutez un bouton « Restaurer l’achat » — généralement dans les paramètres ou directement sur le paywall.
- Déclencher. En appuyant sur le bouton, déclenchez une restauration via :
- SKPaymentQueue.restoreCompletedTransactions() pour iOS
- BillingClient.queryPurchaseHistoryAsync() pour Android
- Ou votre logique backend si vous gérez les droits côté serveur
- Mettre à jour l’accès. Une fois la restauration terminée, actualisez le statut d’abonnement de l’utilisateur et déverrouillez le contenu.
- Ajoutez une note utile. Une simple ligne permet de réduire la confusion : « Utilisez cette option si vous avez changé d’appareil ou réinstallé l’application. »
- Évitez les redondances. Si l’utilisateur dispose déjà d’un accès, désactivez le bouton ou masquez-le complètement.
- Logique des comptes. Pour les applications avec connexion : liez les abonnements aux comptes utilisateurs et synchronisez-les via le backend afin de simplifier la restauration sur plusieurs appareils.
Comment la restauration des achats fonctionne sur iOS
Sur iOS, la restauration des achats actualise le reçu de l’application et redistribue les produits liés à l’Apple ID de l’utilisateur. Le processus s’exécute silencieusement en arrière-plan, et l’expérience doit rester simple et claire.
Voici comment procéder avec le StoreKit natif (avant StoreKit 2):
1. Lancer le processus de restauration
Appelez restoreCompletedTransactions() pour déclencher le flux de restauration :
SKPaymentQueue.default().restoreCompletedTransactions()Cela indique à StoreKit de rechercher tous les achats passés liés à l’Apple ID actuel.
2. Gérer les transactions restaurées
Écoutez la file d’attente des paiements et vérifiez les états de transaction .restored. Ensuite, déverrouillez le contenu et marquez la transaction comme terminée :
func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
for transaction in transactions {
if transaction.transactionState == .restored {
// Unlock access based on restored product
unlockContent(transaction: transaction)
SKPaymentQueue.default().finishTransaction(transaction)
}
}
}N’oubliez pas d’appeler finishTransaction(_:). Sinon, StoreKit pourrait continuer à réessayer la même transaction.
3. Gérer les échecs avec élégance
La restauration peut échouer en raison de reçus invalides, de problèmes réseau ou si l’Apple ID ne possède aucun achat éligible. Affichez un retour clair à l’utilisateur et enregistrez l’erreur pour le débogage.
Vous utilisez Adapty SDK ? Nous gérons tout cela, y compris la validation des reçus et les cas particuliers, à l’aide d’un seul appel de méthode.
Comment la restauration des achats fonctionne sur Android
Sur Android, restaurer les achats signifie vérifier l’historique d’achat de l’utilisateur via Google Play et réactiver tout produit non consommable ou abonnement actif. Il n’existe pas de bouton « restaurer » intégré comme sur iOS. Cela signifie que vous devez le gérer manuellement via l’API de facturation.
Voici comment procéder avec la Google Play Billing Library:
1. Consulter l’historique des achats
Utilisez queryPurchaseHistoryAsync() pour récupérer les achats passés de l’utilisateur :
billingClient.queryPurchaseHistoryAsync(
BillingClient.SkuType.SUBS
) { billingResult, purchaseHistoryList ->
if (billingResult.responseCode == BillingClient.BillingResponseCode.OK && purchaseHistoryList != null) {
for (purchase in purchaseHistoryList) {
// Restore subscription access
restoreEntitlement(purchase)
}
}
}Vous pouvez également interroger les achats intégrés à l’application en transmettant BillingClient.SkuType.INAPP.
2. Valider et débloquer
Après avoir récupéré l’historique des achats, validez les reçus (idéalement côté serveur) et accordez l’accès en conséquence. Assurez-vous de vérifier les données de signature pour éviter l’usurpation.
Adapty gère la validation des achats, la logique d’accès utilisateur et la synchronisation multiplateforme de manière native.
3. Considérations UX
Comme les utilisateurs Android ne s’attendent pas à un bouton « Restaurer les achats », vous pouvez:
- Déclencher automatiquement la restauration lors de la connexion ou du lancement de l’application
- Ou proposer une option discrète dans les Paramètres par souci de transparence
Dans tous les cas, assurez-vous que la logique de restauration s’exécute silencieusement en arrière-plan et met à jour l’interface lorsque l’accès est restauré.
Conclusion
Le bouton « Restaurer les achats » peut sembler simple, mais il joue un rôle essentiel dans le parcours d’abonnement.
- Il instaure la confiance.
- Il réduit le taux de désabonnement.
- Il vous maintient en conformité.
Rendez-le visible. Faites-le fonctionner. Et rendez-le facile à comprendre.




