- Ресурс: SubscriptionPurchaseV2
- Состояние подписки
- PausedStateContext
- CanceledStateContext
- Отмена, инициированная пользователем
- Отмена результата опроса
- Причина отмены опроса
- Отмена, инициированная системой
- Отмена по инициативе разработчика
- ЗаменаОтмена
- TestPurchase
- AcknowledgementState
- Внешние идентификаторы счетов
- Подписаться на GoogleInfo
- ПодпискаПокупкаЛинии
- AutoRenewingPlan
- ПодпискаПунктЦенаИзменениеДетали
- PriceChangeMode
- PriceChangeState
- Рассрочка
- Ожидание отмены
- Предоплаченный план
- Подробности предложения
- DeferredItemReplacement
- DeferredItemRemoval
- ПодписатьсяПродвижение
- OneTimeCode
- VanityCode
- Методы
Ресурс: SubscriptionPurchaseV2
Указывает статус покупки подписки пользователем.
JSON-представление |
---|
{ "kind": string, "regionCode": string, "lineItems": [ { object ( |
Поля | |
---|---|
kind | Этот тип представляет собой объект SubscriptionPurchaseV2 в сервисе androidpublisher. |
regionCode | Код страны/региона выставления счетов пользователя по стандарту ISO 3166-1 alpha-2 на момент предоставления подписки. |
lineItems[] | Информация на уровне товаров при покупке подписки. Все товары в одной покупке должны быть либо с AutoRenewingPlan, либо с PrepaidPlan. |
startTime | Время предоставления подписки. Не установлено для ожидающих подписок (подписка была создана, но ожидает оплаты во время регистрации). Использует RFC 3339, согласно которому сгенерированный вывод всегда будет нормализован по оси Z и содержать 0, 3, 6 или 9 знаков после запятой. Также допускаются смещения, отличные от «Z». Примеры: |
subscriptionState | Текущее состояние подписки. |
latestOrderId | Устарело: используйте lineItems.latest_successful_order_id. Идентификатор последнего заказа, связанного с покупкой подписки. Для подписки с автоматическим продлением это идентификатор заказа, если он ещё не продлён, или идентификатор последнего повторяющегося заказа (успешного, ожидающего или отклонённого). Для предоплаченной подписки это идентификатор заказа, связанный с запрошенным токеном покупки. |
linkedPurchaseToken | Токен покупки старой подписки, если эта подписка является одной из следующих: * Повторная регистрация отмененной, но не истекшей подписки * Повышение/понижение предыдущей подписки. * Конвертация с предоплаченной на автоматически продлеваемую подписку. * Конвертация с автоматически продлеваемой подписки на предоплаченную. * Пополнение предоплаченной подписки. |
pausedStateContext | Дополнительный контекст для приостановленных подписок. Присутствует только в том случае, если для подписки указано состояние SUBSCRIPTION_STATE_PAUSED. |
canceledStateContext | Дополнительный контекст об отменённых подписках. Присутствует только в том случае, если текущее состояние подписки — SUBSCRIPTION_STATE_CANCELED или SUBSCRIPTION_STATE_EXPIRED. |
testPurchase | Присутствует только в том случае, если данная покупка подписки является тестовой. |
acknowledgementState | Состояние подтверждения подписки. |
externalAccountIdentifiers | Идентификатор учетной записи пользователя в стороннем сервисе. |
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 | Время, по истечении которого подписка будет автоматически возобновлена. Использует RFC 3339, согласно которому сгенерированный вывод всегда будет нормализован по оси Z и содержать 0, 3, 6 или 9 знаков после запятой. Также допускаются смещения, отличные от «Z». Примеры: |
CanceledStateContext
Информация, относящаяся к подписке в состоянии SUBSCRIPTION_STATE_CANCELED или SUBSCRIPTION_STATE_EXPIRED.
JSON-представление |
---|
{ // Union field |
Поля | |
---|---|
Поле объединения cancellation_reason . Причина отмены подписки. cancellation_reason может быть только одной из следующих: | |
userInitiatedCancellation | Подписка была отменена пользователем. |
systemInitiatedCancellation | Подписка была отменена системой, например, из-за проблем с выставлением счетов. |
developerInitiatedCancellation | Подписка была отменена разработчиком. |
replacementCancellation | Подписка была заменена новой подпиской. |
Отмена, инициированная пользователем
Информация об отменах, инициированных пользователями.
JSON-представление |
---|
{
"cancelSurveyResult": {
object ( |
Поля | |
---|---|
cancelSurveyResult | Информация, предоставляемая пользователем при завершении процедуры отмены подписки (опрос о причинах отмены). |
cancelTime | Время отмены подписки пользователем. Пользователь может сохранить доступ к подписке после этого времени. Используйте lineItems.expiry_time, чтобы определить, сохранился ли у пользователя доступ. Использует RFC 3339, согласно которому сгенерированный вывод всегда будет нормализован по оси Z и содержать 0, 3, 6 или 9 знаков после запятой. Также допускаются смещения, отличные от «Z». Примеры: |
Отмена результата опроса
Результат опроса по отмене подписки, когда подписка была отменена пользователем.
JSON-представление |
---|
{
"reason": enum ( |
Поля | |
---|---|
reason | Причина, выбранная пользователем в опросе для отмены. |
reasonUserInput | Устанавливается только для CANCEL_SURVEY_REASON_OTHERS. Это свободный ответ пользователя на опрос. |
Причина отмены опроса
Причина, выбранная пользователем в опросе для отмены.
Перечисления | |
---|---|
CANCEL_SURVEY_REASON_UNSPECIFIED | Неуказанная причина отмены опроса. |
CANCEL_SURVEY_REASON_NOT_ENOUGH_USAGE | Недостаточное использование подписки. |
CANCEL_SURVEY_REASON_TECHNICAL_ISSUES | Технические проблемы при использовании приложения. |
CANCEL_SURVEY_REASON_COST_RELATED | Вопросы, связанные со стоимостью. |
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 | Идентификатор учётной записи пользователя в стороннем сервисе. Присутствует только в том случае, если привязка учётной записи произошла в процессе покупки подписки. |
obfuscatedExternalAccountId | Обфусцированная версия идентификатора, уникально связанная с учётной записью пользователя в вашем приложении. Присутствует для следующих покупок: * Если привязка учётной записи произошла в процессе покупки подписки. * Указана с помощью https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.Builder#setobfuscatedaccountid при совершении покупки. |
obfuscatedExternalProfileId | Обфусцированная версия идентификатора, уникально связанная с профилем пользователя в вашем приложении. Присутствует только в том случае, если указана с помощью 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 | Идентификатор профиля Google пользователя на момент покупки подписки. |
profileName | Имя профиля пользователя на момент покупки подписки. |
emailAddress | Адрес электронной почты пользователя на момент приобретения подписки. |
givenName | Имя пользователя при покупке подписки. |
familyName | Фамилия пользователя на момент приобретения подписки. |
ПодпискаПокупкаЛинии
Информация на уровне товара при покупке подписки.
JSON-представление |
---|
{ "productId": string, "expiryTime": string, "latestSuccessfulOrderId": string, // Union field |
Поля | |
---|---|
productId | Идентификатор приобретенного продукта (например, «monthly001»). |
expiryTime | Время, когда подписка истекла или истечет, если доступ не будет продлен (например, возобновлен). Использует RFC 3339, согласно которому сгенерированный вывод всегда будет нормализован по оси Z и содержать 0, 3, 6 или 9 знаков после запятой. Также допускаются смещения, отличные от «Z». Примеры: |
latestSuccessfulOrderId | Идентификатор последнего успешного заказа, связанного с этим товаром. Отсутствует, если товар ещё не принадлежит пользователю (например, товар, на который откладывается заказ). |
Объединенное поле plan_type . Тип плана подписки. plan_type может быть только одним из следующих: | |
autoRenewingPlan | Товар автоматически продлевается. |
prepaidPlan | Товар предоплачен. |
offerDetails | Подробности предложения по этому товару. |
Поле объединения deferred_item_change . Это поле присутствует, когда элемент имеет отложенное изменение. Его можно удалить или заменить. deferred_item_change может принимать только одно из следующих значений: | |
deferredItemReplacement | Информация об отложенной замене товара. |
deferredItemRemoval | Информация об отложенном удалении товара. |
signupPromotion | Информация о промоакции на этот товар. Устанавливается только в том случае, если при регистрации была применена промоакция. |
AutoRenewingPlan
Информация, связанная с планом автоматического продления.
JSON-представление |
---|
{ "autoRenewEnabled": boolean, "recurringPrice": { object ( |
Поля | |
---|---|
autoRenewEnabled | Если подписка в настоящее время настроена на автоматическое продление, например, пользователь не отменил подписку |
recurringPrice | Текущая цена автоматического продления подписки. Обратите внимание, что цена указана без учёта скидок и налогов (цены без учёта налогов). Если вам нужны данные о транзакции, обратитесь к API |
priceChangeDetails | Информация о последнем изменении цены на товар с момента оформления подписки. |
installmentDetails | Обязательства по рассрочке платежа и информация о состоянии плана автоматического продления. |
ПодпискаПунктЦенаИзменениеДетали
Информация об изменении цены на товар по подписке.
JSON-представление |
---|
{ "newPrice": { object ( |
Поля | |
---|---|
newPrice | Новая повторяющаяся цена для подписного товара. |
priceChangeMode | Режим изменения цены определяет, как изменяется цена элемента подписки. |
priceChangeState | Укажите текущее изменение цен. |
expectedNewPriceChargeTime | Время продления, с которого изменение цены вступит в силу для пользователя. Это время может быть изменено (перенесено на будущее) в случае сдвига срока продления, например, приостановки. Это поле заполняется только в том случае, если изменение цены не вступило в силу. Использует RFC 3339, согласно которому сгенерированный вывод всегда будет нормализован по оси Z и содержать 0, 3, 6 или 9 знаков после запятой. Также допускаются смещения, отличные от «Z». Примеры: |
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 ( |
Поля | |
---|---|
initialCommittedPaymentsCount | Общее количество платежей, которые пользователь изначально готов совершить. |
subsequentCommittedPaymentsCount | Общее количество платежей, которые пользователь будет обязан совершить после каждого периода действия соглашения. Пустое значение означает, что после первоначального действия соглашение будет переведено на обычный тарифный план с автоматическим продлением. |
remainingCommittedPaymentsCount | Общее количество обязательств по платежам, оставшихся к оплате в этом цикле продления. |
pendingCancellation | Если этот тарифный план указан, он ожидает отмены. Отмена произойдет только после того, как пользователь завершит все платежи. |
Ожидание отмены
Этот тип не имеет полей.
Это индикатор наличия отменённой виртуальной рассрочки. Отмена произойдёт только после того, как пользователь завершит все внесённые платежи.
Предоплаченный план
Информация, связанная с предоплаченным планом.
JSON-представление |
---|
{ "allowExtendAfterTime": string } |
Поля | |
---|---|
allowExtendAfterTime | Если этот параметр присутствует, он определяет время, по истечении которого пополнения баланса предоплаченного тарифа будут разрешены. Этот параметр отсутствует для истёкших предоплаченных тарифов. Использует RFC 3339, согласно которому сгенерированный вывод всегда будет нормализован по оси Z и содержать 0, 3, 6 или 9 знаков после запятой. Также допускаются смещения, отличные от «Z». Примеры: |
Подробности предложения
Подробная информация о предложении, связанная с позицией покупки.
JSON-представление |
---|
{ "offerTags": [ string ], "basePlanId": string, "offerId": string } |
Поля | |
---|---|
offerTags[] | Последние теги предложения, связанные с ним. Включая теги, унаследованные от базового плана. |
basePlanId | Идентификатор базового плана. Присутствует для всех базовых планов и предложений. |
offerId | Идентификатор предложения. Присутствует только для предложений со скидкой. |
DeferredItemReplacement
Информация, связанная с отложенной заменой товара.
JSON-представление |
---|
{ "productId": string } |
Поля | |
---|---|
productId | ProductId заменит существующий productId. |
DeferredItemRemoval
Этот тип не имеет полей.
Информация, связанная с отложенной заменой товара.
ПодписатьсяПродвижение
На данный товар распространяется акция при покупке.
JSON-представление |
---|
{ // Union field |
Поля | |
---|---|
Поле объединения promotion_type . Тип промоакции, применяемой к элементу. promotion_type может быть только одним из следующих: | |
oneTimeCode | Был применен одноразовый код. |
vanityCode | Был применен код тщеславия. |
OneTimeCode
Этот тип не имеет полей.
Одноразовый промокод.
VanityCode
Многоразовый, заранее определенный промокод.
JSON-представление |
---|
{ "promotionCode": string } |
Поля | |
---|---|
promotionCode | Промокод. |
Методы | |
---|---|
| Получить метаданные о подписке |
| Отменить покупку подписки для пользователя. |