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)
  },
  "outOfAppPurchaseContext": {
    object (OutOfAppPurchaseContext)
  }
}
Поля
kind

string

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

regionCode

string

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

lineItems[]

object ( SubscriptionPurchaseLineItem )

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

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

outOfAppPurchaseContext

object ( OutOfAppPurchaseContext )

Дополнительная информация о покупках вне приложения. Эта информация отображается только для повторных подписок (покупок подписки, совершенных после истечения срока действия предыдущей подписки на тот же продукт) через центр подписок Google Play. Это поле будет удалено после подтверждения подписки.

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

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

Перечисления
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 Срок действия подписки истек. Время истечения срока действия всех товаров истекло.
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 Другие причины.

SystemInitiatedCancellation

Этот тип не содержит полей.

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

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

Этот тип не содержит полей.

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

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

Этот тип не содержит полей.

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

Тестовая покупка

Этот тип не содержит полей.

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

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

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

Перечисления
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)
  },
  "itemReplacement": {
    object (ItemReplacement)
  }
}
Поля
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 )

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

itemReplacement

object ( ItemReplacement )

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

План с автоматическим продлением

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

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

boolean

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

recurringPrice

object ( Money )

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

priceChangeDetails

object ( SubscriptionItemPriceChangeDetails )

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

installmentDetails

object ( InstallmentPlan )

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

SubscriptionItemPriceChangeDetails

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

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

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

Мода изменения цены.

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

Изменение цены

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

Перечисления
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 )

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

Ожидающая отмена

Этот тип не содержит полей.

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

Информация о согласии PriceStepUp

Информация, касающаяся повышения цены, требующего согласия пользователя.

JSON-представление
{
  "state": enum (ConsentState),
  "consentDeadlineTime": string,
  "newPrice": {
    object (Money)
  }
}
Поля
state

enum ( ConsentState )

Только вывод. Состояние согласия на повышение цен.

consentDeadlineTime

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

newPrice

object ( Money )

Новая цена, для установки которой требуется согласие пользователя.

ConsentState

Состояние соглашения о поэтапном повышении цен.

Перечисления
CONSENT_STATE_UNSPECIFIED Штат, в котором не указано согласие.
PENDING Пользователь еще не дал согласия.
CONFIRMED Пользователь дал согласие, и новая цена ожидает вступления в силу.
COMPLETED Пользователь дал согласие, и новая цена вступила в силу.

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

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

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

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

Отложенная замена товара

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

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

string

Идентификатор продукта (productId) заменит существующий идентификатор продукта (productId).

DeferredItemRemoval

Этот тип не содержит полей.

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

SignupPromotion

Акция действовала на этот товар при покупке.

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

Промокод.

Замена элемента

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

JSON-представление
{
  "productId": string,
  "replacementMode": enum (ReplacementMode),
  "basePlanId": string,
  "offerId": string
}
Поля
productId

string

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

replacementMode

enum ( ReplacementMode )

Способ замены, примененный при покупке.

basePlanId

string

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

offerId

string

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

Режим замены

Способ замены подписки.

Перечисления
REPLACEMENT_MODE_UNSPECIFIED Неуказанный способ замены.
WITH_TIME_PRORATION По новому плану расчет будет произведен пропорционально и зачтен из средств, предусмотренных старым планом.
CHARGE_PRORATED_PRICE С пользователя будет взиматься пропорциональная плата за новый тарифный план.
WITHOUT_PRORATION Новый план заменит старый без пропорционального перерасчета времени.
CHARGE_FULL_PRICE С пользователя будет взиматься полная стоимость нового тарифного плана.
DEFERRED Старый план будет отменен, и новый план вступит в силу после истечения срока действия старого.
KEEP_EXISTING После этой замены план останется неизменным.

OutOfAppPurchaseContext

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

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

object ( ExternalAccountIdentifiers )

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

expiredPurchaseToken

string

