REST Resource: purchases.subscriptions

Ressource : SubscriptionPurchase

Une ressource SubscriptionPurchase indique l'état de l'achat d'abonnement d'un utilisateur.

Représentation JSON
{
  "kind": string,
  "startTimeMillis": string,
  "expiryTimeMillis": string,
  "autoResumeTimeMillis": string,
  "autoRenewing": boolean,
  "priceCurrencyCode": string,
  "priceAmountMicros": string,
  "introductoryPriceInfo": {
    object (IntroductoryPriceInfo)
  },
  "countryCode": string,
  "developerPayload": string,
  "paymentState": integer,
  "cancelReason": integer,
  "userCancellationTimeMillis": string,
  "cancelSurveyResult": {
    object (SubscriptionCancelSurveyResult)
  },
  "orderId": string,
  "linkedPurchaseToken": string,
  "purchaseType": integer,
  "priceChange": {
    object (SubscriptionPriceChange)
  },
  "profileName": string,
  "emailAddress": string,
  "givenName": string,
  "familyName": string,
  "profileId": string,
  "acknowledgementState": integer,
  "externalAccountId": string,
  "promotionType": integer,
  "promotionCode": string,
  "obfuscatedExternalAccountId": string,
  "obfuscatedExternalProfileId": string
}
Champs
kind

string

Ce type représente un objet subscriptionPurchase dans le service androidpublisher.

startTimeMillis

string (int64 format)

Heure à laquelle l'abonnement a été accordé, en millisecondes depuis l'epoch.

expiryTimeMillis

string (int64 format)

Heure à laquelle l'abonnement expirera, en millisecondes depuis l'epoch.

autoResumeTimeMillis

string (int64 format)

Heure à laquelle l'abonnement sera automatiquement réactivé, en millisecondes depuis l'epoch. Présent uniquement si l'utilisateur a demandé à suspendre l'abonnement.

autoRenewing

boolean

Indique si l'abonnement sera automatiquement renouvelé à son échéance actuelle.

priceCurrencyCode

string

Code de devise ISO 4217 pour le prix de l'abonnement. Par exemple, si le prix est exprimé en livres sterling, priceCurrencyCode est "GBP".

priceAmountMicros

string (int64 format)

Prix de l'abonnement. Pour les pays où les taxes sont exclues, le prix ne comprend pas les taxes. Pour les pays où les taxes sont incluses dans le prix, le prix inclut les taxes. Le prix est exprimé en micro-unités, où 1 000 000 de micro-unités représente une unité de la devise. Par exemple, si le prix de l'abonnement est de 1,99 €, priceAmountMicros est défini sur 1990000.

introductoryPriceInfo

object (IntroductoryPriceInfo)

Informations sur le prix découverte de l'abonnement. Cette mention n'apparaît que si l'abonnement a été souscrit à un prix de lancement.

Ce champ n'indique pas si l'abonnement est actuellement associé à un prix découverte.

countryCode

string

Code pays/région de facturation ISO 3166-1 alpha-2 de l'utilisateur au moment où l'abonnement a été accordé.

developerPayload

string

Une chaîne spécifiée par le développeur contenant des informations supplémentaires sur une commande.

paymentState

integer

État du paiement de l'abonnement. Les valeurs possibles sont : 0. Paiement en attente 1. Paiement reçu 2. Essai sans frais 3. Mise à niveau/rétrogradation différée en attente

Non présent pour les abonnements annulés ou expirés.

cancelReason

integer

La raison pour laquelle un abonnement a été résilié ou n'est pas renouvelé automatiquement. Les valeurs possibles sont : 0. L'utilisateur a résilié l'abonnement 1. L'abonnement a été résilié par le système, par exemple en raison d'un problème de facturation. L'abonnement a été remplacé par un nouvel abonnement 3. L'abonnement a été résilié par le développeur

userCancellationTimeMillis

string (int64 format)

Heure à laquelle l'abonnement a été résilié par l'utilisateur, en millisecondes depuis l'epoch. Présent uniquement si cancelReason est défini sur 0.

