REST Resource: purchases.subscriptionsv2

Ресурс: SubscriptionPurchaseV2

Указывает статус покупки подписки пользователем.

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)
  }
}
Поля
kind

string

Этот тип представляет собой объект SubscriptionPurchaseV2 в сервисе androidpublisher.

regionCode

string

Код страны/региона выставления счетов пользователя по стандарту ISO 3166-1 alpha-2 на момент предоставления подписки.

lineItems[]

object ( SubscriptionPurchaseLineItem )

Информация на уровне товаров при покупке подписки. Все товары в одной покупке должны быть либо с AutoRenewingPlan, либо с PrepaidPlan.

startTime

string ( Timestamp format)

Время предоставления подписки. Не установлено для ожидающих подписок (подписка была создана, но ожидает оплаты во время регистрации).

Использует RFC 3339, согласно которому сгенерированный вывод всегда будет нормализован по оси Z и содержать 0, 3, 6 или 9 знаков после запятой. Также допускаются смещения, отличные от «Z». Примеры: "2014-10-02T15:01:23Z" , "2014-10-02T15:01:23.045123456Z" или "2014-10-02T15:01:23+05:30" .

subscriptionState

enum ( SubscriptionState )

Текущее состояние подписки.

latestOrderId
(deprecated)

string

Устарело: используйте lineItems.latest_successful_order_id. Идентификатор последнего заказа, связанного с покупкой подписки. Для подписки с автоматическим продлением это идентификатор заказа, если он ещё не продлён, или идентификатор последнего повторяющегося заказа (успешного, ожидающего или отклонённого). Для предоплаченной подписки это идентификатор заказа, связанный с запрошенным токеном покупки.

linkedPurchaseToken

string

Токен покупки старой подписки, если эта подписка является одной из следующих: * Повторная регистрация отмененной, но не истекшей подписки * Повышение/понижение предыдущей подписки. * Конвертация с предоплаченной на автоматически продлеваемую подписку. * Конвертация с автоматически продлеваемой подписки на предоплаченную. * Пополнение предоплаченной подписки.

pausedStateContext

object ( PausedStateContext )

Дополнительный контекст для приостановленных подписок. Присутствует только в том случае, если для подписки указано состояние SUBSCRIPTION_STATE_PAUSED.

canceledStateContext

object ( CanceledStateContext )

Дополнительный контекст об отменённых подписках. Присутствует только в том случае, если текущее состояние подписки — SUBSCRIPTION_STATE_CANCELED или SUBSCRIPTION_STATE_EXPIRED.

testPurchase

object ( TestPurchase )

Присутствует только в том случае, если данная покупка подписки является тестовой.

acknowledgementState

enum ( AcknowledgementState )

Состояние подтверждения подписки.

externalAccountIdentifiers

object ( ExternalAccountIdentifiers )

Идентификатор учетной записи пользователя в стороннем сервисе.

subscribeWithGoogleInfo

object ( SubscribeWithGoogleInfo )

Профиль пользователя, связанный с покупками, совершенными с помощью «Подписки через Google».

Состояние подписки

Возможные состояния подписки, например, активна она или отменена. В рамках покупки подписки могут быть как тарифы с автоматическим продлением, так и предоплаченные тарифы.

Перечисления
SUBSCRIPTION_STATE_UNSPECIFIED Неуказанное состояние подписки.
SUBSCRIPTION_STATE_PENDING Подписка была создана, но ожидает оплаты во время регистрации. В этом состоянии все товары ожидают оплаты.
SUBSCRIPTION_STATE_ACTIVE Подписка активна. - (1) Если подписка является автоматически продлеваемым планом, по крайней мере один элемент имеет статус autoRenewEnabled и срок его действия не истек. - (2) Если подписка является предоплаченным планом, по крайней мере один элемент не просрочен.
SUBSCRIPTION_STATE_PAUSED Подписка приостановлена. Это состояние доступно только для подписки с автоматическим продлением. В этом состоянии все элементы приостановлены.
SUBSCRIPTION_STATE_IN_GRACE_PERIOD Подписка находится в льготном периоде. Это состояние доступно только для подписки с автоматическим продлением. В этом состоянии все товары находятся в льготном периоде.
SUBSCRIPTION_STATE_ON_HOLD Подписка приостановлена. Это состояние доступно только для подписки с автоматическим продлением. В этом состоянии все товары приостановлены.
SUBSCRIPTION_STATE_CANCELED Подписка отменена, но срок её действия ещё не истёк. Это состояние доступно только для подписки с автоматическим продлением. Для всех элементов параметр autoRenewEnabled установлен в значение false.
SUBSCRIPTION_STATE_EXPIRED Срок действия подписки истек. У всех товаров expiryTime уже прошёл.
SUBSCRIPTION_STATE_PENDING_PURCHASE_CANCELED Ожидаемая транзакция по подписке отменена. Если эта ожидаемая покупка была связана с существующей подпиской, используйте linkedPurchaseToken, чтобы получить текущее состояние этой подписки.