Токен покупки последней истекшей подписки. Этот токен покупки следует использовать только для идентификации пользователя, если связь между токеном покупки и пользователем хранится в вашей базе данных. Его нельзя использовать для вызова API разработчиков Google, если с момента истечения срока действия прошло более 60 дней.

Методы

cancel

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

get

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

revoke

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

коды ошибок

При работе с этим ресурсом возвращаются следующие коды ошибок HTTP:

Код ошибки Причина Описание Разрешение
400 / 410 subscriptionExpired Срок действия подписки истек, и запрошенная операция не может быть выполнена. Проверьте срок действия подписки. Эта операция не допускается для подписок с истекшим сроком действия.
400 subscriptionInvalidArgument В запросе на подписку был указан недопустимый аргумент. Ознакомьтесь с документацией API и убедитесь, что все необходимые поля заполнены и правильно отформатированы.
400 invalidPurchaseState Покупка находится в недействительном состоянии для выполнения запрошенной операции. Например, вы можете пытаться подтвердить уже совершенную покупку или отменить неактивную подписку. Перед выполнением операции проверьте текущее состояние ресурса с помощью соответствующего API-запроса Get. Убедитесь, что ресурс находится в подходящем состоянии для выполнения действия.
400 invalidValue В запросе было предоставлено недопустимое значение. Такая ошибка часто возникает при получении некорректного или недействительного токена покупки. Исправьте недопустимое значение поля в теле запроса или параметрах в соответствии со справочником API.
400 prepaidSubscriptionNotSupported Данная операция не поддерживается для предоплаченных подписок. Убедитесь, что операция применима к типу подписки. Эта ошибка характерна именно для таких методов, как «Отмена», «Отсрочка», «Возврат средств» или «Отзыв».
400 productNotOwnedByUser Предоставленный токен покупки действителен, но пользователь в данный момент не является владельцем продукта. Это может произойти, если покупка была возвращена, аннулирована или истек срок ее действия до подтверждения. Перед выполнением операции проверьте текущее состояние ресурса с помощью соответствующего API-запроса Get. Убедитесь, что ресурс находится в подходящем состоянии для выполнения действия.
400 purchaseTokenMismatch Предоставленный токен покупки не соответствует покупке, названию пакета, идентификатору подписки или идентификатору продукта. Убедитесь, что все данные в запросе верны и соответствуют друг другу.
400 required В запросе отсутствует обязательное поле или параметр. Ознакомьтесь с документацией API, чтобы убедиться в наличии всех обязательных полей и параметров.
400 unsupportedIabType Данная операция не поддерживается для указанного типа внутриигровых покупок. Убедитесь, что метод API совместим с управляемым типом элемента.
403 userInsufficientPermission У пользователя недостаточно прав для выполнения запрошенной операции. Убедитесь, что авторизованный пользователь имеет необходимые разрешения в консоли Google Play. Дополнительные сведения см. в разделе «Использование служебной учетной записи» .
404 notFound Запрошенный ресурс не найден. Убедитесь в правильности идентификаторов (например, токен покупки, название пакета, идентификатор продукта, идентификатор подписки).
409 concurrentUpdate Была предпринята попытка обновить объект, который обновляется одновременно с первым. Повторите запрос с экспоненциальной задержкой. Избегайте одновременных изменений одного и того же ресурса.
410 purchaseTokenNoLongerValid Токен покупки окончательно недействителен, поскольку связанная с ним учетная запись пользователя была удалена или запись о покупке больше не существует. Прекратите использование этого токена покупки.
410 subscriptionNoLongerAvailable Возможность приобретения подписки больше недоступна для запроса, поскольку срок ее действия истек слишком давно. Эта ошибка указывает на то, что срок действия подписки истек более 60 дней назад. Вам больше не следует запрашивать информацию по этим подпискам.
5xx Generic error Общая ошибка на сервере Google Play. Повторите запрос.

Если проблема не исчезнет, ​​обратитесь к своему менеджеру аккаунта Google Play или отправьте запрос в службу поддержки. Рекомендуем проверить панель состояния Play на наличие известных сбоев.