cancelSurveyResult

object (SubscriptionCancelSurveyResult)

Informations fournies par l'utilisateur lorsqu'il suit la procédure de résiliation de l'abonnement (enquête sur la raison de la résiliation).

orderId

string

ID de la dernière commande récurrente associée à l'achat de l'abonnement. Si l'abonnement a été résilié parce que le paiement a été refusé, il s'agit de l'ID de commande du paiement refusé.

linkedPurchaseToken

string

Jeton d'achat de l'achat d'origine si cet abonnement est l'un des suivants : 0. Se réabonner à un abonnement résilié, mais non expiré 1. Passer à un abonnement supérieur ou inférieur

Par exemple, supposons qu'un utilisateur s'inscrive et que vous receviez le jeton d'achat X. Ensuite, l'utilisateur résilie son abonnement et suit la procédure de réinscription (avant l'expiration de son abonnement), et vous recevez le jeton d'achat Y. Enfin, l'utilisateur passe à un abonnement supérieur et vous recevez le jeton d'achat Z. Si vous appelez cette API avec le jeton d'achat Z, ce champ sera défini sur Y. Si vous appelez cette API avec le jeton d'achat Y, ce champ sera défini sur X. Si vous appelez cette API avec le jeton d'achat X, ce champ ne sera pas défini.

purchaseType

integer

Type d'achat de l'abonnement. Ce champ n'est défini que si cet achat n'a pas été effectué à l'aide du flux de facturation intégré standard. Les valeurs possibles sont : 0. Test (c'est-à-dire acheté à partir d'un compte de test de licence) 1. Promotionnel (c'est-à-dire acheté à l'aide d'un code promotionnel)

priceChange

object (SubscriptionPriceChange)

Les dernières informations disponibles sur les changements de prix. Cette section ne s'affiche que lorsqu'un changement de prix est prévu pour l'abonnement, mais n'a pas encore été appliqué.

Une fois l'abonnement renouvelé au nouveau prix ou résilié, aucune information sur le changement de prix ne sera renvoyée.

profileName

string

Nom du profil utilisateur au moment de la souscription de l'abonnement. N 'est présent que pour les achats effectués avec S'abonner avec Google.

emailAddress

string

Adresse e-mail de l'utilisateur au moment de la souscription de l'abonnement. Uniquement présent pour les achats effectués avec S'abonner avec Google.

givenName

string

Prénom de l'utilisateur lors de la souscription de l'abonnement. N 'est présent que pour les achats effectués avec S'abonner avec Google.

familyName

string

Nom de famille de l'utilisateur au moment de la souscription de l'abonnement. N 'est présent que pour les achats effectués avec S'abonner avec Google.

profileId

string

ID du profil Google de l'utilisateur lors de la souscription de l'abonnement. N 'est présent que pour les achats effectués avec S'abonner avec Google.

acknowledgementState

integer

État de confirmation de réception du produit d'abonnement. Les valeurs possibles sont : 0. Non reconnue 1. Confirmé

externalAccountId

string

Identifiant du compte utilisateur dans le service tiers. Présent uniquement si l'association de compte a eu lieu dans le parcours d'achat de l'abonnement.

promotionType

integer

Type de promotion appliquée à cet achat. Ce champ n'est défini que si une promotion a été appliquée lors de l'achat de l'abonnement. Les valeurs possibles sont : 0. Code à usage unique 1. Code personnalisé

promotionCode

string

Code promotionnel appliqué à cet achat. Ce champ n'est défini que si une promotion avec code personnalisé est appliquée lors de la souscription de l'abonnement.

obfuscatedExternalAccountId

string

Version obscurcie de l'ID associé de manière unique au compte de l'utilisateur dans votre application. Présent pour les achats suivants : * Si l'association de compte a eu lieu lors du parcours d'achat de l'abonnement. * Il a été spécifié à l'aide de https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.Builder#setobfuscatedaccountid au moment de l'achat.

obfuscatedExternalProfileId

string

