Gérer les abonnements et les achats uniques

Vous devrez peut-être prendre des mesures de gestion sur les abonnements ou les achats uniques dans le cadre de votre activité quotidienne. Par exemple, votre service client peut être amené à effectuer des remboursements intégraux ou partiels pour les utilisateurs, ou à révoquer des droits d'accès dans certains cas. Vous pouvez gérer les commandes depuis la Play Console. Si vous préférez les gérer à partir de votre propre système, vous pouvez le faire à l'aide de l'API Google Play Developer.

Annuler les abonnements

Les utilisateurs ou les développeurs peuvent résilier un abonnement.

Annulations à l'initiative de l'utilisateur

Les utilisateurs peuvent résilier un abonnement Google Play à tout moment via le Play Store. Le cas échéant, vous devez également leur proposer de résilier leur abonnement dans votre application et sur votre site Web.

Le moyen le plus simple de permettre aux utilisateurs de résilier volontairement leur abonnement est de fournir des liens profonds vers le Play Store dans votre application, où ils peuvent consulter et gérer leurs abonnements.

Annulations à l'initiative du développeur

En tant que développeur, vous devrez peut-être également déclencher des annulations à partir de votre backend. L'API purchases.subscriptions.cancel vous permet d'annuler un achat d'abonnement. Par exemple, vous pouvez utiliser cette méthode pour désactiver un ancien service. La résiliation d'un abonnement n'entraîne pas de remboursement, et l'utilisateur conserve l'accès jusqu'à la fin de la période de facturation en cours.

Cette méthode vous permet de spécifier les types d'annulations suivants dans le paramètre de corps de requête cancellationType:

  • USER_REQUESTED_STOP_RENEWALS: résilie l'abonnement comme si les utilisateurs l'avaient fait depuis le Play Store. Les versements en plusieurs fois continueront pendant le reste de la période d'engagement en cours. Depuis le Play Store, les utilisateurs peuvent restaurer l'abonnement avant qu'il n'expire ou se réabonner après son expiration, si cette option est activée pour le forfait de base.

  • DEVELOPER_REQUESTED_STOP_PAYMENTS: annule l'abonnement et empêche tout autre paiement. Les utilisateurs ne peuvent pas restaurer ni se réabonner à l'abonnement depuis le Play Store. Toutefois, vous pouvez leur permettre de se réabonner dans votre application.

Autoriser les utilisateurs à restaurer des abonnements non expirés

Dans certains cas, il peut être utile d'autoriser les utilisateurs à restaurer des abonnements non expirés depuis le centre des abonnements Play après avoir déclenché la résiliation en tant que développeur. Par exemple, vous pouvez fournir un flux d'annulation personnalisé dans l'application. En fonction de votre logique métier, vous pouvez décider quelles annulations déclenchées à partir de votre backend peuvent être restaurées par les utilisateurs.

Pour indiquer qu'un utilisateur peut rétablir l'annulation, envoyez une requête POST à l'API purchases.subscriptions.cancel et définissez le paramètre de requête cancellationType sur la valeur USER_REQUESTED_STOP_RENEWAL.

Exemple :

  • Jeton d'achat de l'abonnement 1a2b3c4d5e6f7g8h9i0j
  • Nom du package de l'application com.your.app
  • ID d'abonnement your-subscription-product

Requête POST HTTP:

https://androidpublisher.googleapis.com/androidpublisher/v3/applications/com.your.app/purchases/subscriptions/your-subscription-product/tokens/1a2b3c4d5e6f7g8h9i0j:cancel

Corps de la requête:

{
  "cancellationType": "USER_REQUESTED_STOP_RENEWAL"
}

Autoriser les utilisateurs à se réabonner à des abonnements expirés

Pour autoriser le réabonnement à un abonnement expiré, vous devez activer l'option Resubscribe (Se réabonner) dans le forfait de base de l'abonnement, puis résilier l'abonnement en définissant le paramètre cancellationType sur la valeur USER_REQUESTED_STOP_RENEWAL.

Autoriser les utilisateurs à se réabonner uniquement dans votre application

Si vous avez défini le paramètre cancellationType sur DEVELOPER_REQUESTED_STOP _PAYMENTS ou si vous ne l'avez pas défini, les utilisateurs ne peuvent pas restaurer leur abonnement depuis le centre des abonnements Play.cancellationType Toutefois, les utilisateurs peuvent se réabonner via votre application si nécessaire.

Cette action déclenche une notification en temps réel pour les développeurs SUBSCRIPTION_CANCELED. Gérez ces résiliations comme décrit dans la section Résiliations.

Reporter la facturation

Utilisez subscriptions.defer pour prolonger la période d'éligibilité d'un abonnement. Pendant la période de report, l'utilisateur reste abonné à votre contenu, mais n'est pas facturé pour la période supplémentaire. Lorsque vous différez la facturation d'un abonnement, les informations d'état sont mises à jour en conséquence et s'affichent dans le champ expiryTime des informations sur l'état de l'achat:

  • Pour les abonnements récurrents actifs, la facturation différée repousse la date de renouvellement suivante.
  • Pour les forfaits prépayés, la facturation différée prolonge la date d'expiration.

Voici quelques exemples d'utilisation de la facturation différée:

  • Proposer aux utilisateurs un accès sans frais en tant qu'offre spéciale, par exemple en leur offrant une semaine sans frais lorsqu'ils remplissent une enquête
  • Proposez un accès sans frais aux clients en guise de geste commercial, par exemple après une interruption prolongée qui a pu affecter leur capacité à utiliser votre service.