PausedStateContext

Информация, относящаяся к приостановленной подписке.

JSON-представление
{
  "autoResumeTime": string
}
Поля
autoResumeTime

string ( Timestamp format)

Время, по истечении которого подписка будет автоматически возобновлена.

Использует RFC 3339, согласно которому сгенерированный вывод всегда будет нормализован по оси Z и содержать 0, 3, 6 или 9 знаков после запятой. Также допускаются смещения, отличные от «Z». Примеры: "2014-10-02T15:01:23Z" , "2014-10-02T15:01:23.045123456Z" или "2014-10-02T15:01:23+05:30" .

CanceledStateContext

Информация, относящаяся к подписке в состоянии SUBSCRIPTION_STATE_CANCELED или SUBSCRIPTION_STATE_EXPIRED.

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.
}
Поля
Поле объединения cancellation_reason . Причина отмены подписки. cancellation_reason может быть только одной из следующих:
userInitiatedCancellation

object ( UserInitiatedCancellation )

Подписка была отменена пользователем.

systemInitiatedCancellation

object ( SystemInitiatedCancellation )

Подписка была отменена системой, например, из-за проблем с выставлением счетов.

developerInitiatedCancellation

object ( DeveloperInitiatedCancellation )

Подписка была отменена разработчиком.

replacementCancellation

object ( ReplacementCancellation )

Подписка была заменена новой подпиской.

Отмена, инициированная пользователем

Информация об отменах, инициированных пользователями.

JSON-представление
{
  "cancelSurveyResult": {
    object (CancelSurveyResult)
  },
  "cancelTime": string
}
Поля
cancelSurveyResult

object ( CancelSurveyResult )

Информация, предоставляемая пользователем при завершении процедуры отмены подписки (опрос о причинах отмены).

cancelTime

string ( Timestamp format)

Время отмены подписки пользователем. Пользователь может сохранить доступ к подписке после этого времени. Используйте lineItems.expiry_time, чтобы определить, сохранился ли у пользователя доступ.

Использует RFC 3339, согласно которому сгенерированный вывод всегда будет нормализован по оси Z и содержать 0, 3, 6 или 9 знаков после запятой. Также допускаются смещения, отличные от «Z». Примеры: "2014-10-02T15:01:23Z" , "2014-10-02T15:01:23.045123456Z" или "2014-10-02T15:01:23+05:30" .

Отмена результата опроса

Результат опроса по отмене подписки, когда подписка была отменена пользователем.

JSON-представление
{
  "reason": enum (CancelSurveyReason),
  "reasonUserInput": string
}
Поля
reason

enum ( CancelSurveyReason )

Причина, выбранная пользователем в опросе для отмены.

reasonUserInput

string

Устанавливается только для CANCEL_SURVEY_REASON_OTHERS. Это свободный ответ пользователя на опрос.

Причина отмены опроса

Причина, выбранная пользователем в опросе для отмены.

Перечисления
CANCEL_SURVEY_REASON_UNSPECIFIED Неуказанная причина отмены опроса.
CANCEL_SURVEY_REASON_NOT_ENOUGH_USAGE Недостаточное использование подписки.
CANCEL_SURVEY_REASON_TECHNICAL_ISSUES Технические проблемы при использовании приложения.
CANCEL_SURVEY_REASON_FOUND_BETTER_APP Пользователь нашел лучшее приложение.
CANCEL_SURVEY_REASON_OTHERS Другие причины.

Отмена, инициированная системой

Этот тип не имеет полей.

Информация об отменах, инициированных системой Google.

Отмена по инициативе разработчика

Этот тип не имеет полей.

Информация об отменах, инициированных застройщиками.

ЗаменаОтмена

Этот тип не имеет полей.

Информация об отменах, вызванных заменой подписки.

TestPurchase

Этот тип не имеет полей.

Является ли данная покупка подписки тестовой.

AcknowledgementState

Возможные состояния подтверждения подписки.

Перечисления
ACKNOWLEDGEMENT_STATE_UNSPECIFIED Неопределенное состояние подтверждения.
ACKNOWLEDGEMENT_STATE_PENDING Подписка пока не подтверждена.
ACKNOWLEDGEMENT_STATE_ACKNOWLEDGED Подписка подтверждена.

Внешние идентификаторы счетов

Идентификатор учетной записи пользователя в стороннем сервисе.

JSON-представление
{
  "externalAccountId": string,
  "obfuscatedExternalAccountId": string,
  "obfuscatedExternalProfileId": string
}
Поля
externalAccountId

string

Идентификатор учётной записи пользователя в стороннем сервисе. Присутствует только в том случае, если привязка учётной записи произошла в процессе покупки подписки.

