- Ресурс: ПодпискаПокупкаV2
- Состояние подписки
- PausedStateContext
- CanceledStateContext
- Отмена, инициированная пользователем
- ОтменитьРезультат опроса
- ОтменитьОпросПричина
- СистемаИнициировалаОтмену
- РазработчикИнициировалОтмена
- ЗаменаОтмена
- ТестПокупка
- ПодтверждениеСостояние
- ВнешниеИдентификаторыСчетов
- Подписаться на GoogleInfo
- ПодпискаПокупкаЛинияЭлемент
- AutoRenewingPlan
- ПодпискаПунктЦенаИзменениеПодробности
- PriceChangeMode
- ЦенаИзменениеСостояния
- РассрочкаПлан
- Ожидание отмены
- ПредоплаченныйПлан
- ПредложениеПодробности
- ОтложеннаяЗаменаЭлемента
- РегистрацияПродвижение
- OneTimeCode
- Код тщеславия
- Методы
Ресурс: ПодпискаПокупкаV2
Указывает статус покупки подписки пользователем.
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 | Дополнительный контекст вокруг приостановленных подписок. Присутствует только если подписка в данный момент имеет subscriptionState SUBSCRIPTION_STATE_PAUSED. |
canceledStateContext | Дополнительный контекст вокруг отмененных подписок. Присутствует только если подписка в настоящее время имеет subscriptionState 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.
РазработчикИнициировалОтмена
Этот тип не имеет полей.
Информация об отменах, инициированных застройщиками.
ЗаменаОтмена
Этот тип не имеет полей.
Информация об отменах, вызванных заменой подписки.
ТестПокупка
Этот тип не имеет полей.
Является ли данная покупка подписки тестовой.
ПодтверждениеСостояние
Возможные состояния подтверждения подписки.
Перечисления | |
---|---|
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 | Информация об отложенной замене товара. |
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 | Если стоимость подписки увеличивается при отключении режима. |
ЦенаИзменениеСостояния
Состояние изменения цен.
Перечисления | |
---|---|
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 | Идентификатор предложения. Присутствует только для предложений со скидкой. |
ОтложеннаяЗаменаЭлемента
Информация, связанная с отложенной заменой товара.
JSON-представление |
---|
{ "productId": string } |
Поля | |
---|---|
productId | ProductId заменит существующий productId. |
РегистрацияПродвижение
Акция распространяется на данный товар при покупке.
JSON-представление |
---|
{ // Union field |
Поля | |
---|---|
Поле объединения promotion_type . Тип продвижения, применяемого к элементу. promotion_type может быть только одним из следующих: | |
oneTimeCode | Был применен одноразовый код. |
vanityCode | Был применен код тщеславия. |
OneTimeCode
Этот тип не имеет полей.
Одноразовый промокод.
Код тщеславия
Многоразовый, заранее определенный промокод.
JSON-представление |
---|
{ "promotionCode": string } |
Поля | |
---|---|
promotionCode | Промокод. |
Методы | |
---|---|
| Получить метаданные о подписке |
| Отменить покупку подписки для пользователя. |