La facturation peut être différée pour une durée allant d'un jour à une année via un appel d'API. Pour différer davantage la fin du droit d'accès, appelez à nouveau l'API avant l'arrivée de la nouvelle date d'expiration.

Cette action déclenche une notification en temps réel pour les développeurs SUBSCRIPTION_DEFERRED. Pour savoir comment gérer ces événements, consultez Différer la facturation pour un abonné dans À propos des abonnements.

Exemple :

  1. Le service de streaming FitnessGoals souhaite diffuser une promotion pour encourager les exercices réguliers en février.

  2. Elle décide d'offrir un mois de service supplémentaire à tout abonné qui s'entraîne avec FitnessGoals au moins 10 fois au cours du mois de février.

  3. Elle suit les résultats du défi et, le 1er mars, appelle l'API subscriptions.defer pour chaque achat d'abonnement actif appartenant aux utilisateurs qui ont relevé le défi en février.

  4. Ces utilisateurs bénéficient d'un mois supplémentaire de vidéos d'exercices réguliers sans frais, et ils racontent à tous leurs amis comment FitnessGoals les aide à rester en forme.

Effectuer des remboursements et des révocations

Dans de nombreuses situations, vous pouvez être amené à rembourser un achat ou à révoquer l'accès à un abonnement ou à un achat unique.

Rembourser intégralement une commande par ID de commande

Avec l'API orders.refund, vous pouvez rembourser intégralement toute commande dans les trois ans suivant l'achat. La méthode orders.refund reçoit un paramètre de révocation indiquant si l'accès doit être révoqué en plus du remboursement.

Si vous annulez l'abonnement avec l'appel de remboursement pour l'achat d'un abonnement, l'abonnement est immédiatement résilié et une notification en temps réel pour les développeurs SUBSCRIPTION_REVOKED est déclenchée. Consultez la section Révocations du guide de gestion du cycle de vie des abonnements pour savoir comment gérer ces événements.

Exemple :

  1. Pour célébrer le début de la nouvelle Coupe du monde, l'application d'e-sport Football-Not-Soccer décide de faire gagner des maillots virtuels sans frais à tous les utilisateurs qui achètent de nouveaux kits d'équipe dans les 24 premières heures.

  2. Football-Not-Soccer utilise l'API orders.refund sans transmettre de paramètre de révocation pour rembourser les achats de maillots aux gagnants.

Révoquer et rembourser un abonnement par jeton d'achat

Dans certains cas, vous devrez peut-être révoquer l'accès à l'abonnement d'un utilisateur et lui rembourser son abonnement. Play Billing propose des méthodes de rétractation, y compris des remboursements complets et des remboursements au prorata via l'API subscriptionsv2.revoke. Avec ce point de terminaison, vous pouvez spécifier revocationContext pour déterminer comment le remboursement est calculé.

Cette action déclenche une notification en temps réel pour les développeurs SUBSCRIPTION_REVOKED. Votre application doit gérer ces résiliations comme décrit dans la section Révocations.

Exemple :

  • Acheter avec le jeton d'achat 1a2b3c4d5e6f7g8h9i0j
  • Application avec le nom de package com.your.app
  • Intent of issuing a prorated refund

Requête POST HTTP:

https://androidpublisher.googleapis.com/androidpublisher/v3/applications/com.your.app/purchases/subscriptionsv2/tokens/1a2b3c4d5e6f7g8h9i0j:revoke

Corps de la requête:

{
  "revocationContext": {
    "proratedRefund": {}
  }
}

Remboursements totaux

Si vous devez résilier un abonnement et rembourser l'intégralité de la période de facturation en cours, effectuez un remboursement total. Utilisez la fonction purchases.subscriptionsv2.revoke et définissez "fullRefund": {} comme type de remboursement.

Exemple :

  1. Maria dispose d'un abonnement de 30 jours à renouvellement automatique au forfait mensuel de streaming SuperMovies. Maria a rencontré des problèmes techniques qui l'empêchent d'accéder au contenu. Elle contacte le service client le troisième jour de son cycle de facturation, indiquant qu'elle n'a jamais eu accès à l'abonnement.

  2. Le service client recherche les détails de l'abonnement de Maria dans son système et déclenche un appel à purchases.subscriptionsv2.revoke pour demander un remboursement complet.

  3. Le service client indique à Maria qu'elle devrait recevoir le remboursement intégral du prix de son abonnement et qu'elle n'est plus abonnée au forfait.

Remboursements calculés au prorata

Si vous devez résilier un abonnement et rembourser partiellement la durée restante de l'accès, émettez un remboursement au prorata. Utilisez la fonction purchases.subscriptionsv2.revoke et définissez "proratedRefund": {} comme type de remboursement.

Exemple :

  1. Maria dispose d'un abonnement de 30 jours à renouvellement automatique au forfait mensuel de streaming SuperMovies. Elle utilise ce service depuis un certain temps. Maria contacte le service client le 15e jour de son cycle de facturation pour indiquer qu'elle déménage à l'étranger et qu'elle ne pourra plus utiliser le service à partir du lendemain.

  2. Le service client recherche les détails de l'abonnement de Maria dans son système et déclenche un appel à purchases.subscriptionsv2.revoke pour demander un remboursement au prorata.

  3. Le service client lui indique qu'elle devrait recevoir environ 50% du prix de son abonnement en remboursement et que son accès au service sera immédiatement résilié.