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 peut avoir besoin d'émettre des remboursements totaux ou partiels pour les utilisateurs, ou vous pouvez avoir besoin de 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 depuis 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 des abonnements.

Annulations initiées par l'utilisateur

Les utilisateurs peuvent résilier un abonnement Google Play à tout moment depuis le Play Store. Le cas échéant, vous devez également permettre aux utilisateurs de résilier leurs abonnements 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 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 résiliations depuis 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 l'utilisateur l'avait résilié depuis le Play Store. Les paiements échelonnés continueront d'être effectués 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 autre paiement. Les utilisateurs ne peuvent pas restaurer l'abonnement ni s'y réabonner depuis le Play Store. Toutefois, vous pouvez leur permettre de se réabonner 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 d'abonnements Play après que vous avez déclenché la résiliation en tant que développeur. Par exemple, vous pouvez fournir un parcours de résiliation personnalisé dans l'application. En fonction de votre logique métier, vous pouvez décider quelles résiliations déclenchées depuis votre backend peuvent être restaurées par les utilisateurs.

Pour indiquer qu'un utilisateur peut restaurer la résiliation, 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 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_RENEWAL"
}

Permettre aux utilisateurs de se réabonner à des 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 résilier l'abonnement en définissant le paramètre cancellationType sur la valeur USER_REQUESTED_STOP_RENEWAL.

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, les utilisateurs ne peuvent pas restaurer leur abonnement depuis le centre d'abonnement 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

Vous pouvez prolonger la période d'accès d'un abonnement à l'aide de la méthode subscriptionsv2.defer. 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 le temps 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 repousse 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 :

  • Proposer aux utilisateurs un accès sans frais en tant qu'offre spéciale, par exemple en leur offrant une semaine sans frais s'ils remplissent un questionnaire de commentaires
  • Proposer un accès sans frais aux clients comme mesure de service client, 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 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 d'un abonné dans À propos des abonnements.

Exemple :

  1. Le service de streaming FitnessGoals souhaite lancer une promotion pour encourager l'exercice physique régulier 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. Ils suivent les résultats du défi et, le 1er mars, ils appellent 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. Ils racontent à tous leurs amis comment FitnessGoals les aide à rester en forme !

Effectuer des remboursements et des révocations

Il existe de nombreuses situations dans lesquelles vous pouvez souhaiter rembourser un abonnement ou un achat ponctuel, ou révoquer l'accès à ceux-ci.

Rembourser intégralement une commande par ID de commande

L'API orders.refund vous permet d'émettre des remboursements complets 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 émettez 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. 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 d'offrir des maillots virtuels sans frais à tous les utilisateurs qui achètent de nouveaux équipements d'équipe dans les premières 24 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 d'utilisation, vous devrez peut-être révoquer l'accès à l'abonnement d'un utilisateur et lui fournir un remboursement. Play Billing propose des méthodes de révocation, y compris des remboursements complets et au prorata, via l'API subscriptionsv2.revoke. Ce point de terminaison vous permet de 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 :

  • Achat avec jeton d'achat 1a2b3c4d5e6f7g8h9i0j
  • Application avec le nom de package com.your.app
  • Intention d'émettre 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 intégral. Utilisez la fonction purchases.subscriptionsv2.revoke et définissez "fullRefund": {} comme type de remboursement.

Exemple :

  1. Maria dispose d'un abonnement mensuel de 30 jours à renouvellement automatique au forfait SuperMovies streaming. 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 trouve les détails de l'abonnement de Maria dans son système et déclenche un appel à purchases.subscriptionsv2.revoke pour demander un remboursement intégral.

  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 la durée restante du droit d'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 mensuel de 30 jours à renouvellement automatique au forfait SuperMovies streaming. Elle utilise le service avec plaisir depuis un certain temps. Le 15e jour de son cycle de facturation, Maria contacte le service client pour lui indiquer qu'elle déménage à l'étranger et qu'elle ne pourra plus utiliser le service à partir du lendemain.

  2. Le service client trouve 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 indique à Maria qu'elle devrait se faire rembourser environ 50 % du prix de son abonnement et que l'accès au service a été résilié immédiatement.