REST Resource: purchases.subscriptionsv2

Ressource : SubscriptionPurchaseV2

Indique l'état de l'achat d'abonnement d'un utilisateur.

Représentation JSON
{
  "kind": string,
  "regionCode": string,
  "lineItems": [
    {
      object (SubscriptionPurchaseLineItem)
    }
  ],
  "startTime": string,
  "subscriptionState": enum (SubscriptionState),
  "latestOrderId": string,
  "linkedPurchaseToken": string,
  "pausedStateContext": {
    object (PausedStateContext)
  },
  "canceledStateContext": {
    object (CanceledStateContext)
  },
  "testPurchase": {
    object (TestPurchase)
  },
  "acknowledgementState": enum (AcknowledgementState),
  "externalAccountIdentifiers": {
    object (ExternalAccountIdentifiers)
  },
  "subscribeWithGoogleInfo": {
    object (SubscribeWithGoogleInfo)
  },
  "etag": string,
  "outOfAppPurchaseContext": {
    object (OutOfAppPurchaseContext)
  },
  "onHoldStateContext": {
    object (OnHoldStateContext)
  },
  "inGracePeriodStateContext": {
    object (InGracePeriodStateContext)
  }
}
Champs
kind

string

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

regionCode

string

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

lineItems[]

object (SubscriptionPurchaseLineItem)

Informations au niveau des articles pour un achat d'abonnement. Les articles d'un même achat doivent tous être associés à un AutoRenewingPlan ou à un PrepaidPlan.

startTime

string (Timestamp format)

Heure à laquelle l'abonnement a été accordé. Non défini pour les abonnements en attente (l'abonnement a été créé, mais le paiement est en attente lors de l'inscription).

Utilise la norme RFC 3339, où la sortie générée utilise toujours le format UTC (indiqué par "Z" pour le temps universel coordonné) avec des secondes fractionnaires de 0, 3, 6 ou 9 chiffres décimaux. Des décalages horaires autres que "Z" (UTC) sont également acceptés. Exemples : "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" ou "2014-10-02T15:01:23+05:30".

subscriptionState

enum (SubscriptionState)

État actuel de l'abonnement.

latestOrderId
(deprecated)

string

Obsolète : utilisez plutôt lineItems.latest_successful_order_id. ID de la dernière commande associée à l'achat de l'abonnement. Pour un abonnement à renouvellement automatique, il s'agit de l'ID de commande de l'inscription s'il n'a pas encore été renouvelé, ou de l'ID de la dernière commande récurrente (commande réussie, en attente ou refusée). Pour un abonnement prépayé, il s'agit de l'ID de commande associé au jeton d'achat demandé.

linkedPurchaseToken

string

Jeton d'achat de l'ancien abonnement si celui-ci correspond à l'un des cas suivants : * Réinscription à un abonnement résilié, mais non expiré * Passage à un abonnement de niveau supérieur ou inférieur * Passer d'un abonnement prépayé à un abonnement à renouvellement automatique. * Passer d'un abonnement à renouvellement automatique à un forfait prépayé * Créditer un abonnement prépayé.

pausedStateContext

object (PausedStateContext)

Contexte supplémentaire concernant les abonnements suspendus. Présent uniquement si l'abonnement est actuellement à l'état SUBSCRIPTION_STATE_PAUSED.

canceledStateContext

object (CanceledStateContext)

Contexte supplémentaire concernant les abonnements résiliés. Présent uniquement si l'abonnement a actuellement l'état SUBSCRIPTION_STATE_CANCELED ou SUBSCRIPTION_STATE_EXPIRED.

testPurchase

object (TestPurchase)

Présent uniquement si cet achat d'abonnement est un achat test.

acknowledgementState

enum (AcknowledgementState)

État de confirmation de l'abonnement.

externalAccountIdentifiers

object (ExternalAccountIdentifiers)

Identifiant du compte utilisateur dans le service tiers.

subscribeWithGoogleInfo

object (SubscribeWithGoogleInfo)

