- Ressource : SubscriptionPurchase
- IntroductoryPriceInfo
- SubscriptionCancelSurveyResult
- SubscriptionPriceChange
- Méthodes
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 ( |
| Champs | |
|---|---|
kind |
Ce type représente un objet subscriptionPurchase dans le service androidpublisher. |
startTimeMillis |
Heure à laquelle l'abonnement a été accordé, en millisecondes depuis l'epoch. |
expiryTimeMillis |
Heure à laquelle l'abonnement expirera, en millisecondes depuis l'epoch. |
autoResumeTimeMillis |
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 |
Indique si l'abonnement sera automatiquement renouvelé à son échéance actuelle. |
priceCurrencyCode |
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 |
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 |
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 |
Code pays/région de facturation ISO 3166-1 alpha-2 de l'utilisateur au moment où l'abonnement a été accordé. |
developerPayload |
Une chaîne spécifiée par le développeur contenant des informations supplémentaires sur une commande. |
paymentState |
É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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
État de confirmation de réception du produit d'abonnement. Les valeurs possibles sont : 0. Non reconnue 1. Confirmé |
externalAccountId |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 ( |
| Champs | |
|---|---|
newPrice |
Nouveau prix de renouvellement de l'abonnement si le changement de prix est accepté par l'utilisateur. |
state |
É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 |
|
|---|---|
|
Confirme un achat d'abonnement. |
|
Annule l'achat d'un abonnement par un utilisateur. |
|
Reporte l'achat d'un abonnement par un utilisateur jusqu'à une date d'expiration future spécifiée. |
(deprecated) |
Obsolète : utilisez plutôt purchases.subscriptionsv2.get. |
(deprecated) |
Obsolète : utilisez plutôt orders.refund. |
(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. |