obfuscatedExternalAccountId

string

Обфусцированная версия идентификатора, уникально связанная с учётной записью пользователя в вашем приложении. Присутствует для следующих покупок: * Если привязка учётной записи произошла в процессе покупки подписки. * Указана с помощью https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.Builder#setobfuscatedaccountid при совершении покупки.

obfuscatedExternalProfileId

string

Обфусцированная версия идентификатора, уникально связанная с профилем пользователя в вашем приложении. Присутствует только в том случае, если указана с помощью https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.Builder#setobfuscatedprofileid при совершении покупки.

Подписаться на GoogleInfo

Информация, связанная с покупками, совершенными с помощью «Подписки через Google».

JSON-представление
{
  "profileId": string,
  "profileName": string,
  "emailAddress": string,
  "givenName": string,
  "familyName": string
}
Поля
profileId

string

Идентификатор профиля Google пользователя на момент покупки подписки.

profileName

string

Имя профиля пользователя на момент покупки подписки.

emailAddress

string

Адрес электронной почты пользователя на момент приобретения подписки.

givenName

string

Имя пользователя при покупке подписки.

familyName

string

Фамилия пользователя на момент приобретения подписки.

ПодпискаПокупкаЛинии

Информация на уровне товара при покупке подписки.

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)
  }
}
Поля
productId

string

Идентификатор приобретенного продукта (например, «monthly001»).

expiryTime

string ( Timestamp format)

Время, когда подписка истекла или истечет, если доступ не будет продлен (например, возобновлен).

Использует RFC 3339, согласно которому сгенерированный вывод всегда будет нормализован по оси Z и содержать 0, 3, 6 или 9 знаков после запятой. Также допускаются смещения, отличные от «Z». Примеры: "2014-10-02T15:01:23Z" , "2014-10-02T15:01:23.045123456Z" или "2014-10-02T15:01:23+05:30" .

latestSuccessfulOrderId

string

Идентификатор последнего успешного заказа, связанного с этим товаром. Отсутствует, если товар ещё не принадлежит пользователю (например, товар, на который откладывается заказ).

Объединенное поле plan_type . Тип плана подписки. plan_type может быть только одним из следующих:
autoRenewingPlan

object ( AutoRenewingPlan )

Товар автоматически продлевается.

prepaidPlan

object ( PrepaidPlan )

Товар предоплачен.

offerDetails

object ( OfferDetails )

Подробности предложения по этому товару.

Поле объединения deferred_item_change . Это поле присутствует, когда элемент имеет отложенное изменение. Его можно удалить или заменить. deferred_item_change может принимать только одно из следующих значений:
deferredItemReplacement

object ( DeferredItemReplacement )

Информация об отложенной замене товара.

deferredItemRemoval

object ( DeferredItemRemoval )

Информация об отложенном удалении товара.

signupPromotion

object ( SignupPromotion )

Информация о промоакции на этот товар. Устанавливается только в том случае, если при регистрации была применена промоакция.

AutoRenewingPlan

Информация, связанная с планом автоматического продления.

JSON-представление
{
  "autoRenewEnabled": boolean,
  "recurringPrice": {
    object (Money)
  },
  "priceChangeDetails": {
    object (SubscriptionItemPriceChangeDetails)
  },
  "installmentDetails": {
    object (InstallmentPlan)
  }
}
Поля
autoRenewEnabled

boolean

Если подписка в настоящее время настроена на автоматическое продление, например, пользователь не отменил подписку

recurringPrice

object ( Money )

Текущая цена автоматического продления подписки. Обратите внимание, что цена указана без учёта скидок и налогов (цены без учёта налогов). Если вам нужны данные о транзакции, обратитесь к API orders.get .

priceChangeDetails

object ( SubscriptionItemPriceChangeDetails )

Информация о последнем изменении цены на товар с момента оформления подписки.

installmentDetails

object ( InstallmentPlan )

Обязательства по рассрочке платежа и информация о состоянии плана автоматического продления.

ПодпискаПунктЦенаИзменениеДетали

Информация об изменении цены на товар по подписке.

JSON-представление
{
  "newPrice": {
    object (Money)
  },
  "priceChangeMode": enum (PriceChangeMode),
  "priceChangeState": enum (PriceChangeState),
  "expectedNewPriceChargeTime": string
}
Поля
newPrice

object ( Money )

Новая повторяющаяся цена для подписного товара.

priceChangeMode

enum ( PriceChangeMode )

Режим изменения цены определяет, как изменяется цена элемента подписки.

priceChangeState

enum ( PriceChangeState )

Укажите текущее изменение цен.

expectedNewPriceChargeTime

string ( Timestamp format)