Profil utilisateur associé aux achats effectués avec S'abonner avec Google.

etag

string

Tag d'entité représentant l'état actuel de l'abonnement. Le développeur fournira cet etag pour les actions d'abonnement. Cet etag est toujours présent pour les abonnements à renouvellement automatique et prépayés.

outOfAppPurchaseContext

object (OutOfAppPurchaseContext)

Contexte supplémentaire pour les achats hors application. Ces informations ne sont disponibles que pour les achats de réabonnement (abonnements souscrits après l'expiration de l'abonnement précédent au même produit) effectués via le centre d'abonnement Google Play. Ce champ sera supprimé une fois que vous aurez confirmé l'abonnement.

onHoldStateContext

object (OnHoldStateContext)

Facultatif. Informations supplémentaires sur les abonnements à l'état "EN ATTENTE". Présent uniquement si l'abonnement est actuellement à l'état SUBSCRIPTION_STATE_ON_HOLD.

inGracePeriodStateContext

object (InGracePeriodStateContext)

Facultatif. Contexte supplémentaire concernant les abonnements à l'état IN_GRACE_PERIOD. Présent uniquement si l'abonnement est actuellement dans l'état SUBSCRIPTION_STATE_IN_GRACE_PERIOD.

SubscriptionState

États potentiels d'un abonnement (actif ou résilié, par exemple). Les éléments d'un achat d'abonnement peuvent être des forfaits à renouvellement automatique ou des forfaits prépayés.

Enums
SUBSCRIPTION_STATE_UNSPECIFIED État d'abonnement non spécifié.
SUBSCRIPTION_STATE_PENDING L'abonnement a été créé, mais le paiement est en attente lors de l'inscription. Dans cet état, tous les articles sont en attente de paiement.
SUBSCRIPTION_STATE_ACTIVE L'abonnement est actif. - (1) Si l'abonnement est un forfait à renouvellement automatique, au moins un élément est défini sur autoRenewEnabled et n'a pas expiré. - (2) Si l'abonnement est un forfait prépayé, au moins un élément n'a pas expiré.
SUBSCRIPTION_STATE_PAUSED L'abonnement est suspendu. L'état n'est disponible que lorsque l'abonnement est un forfait à renouvellement automatique. Dans cet état, tous les éléments sont mis en veille.
SUBSCRIPTION_STATE_IN_GRACE_PERIOD L'abonnement est en période de grâce. L'état n'est disponible que lorsque l'abonnement est un forfait à renouvellement automatique. Dans cet état, tous les éléments sont en période de grâce.
SUBSCRIPTION_STATE_ON_HOLD L'abonnement est suspendu. L'état n'est disponible que lorsque l'abonnement est un forfait à renouvellement automatique. Dans cet état, tous les éléments sont en attente.
SUBSCRIPTION_STATE_CANCELED L'abonnement a été résilié, mais n'a pas encore expiré. L'état n'est disponible que lorsque l'abonnement est un forfait à renouvellement automatique. La valeur de autoRenewEnabled est définie sur "false" pour tous les éléments.
SUBSCRIPTION_STATE_EXPIRED L'abonnement a expiré. Tous les éléments ont une valeur "expiryTime" dans le passé.
SUBSCRIPTION_STATE_PENDING_PURCHASE_CANCELED La transaction en attente pour l'abonnement a été annulée. Si cet achat en attente concernait un abonnement existant, utilisez linkedPurchaseToken pour obtenir l'état actuel de cet abonnement.

PausedStateContext

Informations spécifiques à un abonnement mis en veille.

Représentation JSON
{
  "autoResumeTime": string
}
Champs
autoResumeTime

string (Timestamp format)

Heure à laquelle l'abonnement sera automatiquement réactivé.

Utilise la norme RFC 3339, où la sortie générée utilise toujours le format UTC (indiqué par "Z" pour le temps universel coordonné) avec des secondes fractionnaires de 0, 3, 6 ou 9 chiffres décimaux. Des décalages horaires autres que "Z" (UTC) sont également acceptés. Exemples : "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" ou "2014-10-02T15:01:23+05:30".