Version obscurcie de l'ID associé de manière unique au profil de l'utilisateur dans votre application. N'est présent que s'il a été spécifié à l'aide de https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.Builder#setobfuscatedprofileid lors de l'achat.

IntroductoryPriceInfo

Contient les informations sur le prix de lancement d'un abonnement.

Représentation JSON
{
  "introductoryPriceCurrencyCode": string,
  "introductoryPriceAmountMicros": string,
  "introductoryPricePeriod": string,
  "introductoryPriceCycles": integer
}
Champs
introductoryPriceCurrencyCode

string

Code de devise ISO 4217 pour le prix de l'abonnement de lancement. Par exemple, si le prix est exprimé en livres sterling, priceCurrencyCode est "GBP".

introductoryPriceAmountMicros

string (int64 format)

Prix découverte de l'abonnement, hors taxes. La devise est identique à priceCurrencyCode. Le prix est exprimé en micro-unités, où 1 000 000 de micro-unités représente une unité de la devise. Par exemple, si le prix de l'abonnement est de 1,99 €, priceAmountMicros est défini sur 1990000.

introductoryPricePeriod

string

Période du prix découverte, spécifiée au format ISO 8601. Les valeurs courantes sont (sans s'y limiter) "P1W" (une semaine), "P1M" (un mois), "P3M" (trois mois), "P6M" (six mois) et "P1Y" (un an).

introductoryPriceCycles

integer

Nombre de périodes de facturation pour lesquelles le prix de lancement est proposé.

SubscriptionCancelSurveyResult

Informations fournies par l'utilisateur lorsqu'il suit la procédure de résiliation de l'abonnement (enquête sur la raison de la résiliation).

Représentation JSON
{
  "cancelSurveyReason": integer,
  "userInputCancelReason": string
}
Champs
cancelSurveyReason

integer

Motif de résiliation choisi par l'utilisateur dans l'enquête. Les valeurs possibles sont : 0. Autre 1. Je n'utilise pas suffisamment ce service 2. Problèmes techniques 3. Ma décision est liée au coût de l'abonnement 4. J'ai trouvé une meilleure application

userInputCancelReason

string

Motif d'annulation de la saisie personnalisé indiqué par l'utilisateur. N'est présent que lorsque cancelReason est défini sur 0.

SubscriptionPriceChange

Contient les informations sur le changement de prix d'un abonnement, qui peuvent être utilisées pour contrôler le parcours utilisateur lors du changement de prix dans l'application. Il peut s'agir de demander une confirmation à l'utilisateur ou d'adapter l'expérience pour une conversion réussie.

Représentation JSON
{
  "newPrice": {
    object (Price)
  },
  "state": integer
}
Champs
newPrice

object (Price)

Nouveau prix de renouvellement de l'abonnement si le changement de prix est accepté par l'utilisateur.

state

integer

État actuel du changement de prix. Les valeurs possibles sont : 0. En attente : état d'un changement de prix en attente de l'accord de l'utilisateur. Dans cet état, vous pouvez éventuellement demander une confirmation à l'utilisateur à l'aide de l'API In-App. 1. Accepté : état d'un changement de prix accepté. L'abonnement sera renouvelé avec le nouveau prix, sauf s'il est résilié. La modification du prix prendra effet à une date ultérieure, lors du renouvellement de l'abonnement. Notez que la modification peut ne pas avoir lieu lors du prochain renouvellement de l'abonnement.

Méthodes

acknowledge

Confirme un achat d'abonnement.

cancel

Annule l'achat d'un abonnement par un utilisateur.

defer

Reporte l'achat d'un abonnement par un utilisateur jusqu'à une date d'expiration future spécifiée.

get
(deprecated)

Obsolète : utilisez plutôt purchases.subscriptionsv2.get.

refund
(deprecated)

Obsolète : utilisez plutôt orders.refund.

revoke
(deprecated)

Obsolète : utilisez plutôt purchases.subscriptionsv2.revoke.

Codes d'erreur

Les opérations de cette ressource renvoient les codes d'erreur HTTP suivants :

Code d'erreur Motif Description Solution
400 / 410 subscriptionExpired L'abonnement a expiré et l'opération demandée ne peut pas être effectuée. Vérifiez la date d'expiration de l'abonnement. Cette opération n'est pas autorisée sur les abonnements expirés.
400 subscriptionInvalidArgument Un argument non valide a été fourni dans la demande d'abonnement. Consultez la documentation de l'API et assurez-vous que tous les champs obligatoires sont fournis et correctement mis en forme.
400 invalidPurchaseState L'achat n'est pas dans un état valide pour effectuer l'opération demandée. Par exemple, vous pouvez essayer de confirmer un achat déjà consommé ou de résilier un abonnement inactif. Vérifiez l'état actuel de la ressource à l'aide de l'API Get correspondante avant de tenter l'opération. Assurez-vous que la ressource est dans un état approprié pour l'action.
400 invalidValue Une valeur incorrecte a été fournie dans la demande. Cette erreur est souvent renvoyée pour un jeton d'achat mal formé ou non valide. Corrigez la valeur de champ non valide dans le corps ou les paramètres de la requête en vous basant sur la documentation de référence de l'API.
400 prepaidSubscriptionNotSupported L'opération demandée n'est pas acceptée pour les abonnements prépayés. Assurez-vous que l'opération est applicable au type d'abonnement. Cette erreur est spécifique aux méthodes telles que "Annuler", "Différer", "Rembourser" ou "Révoquer".
400 productNotOwnedByUser Le jeton d'achat fourni est valide, mais l'utilisateur ne possède pas le produit actuellement. Cela peut se produire si l'achat a été remboursé, révoqué ou a expiré avant l'accusé de réception. Vérifiez l'état actuel de la ressource à l'aide de l'API Get correspondante avant de tenter l'opération. Assurez-vous que la ressource est dans un état approprié pour l'action.
400 purchaseTokenMismatch Le jeton d'achat fourni ne correspond pas à l'achat, au nom du package, à l'ID d'abonnement ni à l'ID du produit. Vérifiez que toutes les informations de la demande sont correctes et correspondent les unes aux autres.
400 required Un champ ou un paramètre obligatoire est manquant dans la requête. Consultez la documentation de l'API pour vous assurer d'inclure tous les champs et paramètres obligatoires.
400 unsupportedIabType L'opération n'est pas compatible avec le type de facturation via l'application indiqué. Assurez-vous que la méthode d'API est compatible avec le type d'élément géré.
403 userInsufficientPermission L'utilisateur ne dispose pas des autorisations nécessaires pour effectuer l'opération demandée. Assurez-vous que l'utilisateur authentifié dispose des autorisations nécessaires dans la Google Play Console. Pour en savoir plus, consultez Utiliser un compte de service.
404 notFound La ressource demandée est introuvable. Vérifiez que les identifiants (par exemple, le jeton d'achat, le nom du package, l'ID du produit ou l'ID de l'abonnement) sont corrects.
409 concurrentUpdate Une tentative de mise à jour d'un objet en cours de mise à jour simultanée a été effectuée. Réessayez la requête avec un intervalle exponentiel entre les tentatives. Évitez de modifier simultanément la même ressource.
410 purchaseTokenNoLongerValid Le jeton d'achat n'est plus valide de manière permanente, car le compte utilisateur associé a été supprimé ou l'enregistrement de l'achat n'existe plus. Cessez d'utiliser ce jeton d'achat.
410 subscriptionNoLongerAvailable L'achat d'abonnement n'est plus disponible pour la requête, car il a expiré depuis trop longtemps. Cette erreur indique que l'abonnement a expiré depuis plus de 60 jours. Vous ne devez plus interroger ces abonnements.
5xx Generic error Erreur générique sur le serveur Google Play. Réessayez d'envoyer votre demande.

Si le problème persiste, contactez votre responsable de compte Google Play ou envoyez une demande d'assistance. Consultez le tableau de bord d'état Play pour connaître les éventuelles interruptions de service.