Время продления, с которого изменение цены вступит в силу для пользователя. Это время может быть изменено (перенесено на будущее) в случае сдвига срока продления, например, приостановки. Это поле заполняется только в том случае, если изменение цены не вступило в силу.

Использует RFC 3339, согласно которому сгенерированный вывод всегда будет нормализован по оси Z и содержать 0, 3, 6 или 9 знаков после запятой. Также допускаются смещения, отличные от «Z». Примеры: "2014-10-02T15:01:23Z" , "2014-10-02T15:01:23.045123456Z" или "2014-10-02T15:01:23+05:30" .

PriceChangeMode

Режим изменения цены.

Перечисления
PRICE_CHANGE_MODE_UNSPECIFIED Режим изменения цены не указан. Это значение никогда не следует устанавливать.
PRICE_DECREASE Если цена подписки снижается.
PRICE_INCREASE Если стоимость подписки увеличивается и пользователю необходимо с этим согласиться.
OPT_OUT_PRICE_INCREASE Если стоимость подписки увеличивается при отключении режима подписки.

PriceChangeState

Состояние изменения цен.

Перечисления
PRICE_CHANGE_STATE_UNSPECIFIED Состояние изменения цены не указано. Это значение не следует использовать.
OUTSTANDING Ожидание согласия пользователя на изменение цены.
CONFIRMED Подтверждается, что изменение цены произошло для пользователя.
APPLIED Изменение цены применено, т.е. с пользователя начала взиматься новая цена.
CANCELED Изменение цены было отменено.

Рассрочка

Информация о рассрочке платежа.

JSON-представление
{
  "initialCommittedPaymentsCount": integer,
  "subsequentCommittedPaymentsCount": integer,
  "remainingCommittedPaymentsCount": integer,
  "pendingCancellation": {
    object (PendingCancellation)
  }
}
Поля
initialCommittedPaymentsCount

integer

Общее количество платежей, которые пользователь изначально готов совершить.

subsequentCommittedPaymentsCount

integer

Общее количество платежей, которые пользователь будет обязан совершить после каждого периода действия соглашения. Пустое значение означает, что после первоначального действия соглашение будет переведено на обычный тарифный план с автоматическим продлением.

remainingCommittedPaymentsCount

integer

Общее количество обязательств по платежам, оставшихся к оплате в этом цикле продления.

pendingCancellation

object ( PendingCancellation )

Если этот тарифный план указан, он ожидает отмены. Отмена произойдет только после того, как пользователь завершит все платежи.

Ожидание отмены

Этот тип не имеет полей.

Это индикатор наличия отменённой виртуальной рассрочки. Отмена произойдёт только после того, как пользователь завершит все внесённые платежи.

Предоплаченный план

Информация, связанная с предоплаченным планом.

JSON-представление
{
  "allowExtendAfterTime": string
}
Поля
allowExtendAfterTime

string ( Timestamp format)

Если этот параметр присутствует, он определяет время, по истечении которого пополнения баланса предоплаченного тарифа будут разрешены. Этот параметр отсутствует для истёкших предоплаченных тарифов.

Использует RFC 3339, согласно которому сгенерированный вывод всегда будет нормализован по оси Z и содержать 0, 3, 6 или 9 знаков после запятой. Также допускаются смещения, отличные от «Z». Примеры: "2014-10-02T15:01:23Z" , "2014-10-02T15:01:23.045123456Z" или "2014-10-02T15:01:23+05:30" .

Подробности предложения

Подробная информация о предложении, связанная с позицией покупки.

JSON-представление
{
  "offerTags": [
    string
  ],
  "basePlanId": string,
  "offerId": string
}
Поля
offerTags[]

string

Последние теги предложения, связанные с ним. Включая теги, унаследованные от базового плана.

basePlanId

string

Идентификатор базового плана. Присутствует для всех базовых планов и предложений.

offerId

string

Идентификатор предложения. Присутствует только для предложений со скидкой.

DeferredItemReplacement

Информация, связанная с отложенной заменой товара.

JSON-представление
{
  "productId": string
}
Поля
productId

string

ProductId заменит существующий productId.

DeferredItemRemoval

Этот тип не имеет полей.

Информация, связанная с отложенной заменой товара.

ПодписатьсяПродвижение

На данный товар распространяется акция при покупке.

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.
}
Поля
Поле объединения promotion_type . Тип промоакции, применяемой к элементу. promotion_type может быть только одним из следующих:
oneTimeCode

object ( OneTimeCode )

Был применен одноразовый код.

vanityCode

object ( VanityCode )

Был применен код тщеславия.

OneTimeCode

Этот тип не имеет полей.

Одноразовый промокод.

VanityCode

Многоразовый, заранее определенный промокод.

JSON-представление
{
  "promotionCode": string
}
Поля
promotionCode

string

Промокод.

Методы

get

Получить метаданные о подписке

revoke

Отменить покупку подписки для пользователя.