CanceledStateContext

Informations spécifiques à un abonnement à l'état SUBSCRIPTION_STATE_CANCELED ou SUBSCRIPTION_STATE_EXPIRED.

Représentation JSON
{

  // Union field cancellation_reason can be only one of the following:
  "userInitiatedCancellation": {
    object (UserInitiatedCancellation)
  },
  "systemInitiatedCancellation": {
    object (SystemInitiatedCancellation)
  },
  "developerInitiatedCancellation": {
    object (DeveloperInitiatedCancellation)
  },
  "replacementCancellation": {
    object (ReplacementCancellation)
  }
  // End of list of possible types for union field cancellation_reason.
}
Champs
Champ d'union cancellation_reason. Raison pour laquelle un abonnement a été résilié. cancellation_reason ne peut être qu'un des éléments suivants :
userInitiatedCancellation

object (UserInitiatedCancellation)

L'abonnement a été résilié par l'utilisateur.

systemInitiatedCancellation

object (SystemInitiatedCancellation)

L'abonnement a été résilié par le système, par exemple en raison d'un problème de facturation.

developerInitiatedCancellation

object (DeveloperInitiatedCancellation)

L'abonnement a été résilié par le développeur.

replacementCancellation

object (ReplacementCancellation)

L'abonnement a été remplacé par un nouvel abonnement.

UserInitiatedCancellation

Informations spécifiques aux résiliations initiées par les utilisateurs.

Représentation JSON
{
  "cancelSurveyResult": {
    object (CancelSurveyResult)
  },
  "cancelTime": string
}
Champs
cancelSurveyResult

object (CancelSurveyResult)

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

cancelTime

string (Timestamp format)

Heure à laquelle l'abonnement a été résilié par l'utilisateur. Il est possible que l'utilisateur ait encore accès à l'abonnement après cette date. Utilisez lineItems.expiry_time pour déterminer si un utilisateur a toujours accès.

Utilise la norme RFC 3339, où la sortie générée utilise toujours le format UTC (indiqué par "Z" pour le temps universel coordonné) avec des secondes fractionnaires de 0, 3, 6 ou 9 chiffres décimaux. Des décalages horaires autres que "Z" (UTC) sont également acceptés. Exemples : "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" ou "2014-10-02T15:01:23+05:30".

CancelSurveyResult

Résultat de l'enquête sur la résiliation lorsque l'abonnement a été résilié par l'utilisateur.

Représentation JSON
{
  "reason": enum (CancelSurveyReason),
  "reasonUserInput": string
}
Champs
reason

enum (CancelSurveyReason)

Raison sélectionnée par l'utilisateur dans l'enquête sur les annulations.

reasonUserInput

string

Défini uniquement pour CANCEL_SURVEY_REASON_OTHERS. Il s'agit de la réponse au format libre de l'utilisateur à l'enquête.

CancelSurveyReason

Raison sélectionnée par l'utilisateur dans l'enquête sur les annulations.

Enums
CANCEL_SURVEY_REASON_UNSPECIFIED Motif de résiliation de l'enquête non spécifié.
CANCEL_SURVEY_REASON_NOT_ENOUGH_USAGE L'abonnement n'est pas assez utilisé.
CANCEL_SURVEY_REASON_TECHNICAL_ISSUES Problèmes techniques lors de l'utilisation de l'application
CANCEL_SURVEY_REASON_FOUND_BETTER_APP L'utilisateur a trouvé une meilleure application.
CANCEL_SURVEY_REASON_OTHERS Autre motif.

SystemInitiatedCancellation

Ce type ne comporte aucun champ.

Informations spécifiques aux résiliations initiées par le système Google.

DeveloperInitiatedCancellation

Ce type ne comporte aucun champ.

Informations spécifiques aux résiliations initiées par les développeurs.

ReplacementCancellation

Ce type ne comporte aucun champ.

Informations spécifiques aux résiliations causées par le remplacement d'un abonnement.

TestPurchase

