API Voided Purchases

L'API Google Play Voided Purchases fournit la liste des commandes associées à des achats qu'un utilisateur a annulés. Vous pouvez utiliser les informations de cette liste pour mettre en œuvre un système de révocation qui empêche l'utilisateur d'accéder aux produits de ces commandes.

Cette API s'applique aux commandes uniques via une application et aux abonnements via une application.

Un achat peut être annulé pour les raisons suivantes :

  • L'utilisateur demande le remboursement de sa commande.
  • L'utilisateur annule sa commande.
  • Une commande est rejetée.
  • Le développeur annule ou rembourse la commande.

  • Google annule ou rembourse la commande.

En utilisant cette API, vous contribuez à créer une expérience plus équilibrée et équitable pour tous les utilisateurs de votre application, en particulier s'il s'agit d'un jeu.

Obtenir l'accès

Pour utiliser l'API Voided Purchases, vous devez être autorisé à afficher les informations financières. Vous fournissez une autorisation à l'aide d'un client OAuth ou d'un compte de service. Si vous utilisez un compte de service, activez l'autorisation "Afficher les rapports financiers" dans ce compte.

Pour savoir comment obtenir un accès autorisé aux API Google Play Developer, consultez les guides suivants:

Afficher les achats annulés

Utilisez la méthode GET pour demander la liste des achats annulés. Dans votre requête, incluez le nom complet du package de votre application, par exemple com.google.android.apps.maps, ainsi que le jeton d'autorisation que vous avez reçu lors de l'accès à l'API.

GET https://www.googleapis.com/androidpublisher/v3/applications/
your_package_name/purchases/voidedpurchases?access_token=your_auth_token

Vous pouvez également inclure les paramètres suivants dans votre requête, chacun d'eux étant facultatif:

heure de début

Durée, en millisecondes écoulées depuis l'époque Unix, du plus ancien achat annulé que vous souhaitez voir dans la réponse. Par défaut, startTime est défini sur 30 jours avant.

L'API ne peut afficher que les achats annulés qui ont eu lieu au cours des 30 derniers jours. Les anciens achats annulés ne sont pas inclus dans la réponse, quelle que soit la valeur que vous avez indiquée pour startTime.

Heure de fin

Durée, en millisecondes écoulées depuis l'époque Unix, du dernier achat annulé que vous souhaitez afficher dans la réponse. Par défaut, endTime est défini sur l'heure actuelle.

Résultats max
Nombre maximal d'achats annulés qui s'affiche dans chaque réponse. Par défaut, cette valeur est de 1 000. Notez que la valeur maximale de ce paramètre est également de 1 000.
jeton
Jeton de continuité d'une réponse précédente, vous permettant d'afficher plus de résultats.
type

Type d'achat annulé qui apparaît dans chaque réponse. S'il est défini sur 0, seuls les achats via l'application annulés seront renvoyés. Si la valeur est définie sur 1, les achats d'applications annulés et les abonnements annulés sont renvoyés. La valeur par défaut est 0.

La réponse est une chaîne JSON contenant une liste d'achats annulés. Si le nombre de résultats dépasse le nombre spécifié dans le paramètre de requête maxResults, la réponse inclut une valeur nextPageToken que vous pouvez transmettre à une requête ultérieure pour afficher plus de résultats. Le premier résultat de la liste indique l'ancien achat annulé.

{
  "tokenPagination": {
    "nextPageToken": "next_page_token"
  },
  "voidedPurchases": [
    {
      "kind": "androidpublisher#voidedPurchase",
      "purchaseToken": "some_purchase_token",
      "purchaseTimeMillis": "1468825200000",
      "voidedTimeMillis": "1469430000000",
      "orderId": "some_order_id",
      "voidedSource": "0",
      "voidedReason": "4"
    },
    {
      "kind": "androidpublisher#voidedPurchase",
      "purchaseToken": "some_other_purchase_token",
      "purchaseTimeMillis": "1468825100000",
      "voidedTimeMillis": "1470034800000",
      "orderId": "some_other_order_id",
      "voidedSource": "2",
      "voidedReason": "5"
    },
  ]
}

Quotas

L'API Voided Purchases définit les quotas suivants pour chaque package:

  • 6 000 requêtes par jour. (La journée commence et se termine à minuit, heure du Pacifique.)
  • 30 requêtes au cours d'une période de 30 secondes.

Consignes pour les demandes initiales

Lors de votre requête API initiale, vous souhaiterez peut-être récupérer toutes les données disponibles pour votre application. Bien que ce processus soit peu probable, ce processus pourrait épuiser votre quota quotidien. Pour obtenir des données d'achat annulées de manière plus sûre et plus cohérente, suivez ces bonnes pratiques:

  • Utilisez la valeur par défaut pour le paramètre maxResults. Ainsi, si vous utilisez l'intégralité de votre quota de requêtes pendant une journée, vous pouvez récupérer les détails de 6 000 000 achats annulés.
  • Si une réponse inclut une valeur pour nextPageToken, attribuez cette valeur au paramètre token lors de votre prochaine requête.

Bonnes pratiques

Lorsque vous déterminez comment utiliser cette API dans votre application, n'oubliez pas qu'il existe de nombreuses raisons d'annuler un achat et qu'il n'existe pas de solution unique qui fonctionne dans tous les cas. Vous devez garder à l'esprit vos utilisateurs lors de la conception de vos stratégies et stratégies de révocation. Pour cela, vous pouvez appliquer les bonnes pratiques suivantes:

  • Utilisez cette API comme l'un des nombreux éléments d'une stratégie complète de gestion des comportements indésirables. La révocation de l'accès aux produits intégrés est généralement plus efficace lorsqu'elle est associée à une application dont le prix des achats via l'application est raisonnable, à une conception qui décourage les comportements indésirables, à une base d'utilisateurs forte dont la culture rejette ces comportements et à des canaux d'assistance réactifs et efficaces.
  • Administrez votre règlement de révocation de manière uniforme pour garantir l'équité pour tous les utilisateurs.
  • Envisagez de créer une règle par étapes pour résoudre les comportements indésirables. Par exemple, commencez par les avertissements dans l'application pour les premières infractions, puis faites remonter vos réponses à mesure que le comportement indésirable d'un utilisateur se poursuit. En dernier recours, vous pouvez empêcher un utilisateur d'interagir avec votre application.
  • Lorsque vous introduisez une règle de révocation et que vous la mettez à jour à chaque fois, utilisez les canaux de communication de votre application pour informer vos utilisateurs des modifications. Laissez à vos utilisateurs le temps de comprendre clairement ces modifications avant qu'elles ne prennent effet dans votre application.
  • Soyez transparent vis-à-vis de vos utilisateurs et informez-les chaque fois que vous effectuez une action (par exemple, révoquer leur accès à un produit intégré). Idéalement, les utilisateurs doivent pouvoir contester vos décisions, qui doivent être traitées de manière équitable.
  • Surveillez les formulaires de commentaires et les forums de la communauté pour comprendre ce qui incite les utilisateurs à se comporter de manière indésirable et leur comportement. Ces informations constituent une première ligne de défense.