Gérer les abonnements et les achats uniques

Vous devrez peut-être effectuer des actions de gestion sur les abonnements ou les achats ponctuels dans le cadre de vos activités quotidiennes. Par exemple, votre service client devra peut-être effectuer des remboursements totaux ou partiels pour les utilisateurs, ou vous devrez peut-être révoquer des droits dans certains cas. Vous pouvez gérer les commandes depuis la Play Console. Si vous souhaitez les gérer depuis votre propre système, vous pouvez le faire à l'aide de l' API Google Play Developer.

Annuler les abonnements

Les annulations d'abonnement peuvent être initiées par les utilisateurs ou les développeurs.

Annulations initiées par l'utilisateur

Les utilisateurs peuvent annuler un abonnement Google Play à tout moment à l'aide du Play Store. Le cas échéant, vous devez également proposer aux utilisateurs une option pour annuler leurs abonnements dans votre application et sur votre site Web.

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

Annulations initiées par le développeur

En tant que développeur, vous devrez peut-être également déclencher des annulations depuis votre backend. L'purchases.subscriptions.cancel API vous permet d'annuler un achat d'abonnement. Par exemple, vous pouvez utiliser cette méthode pour refuser un ancien service. L'annulation d'un abonnement n'entraîne pas de remboursement, et l'utilisateur conserve l'accès jusqu'à la fin de sa 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: annule l'abonnement comme si les utilisateurs l'avaient annulé depuis le Play Store. Les paiements échelonnés se poursuivent pendant le reste de la période d'engagement en cours. Depuis le Play Store, les utilisateurs peuvent restaurer l'abonnement avant son expiration ou se réabonner après son expiration s'il est activé pour le forfait de base.

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

Permettre aux utilisateurs de restaurer les abonnements non expirés

Dans certains cas, il peut être utile d'autoriser les utilisateurs à restaurer les abonnements non expirés depuis le centre des abonnements Play après avoir déclenché l'annulation 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 depuis votre backend peuvent être restaurées par les utilisateurs.

Pour indiquer qu'un utilisateur peut restaurer 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_RENEWALS.

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 HTTP POST :

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_RENEWALS"
}

Permettre aux utilisateurs de se réabonner aux abonnements expirés

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

Permettre aux utilisateurs de 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 cancellationType, les utilisateurs ne peuvent pas restaurer leur abonnement depuis le centre des abonnements Play. Toutefois, les utilisateurs peuvent s'abonner à nouveau 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 annulations comme décrit dans la section Annulations.

Reporter la facturation

Vous pouvez prolonger la période de droit d'un abonnement en utilisant la subscriptionsv2.defer méthode. Lorsque vous reportez un abonnement avec des modules complémentaires, tous les éléments de l'abonnement sont reportés de la même durée. Pendant la période de report, l'utilisateur reste abonné à votre contenu, mais n'est pas facturé pour la durée supplémentaire. Lorsque vous reportez la facturation d'un abonnement, les informations sur l'é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 prolonge la prochaine date de renouvellement.
  • 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 :

  • Offrez aux utilisateurs un accès sans frais en tant qu'offre spéciale, par exemple une semaine sans frais aux abonnés existants qui remplissent une enquête de satisfaction.
  • Offrez aux clients un accès sans frais en guise de geste commercial, par exemple après une panne 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 par appel d'API. Pour différer davantage la fin du droit, appelez à nouveau l'API avant 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 la section Reporter la facturation d'un abonné dans À propos des abonnements.

Exemple :

  1. Le service de streaming FitnessGoals souhaite lancer une promotion pour encourager l'exercice régulier en février.

  2. Il 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. Il suit les résultats du défi et, le 1er mars, il appelle la méthode subscriptionsv2.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 complet supplémentaire de vidéos d'exercices réguliers sans frais, et ils racontent à tous leurs amis comment FitnessGoals les aide à rester en bonne santé.

Effectuer des remboursements et des révocations

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

Rembourser intégralement une commande par ID de commande

Avec l'orders.refund API, vous pouvez effectuer des remboursements intégraux pour 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 effectuez une révocation avec l'appel de remboursement pour l'achat d'un abonnement, l'abonnement est immédiatement résilié et déclenche une notification en temps réel pour les développeurs SUBSCRIPTION_REVOKED. Pour savoir comment gérer ces événements, consultez la section Révocations du guide de gestion du cycle de vie des abonnements.

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 tirer au sort des maillots virtuels sans frais pour tous les utilisateurs qui achètent de nouveaux kits d'équipe au cours des 24 premières heures.

  2. Football-Not-Soccer utilise l'orders.refund API 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 d'utilisation, vous devrez peut-être révoquer l'accès à l'abonnement d'un utilisateur et effectuer un remboursement. Play Billing propose des méthodes de révocation, y compris des remboursements intégraux et des remboursements au prorata via l'subscriptionsv2.revokeAPI. 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 annulations comme décrit dans Révocations.

Exemple :

  • Achat avec le jeton d'achat 1a2b3c4d5e6f7g8h9i0j
  • Application avec le nom de package com.your.app
  • Intention d'effectuer un remboursement au prorata

Requête HTTP POST :

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 le montant total de la période de facturation en cours, effectuez un remboursement total. Utilisez la purchases.subscriptionsv2.revoke fonction, et définissez "fullRefund": {} comme type de remboursement.

Exemple :

  1. Maria a un abonnement mensuel de 30 jours à renouvellement automatique au forfait 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 en indiquant qu'elle n'a jamais eu accès à l'abonnement.

  2. Le service client localise les détails de l'achat d'abonnement de Maria dans son système et déclenche un appel à purchases.subscriptionsv2.revoke en demandant un remboursement total.

  3. Le service client indique à Maria qu'elle devrait être remboursée à 100% du prix de son abonnement et qu'elle n'est plus abonnée au forfait.

Remboursements au prorata

Si vous devez résilier un abonnement et rembourser partiellement le temps de droit restant, effectuez un remboursement au prorata. Utilisez la purchases.subscriptionsv2.revoke fonction et définissez "proratedRefund": {} comme type de remboursement.

Exemple :

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

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

  3. Le service client indique à Maria qu'elle devrait être remboursée d'environ 50% du prix de son abonnement et que l'accès au service a été immédiatement résilié.