Ce type ne comporte aucun champ.

Indique si cet achat d'abonnement est un achat test.

AcknowledgementState

États de confirmation possibles pour un abonnement.

Enums
ACKNOWLEDGEMENT_STATE_UNSPECIFIED État d'accusé de réception non spécifié.
ACKNOWLEDGEMENT_STATE_PENDING L'abonnement n'a pas encore été confirmé.
ACKNOWLEDGEMENT_STATE_ACKNOWLEDGED L'abonnement est confirmé.

ExternalAccountIdentifiers

Identifiant du compte utilisateur dans le service tiers.

Représentation JSON
{
  "externalAccountId": string,
  "obfuscatedExternalAccountId": string,
  "obfuscatedExternalProfileId": string
}
Champs
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.

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 lors 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.

SubscribeWithGoogleInfo

Informations associées aux achats effectués avec S'abonner avec Google.

Représentation JSON
{
  "profileId": string,
  "profileName": string,
  "emailAddress": string,
  "givenName": string,
  "familyName": string
}
Champs
profileId

string

ID du profil Google de l'utilisateur lors de la souscription de l'abonnement.

profileName

string

Nom du profil utilisateur au moment de la souscription de l'abonnement.

emailAddress

string

Adresse e-mail de l'utilisateur au moment de la souscription de l'abonnement.

givenName

string

Prénom de l'utilisateur lors de la souscription de l'abonnement.

familyName

string

Nom de famille de l'utilisateur au moment de la souscription de l'abonnement.

SubscriptionPurchaseLineItem

Informations au niveau des articles pour un achat d'abonnement.

Représentation JSON
{
  "productId": string,
  "expiryTime": string,
  "latestSuccessfulOrderId": string,

  // Union field plan_type can be only one of the following:
  "autoRenewingPlan": {
    object (AutoRenewingPlan)
  },
  "prepaidPlan": {
    object (PrepaidPlan)
  }
  // End of list of possible types for union field plan_type.
  "offerDetails": {
    object (OfferDetails)
  },

  // Union field deferred_item_change can be only one of the following:
  "deferredItemReplacement": {
    object (DeferredItemReplacement)
  },
  "deferredItemRemoval": {
    object (DeferredItemRemoval)
  }
  // End of list of possible types for union field deferred_item_change.
  "signupPromotion": {
    object (SignupPromotion)
  },
  "itemReplacement": {
    object (ItemReplacement)
  },
  "offerPhase": {
    object (OfferPhase)
  }
}
Champs
productId

string

ID du produit acheté (par exemple, "mensuel001").

expiryTime

string (Timestamp format)

Heure à laquelle l'abonnement a expiré ou expirera, sauf si l'accès est prolongé (par exemple, en cas de renouvellement).

Utilise la norme RFC 3339, où la sortie générée utilise toujours le format UTC (indiqué par "Z" pour le temps universel coordonné) avec des secondes fractionnaires de 0, 3, 6 ou 9 chiffres décimaux. Des décalages horaires autres que "Z" (UTC) sont également acceptés. Exemples : "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" ou "2014-10-02T15:01:23+05:30".

latestSuccessfulOrderId

string

ID de la dernière commande réussie associée à cet article. Absent si l'utilisateur ne possède pas encore l'élément (par exemple, l'élément remplacé par l'élément différé).

Champ d'union plan_type. Type d'abonnement. plan_type ne peut être qu'un des éléments suivants :
autoRenewingPlan

object (AutoRenewingPlan)

L'article est renouvelé automatiquement.

prepaidPlan

object (PrepaidPlan)

L'article est prépayé.

offerDetails

object (OfferDetails)

Détails de l'offre pour cet article.

Champ d'union deferred_item_change. Ce champ s'affiche lorsqu'un élément a une modification différée. Vous pouvez la supprimer ou la remplacer. deferred_item_change ne peut être qu'un des éléments suivants :
deferredItemReplacement

object (DeferredItemReplacement)

Informations sur le remplacement différé d'un article.

deferredItemRemoval

object (DeferredItemRemoval)

Informations sur la suppression différée d'éléments.

signupPromotion

object (SignupPromotion)

Détails de la promotion concernant cet article. Défini uniquement si une promotion a été appliquée lors de l'inscription.

itemReplacement

object (ItemReplacement)

Détails de l'élément remplacé. Ce champ n'est renseigné que si cet article a remplacé un autre article dans un abonnement précédent. Il n'est disponible que 60 jours après la date d'achat.

offerPhase

object (OfferPhase)

Détails de la phase d'offre actuelle pour cet article.

AutoRenewingPlan

Informations liées à un forfait à renouvellement automatique.

Représentation JSON
{
  "autoRenewEnabled": boolean,
  "recurringPrice": {
    object (Money)
  },
  "priceChangeDetails": {
    object (SubscriptionItemPriceChangeDetails)
  },
  "installmentDetails": {
    object (InstallmentPlan)
  },
  "priceStepUpConsentDetails": {
    object (PriceStepUpConsentDetails)
  }
}
Champs
autoRenewEnabled

boolean

Si l'abonnement est actuellement configuré pour le renouvellement automatique (par exemple, si l'utilisateur n'a pas résilié l'abonnement)

recurringPrice

object (Money)

Prix récurrent actuel du forfait à renouvellement automatique. Notez que le prix ne tient pas compte des remises et n'inclut pas les taxes. Si vous avez besoin des détails de la transaction, veuillez appeler l'API orders.get pour obtenir des prix hors taxes.

priceChangeDetails

object (SubscriptionItemPriceChangeDetails)

Informations sur la dernière modification du prix de l'article depuis l'inscription à l'abonnement.

installmentDetails

object (InstallmentPlan)

Informations sur l'engagement et l'état du forfait à renouvellement automatique avec paiement échelonné.

SubscriptionItemPriceChangeDetails

Informations sur la modification du prix d'un élément d'abonnement.

Représentation JSON
{
  "newPrice": {
    object (Money)
  },
  "priceChangeMode": enum (PriceChangeMode),
  "priceChangeState": enum (PriceChangeState),
  "expectedNewPriceChargeTime": string
}
Champs
newPrice

object (Money)

Nouveau prix récurrent de l'article d'abonnement.

priceChangeMode

enum (PriceChangeMode)

Le mode de modification du prix indique comment le prix de l'article d'abonnement change.

priceChangeState

enum (PriceChangeState)

Indiquez la période de modification des prix en cours.

expectedNewPriceChargeTime

string (Timestamp format)

Heure de renouvellement à laquelle le changement de prix prendra effet pour l'utilisateur. Cette date est susceptible d'être modifiée(à une date ultérieure) en cas de décalage de la date de renouvellement, par exemple en cas de suspension. Ce champ n'est renseigné que si le changement de prix n'a pas pris effet.

Utilise la norme RFC 3339, où la sortie générée utilise toujours le format UTC (indiqué par "Z" pour le temps universel coordonné) avec des secondes fractionnaires de 0, 3, 6 ou 9 chiffres décimaux. Des décalages horaires autres que "Z" (UTC) sont également acceptés. Exemples : "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" ou "2014-10-02T15:01:23+05:30".

PriceChangeMode

Mode de modification du prix.

Enums
PRICE_CHANGE_MODE_UNSPECIFIED Le mode de modification du prix n'est pas spécifié. Cette valeur ne doit jamais être définie.
PRICE_DECREASE Si le prix de l'abonnement diminue.
PRICE_INCREASE Si le prix de l'abonnement augmente et que l'utilisateur doit l'accepter.
OPT_OUT_PRICE_INCREASE Si le prix de l'abonnement augmente avec le mode d'opposition expresse.

PriceChangeState

État de la modification du prix.

Enums
PRICE_CHANGE_STATE_UNSPECIFIED État de la modification du prix non spécifié. Cette valeur ne doit pas être utilisée.
OUTSTANDING En attente de l'accord de l'utilisateur pour le changement de prix.
CONFIRMED Le changement de prix est confirmé pour l'utilisateur.
APPLIED Le changement de prix est appliqué, c'est-à-dire que le nouvel abonnement est facturé à l'utilisateur.
CANCELED La modification du prix a été annulée.

InstallmentPlan

Informations sur un paiement échelonné.

Représentation JSON
{
  "initialCommittedPaymentsCount": integer,
  "subsequentCommittedPaymentsCount": integer,
  "remainingCommittedPaymentsCount": integer,
  "pendingCancellation": {
    object (PendingCancellation)
  }
}
Champs
initialCommittedPaymentsCount

integer

Nombre total de paiements auxquels l'utilisateur s'est initialement engagé.

subsequentCommittedPaymentsCount

integer

Nombre total de paiements auxquels l'utilisateur s'engage après chaque période d'engagement. Si la valeur est vide, le forfait échelonné reviendra à un abonnement à renouvellement automatique normal après l'engagement initial.

remainingCommittedPaymentsCount

integer

Nombre total de paiements engagés restant à payer pour ce cycle de renouvellement.

pendingCancellation

object (PendingCancellation)

Si ce plan de versements est indiqué, cela signifie qu'il est en attente d'annulation. La résiliation ne sera effective qu'une fois que l'utilisateur aura effectué tous les paiements dus.

PendingCancellation

Ce type ne comporte aucun champ.

Indique si une résiliation est en attente pour le plan de paiement échelonné virtuel. La résiliation ne sera effective qu'une fois que l'utilisateur aura effectué tous les paiements dus.

PriceStepUpConsentDetails

Informations liées à une augmentation progressive du prix nécessitant le consentement utilisateur.

Représentation JSON
{
  "state": enum (ConsentState),
  "consentDeadlineTime": string,
  "newPrice": {
    object (Money)
  }
}
Champs
state

enum (ConsentState)

Uniquement en sortie. État du consentement pour l'augmentation progressive du prix.

consentDeadlineTime

string (Timestamp format)

Date limite à laquelle l'utilisateur doit donner son consentement. Si vous ne donnez pas votre consentement d'ici là, l'abonnement sera résilié.

Utilise la norme RFC 3339, où la sortie générée utilise toujours le format UTC (indiqué par "Z" pour le temps universel coordonné) avec des secondes fractionnaires de 0, 3, 6 ou 9 chiffres décimaux. Des décalages horaires autres que "Z" (UTC) sont également acceptés. Exemples : "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" ou "2014-10-02T15:01:23+05:30".

newPrice

object (Money)

Nouveau prix nécessitant le consentement utilisateur.

ConsentState

État du consentement pour l'augmentation progressive du prix.

Enums
CONSENT_STATE_UNSPECIFIED État du consentement non spécifié.
PENDING L'utilisateur n'a pas encore donné son consentement.
CONFIRMED L'utilisateur a donné son accord et le nouveau prix est en attente d'application.
COMPLETED L'utilisateur a donné son accord et le nouveau prix est entré en vigueur.

PrepaidPlan

Informations liées à un forfait prépayé.

Représentation JSON
{
  "allowExtendAfterTime": string
}
Champs
allowExtendAfterTime

string (Timestamp format)

Si elle est présente, il s'agit de l'heure après laquelle les achats de crédit sont autorisés pour le forfait prépayé. Ne s'affiche pas pour les forfaits prépayés expirés.

Utilise la norme RFC 3339, où la sortie générée utilise toujours le format UTC (indiqué par "Z" pour le temps universel coordonné) avec des secondes fractionnaires de 0, 3, 6 ou 9 chiffres décimaux. Des décalages horaires autres que "Z" (UTC) sont également acceptés. Exemples : "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" ou "2014-10-02T15:01:23+05:30".

OfferDetails

Informations sur les détails de l'offre concernant un élément de ligne d'achat.

Représentation JSON
{
  "offerTags": [
    string
  ],
  "basePlanId": string,
  "offerId": string
}
Champs
offerTags[]

string

Les derniers tags d'offre associés à l'offre. Il inclut les tags hérités du forfait de base.

basePlanId

string

ID du forfait de base. Présent pour tous les forfaits de base et toutes les offres.

offerId

string

ID d'offre. (présent uniquement pour les offres à prix réduit)

DeferredItemReplacement

Informations liées au remplacement différé d'un article.

Représentation JSON
{
  "productId": string
}
Champs
productId

string

ID du produit qui va remplacer l'ID existant.

DeferredItemRemoval

Ce type ne comporte aucun champ.

Informations liées au remplacement différé d'un article.

SignupPromotion

Promotion appliquée à cet article lors de l'achat.

Représentation JSON
{

  // Union field promotion_type can be only one of the following:
  "oneTimeCode": {
    object (OneTimeCode)
  },
  "vanityCode": {
    object (VanityCode)
  }
  // End of list of possible types for union field promotion_type.
}
Champs
Champ d'union promotion_type. Type de promotion appliqué à l'article. promotion_type ne peut être qu'un des éléments suivants :
oneTimeCode

object (OneTimeCode)

Un code à usage unique a été appliqué.

vanityCode

object (VanityCode)

Un code personnalisé a été appliqué.

OneTimeCode

Ce type ne comporte aucun champ.

Code promotionnel à usage unique.

VanityCode

Code promotionnel prédéfini à usages multiples.

Représentation JSON
{
  "promotionCode": string
}
Champs
promotionCode

string

Code promotionnel.

ItemReplacement

Détails sur un élément de ligne d'abonnement qui est remplacé.

Représentation JSON
{
  "productId": string,
  "replacementMode": enum (ReplacementMode),
  "basePlanId": string,
  "offerId": string
}
Champs
productId

string

ID du produit de l'abonnement remplacé.

replacementMode

enum (ReplacementMode)

Mode de remplacement appliqué lors de l'achat.

basePlanId

string

ID du forfait de base de l'élément de ligne d'abonnement remplacé.

offerId

string

ID d'offre de l'élément de campagne d'abonnement remplacé, le cas échéant.

ReplacementMode

Mode de remplacement d'un abonnement.

Enums
REPLACEMENT_MODE_UNSPECIFIED Mode de remplacement non spécifié.
WITH_TIME_PRORATION Le nouveau forfait sera calculé au prorata et crédité à partir de l'ancien forfait.
CHARGE_PRORATED_PRICE Un prix au prorata sera facturé à l'utilisateur pour le nouveau forfait.
WITHOUT_PRORATION Le nouveau forfait remplacera l'ancien sans proratiser le temps.
CHARGE_FULL_PRICE Le prix total du nouveau forfait sera facturé à l'utilisateur.
DEFERRED L'ancien forfait sera résilié et le nouveau prendra effet à l'expiration de l'ancien.
KEEP_EXISTING Le forfait restera inchangé avec ce remplacement.

OfferPhase

Détails de la phase d'offre.

Représentation JSON
{

  // Union field offer_phase can be only one of the following:
  "prorationPeriod": {
    object (ProrationPeriodOfferPhase)
  },
  "freeTrial": {
    object (FreeTrialOfferPhase)
  },
  "introductoryPrice": {
    object (IntroductoryPriceOfferPhase)
  },
  "basePrice": {
    object (BasePriceOfferPhase)
  }
  // End of list of possible types for union field offer_phase.
}
Champs
Champ d'union offer_phase. Détails de la phase d'offre. offer_phase ne peut être qu'un des éléments suivants :
prorationPeriod

object (ProrationPeriodOfferPhase)

Définissez la période de prorata de la phase d'offre.

freeTrial

object (FreeTrialOfferPhase)

Indique si la phase de l'offre est un essai sans frais.

introductoryPrice

object (IntroductoryPriceOfferPhase)

Définissez cette valeur lorsque la phase de l'offre correspond à une phase de prix découverte.

basePrice

object (BasePriceOfferPhase)

Définissez le moment où la phase de l'offre correspond à une phase de tarification du forfait de base.

ProrationPeriodOfferPhase

Détails sur la phase de l'offre avec prorata.

Représentation JSON
{
  "originalOfferPhaseType": enum (OriginalOfferPhaseType)
}
Champs
originalOfferPhaseType

enum (OriginalOfferPhaseType)

Type de phase de l'offre d'origine avant la période de prorata. Défini uniquement lorsque la période de prorata est modifiée à partir d'une phase d'offre existante.

OriginalOfferPhaseType

Phase de l'offre d'origine du paiement de l'offre, si le paiement de l'offre est un paiement au prorata.

Enums
ORIGINAL_OFFER_PHASE_TYPE_UNSPECIFIED Type de phase de l'offre d'origine non spécifié.
BASE L'abonnement est en phase de tarification de base (par exemple, au prix total).
INTRODUCTORY L'abonnement est en phase de prix découverte.
FREE_TRIAL L'abonnement est en période d'essai sans frais.

FreeTrialOfferPhase

Ce type ne comporte aucun champ.

Détails sur la phase d'offre d'essai sans frais.

IntroductoryPriceOfferPhase

Ce type ne comporte aucun champ.

Informations sur la phase de l'offre de prix découverte.

BasePriceOfferPhase

Ce type ne comporte aucun champ.

Informations sur la phase d'offre de prix de base.

OutOfAppPurchaseContext

Informations spécifiques à un achat hors application.

Représentation JSON
{
  "expiredExternalAccountIdentifiers": {
    object (ExternalAccountIdentifiers)
  },
  "expiredPurchaseToken": string
}
Champs
expiredExternalAccountIdentifiers

object (ExternalAccountIdentifiers)

Identifiant du compte utilisateur du dernier abonnement expiré pour ce SKU.

expiredPurchaseToken

string

Jeton d'achat du dernier abonnement expiré. Ce jeton d'achat ne doit être utilisé que pour identifier l'utilisateur si le lien entre le purchaseToken et l'utilisateur est stocké dans votre base de données. Vous ne pourrez pas l'utiliser pour appeler l'API Google Developer si elle a expiré depuis plus de 60 jours.

OnHoldStateContext

Informations supplémentaires sur les abonnements à l'état "EN ATTENTE".

Représentation JSON
{

  // Union field on_hold_reason can be only one of the following:
  "renewalDeclined": {
    object (RenewalDeclinedContext)
  }
  // End of list of possible types for union field on_hold_reason.
}
Champs
Champ d'union on_hold_reason. Raison pour laquelle l'abonnement est à l'état ON_HOLD. on_hold_reason ne peut être qu'un des éléments suivants :
renewalDeclined

object (RenewalDeclinedContext)

Facultatif. Le paiement du renouvellement a été refusé.

RenewalDeclinedContext

Contexte lié au scénario de refus de renouvellement.

Représentation JSON
{
  "pendingOrderId": string
}
Champs
pendingOrderId

string

Obligatoire. ID de la commande en attente ou ayant échoué qui est à l'origine de l'état.

InGracePeriodStateContext

Contexte supplémentaire concernant les abonnements à l'état IN_GRACE_PERIOD.

Représentation JSON
{

  // Union field grace_period_reason can be only one of the following:
  "renewalDeclined": {
    object (RenewalDeclinedContext)
  }
  // End of list of possible types for union field grace_period_reason.
}
Champs
Champ d'union grace_period_reason. Motif pour lequel l'abonnement est à l'état IN_GRACE_PERIOD. grace_period_reason ne peut être qu'un des éléments suivants :
renewalDeclined

object (RenewalDeclinedContext)

Facultatif. Le paiement du renouvellement a été refusé.

Méthodes

cancel

Résiliez l'abonnement de l'utilisateur.

defer

Reporte le renouvellement d'un abonnement.

get

Obtenir les métadonnées d'un abonnement

revoke

Révoquez l'achat d'un abonnement pour l'utilisateur.

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 s'applique 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 entre elles.
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. Pensez à consulter le tableau de bord d'état Play pour connaître les éventuelles interruptions de service.