Перейти к основному содержимому

Валидация подписки

Метод позволяет получить информацию о подписке пользователя (в формате Google) по packageName, subscriptionId и purchaseId.

Параметры взаимодействия

GET
https://public-api.rustore.ru/public/v4/subscription/{packageName}/{subscriptionId}/{purchaseId}
АтрибутТипОписаниеОбязательностьРасположениеПример
Public-TokenstringJWE-токен авторизации в Public API RuStore.
Как получить токен авторизации
ДаheaderN/A
packageNamestringНаименование пакета приложения.Даpathcom.MashaAndTheBear.HairSalon
subscriptionIdstringКод продукта-подписки.Даpathdaily_sub
purchaseIdstring (UUID)Идентификатор покупки.Даpath19b873b0-a3a9-4578-be99-1ed0fc8a73d0

Параметры ответа

АтрибутТипОписаниеОбязательностьРасположениеПример
codestringКод ответа.ДаbodyOK / ERROR
messagestringРасшифровка кода ответа.НетbodySuccessful result
body{}objectТело ответа.НетbodyN/A
timestampstringВремя ответа.Даbody2024-07-29T12:00:00.000Z

body{}

Поля объекта соответствуют формату Google-подписок.

АтрибутТипОписаниеОбязательностьПример
startTimeMillisstringВремя предоставления подписки в миллисекундах с начала эпохи.Да1694431707000
expiryTimeMillisstringВремя истечения срока действия подписки в миллисекундах с начала эпохи.Да1697083457000
autoRenewinginteger(int32)Будет ли подписка автоматически продлеваться по окончании текущего срока.Да1
developerPayloadstringСтрока с дополнительной информацией о покупке.НетExternal id = 1
priceCurrencyCodestringКод валюты ISO-4217 для цены подписки.ДаRUB
priceAmountMicrosstringЦена подписки в микроединицах (1 000 000 micro = 1 единица валюты).Да749000000
countryCodestringКод страны/региона выставления счетов пользователя на момент предоставления подписки.ДаRU
paymentStateinteger(int32)Состояние оплаты: 0 — ожидание платежа; 1 — платёж получен; 2 — бесплатная пробная версия.Да1
cancelReasoninteger(int32)Причина отмены или непродления: 0 — пользователь отменил; 1 — отмена разработчиком.Нет0
userCancellationTimeMillisstringВремя отмены подписки пользователем (мс с начала эпохи).Нет1697083457000
orderIdstringИдентификатор последнего счёта, связанного с покупкой подписки.Нет3352E..1
acknowledgementStateinteger(int32)Состояние подтверждения продукта: 0 — ещё не подтверждено; 1 — подтверждено.Да1
externalAccountIdstringИдентификатор пользователя во внешнем приложении (передаётся, если задан при старте покупки appUserId).Нетany_string
kindstringВсегда androidpublisher#subscriptionPurchase.Даandroidpublisher#subscriptionPurchase
purchaseTypeinteger(int32)Тип покупки: 0 — тестовая подписка.Нет0
introductoryPriceInfo{}objectИнформация о бесплатном (стартовом) периоде подписки. Заполняется только для подписок с бесплатным периодом.Нетсм. ниже
promoPriceInfo{}objectИнформация о стартовом промо-периоде подписки. Заполняется только при наличии промо-периода.Нетсм. ниже

introductoryPriceInfo{}

АтрибутТипОписаниеПример
introductoryPriceCurrencyCodestringКод валюты ISO-4217 для начальной цены.RUB
introductoryPriceAmountMicrosstringНачальная цена (в микроединицах).59900000
introductoryPricePeriodstringПериод начальной цены в формате ISO-8601 (P1W, P1M, P3M, P6M, P1Y).P1Y
introductoryPriceCyclesstringКоличество расчётных периодов предложения.1

promoPriceInfo{}

АтрибутТипОписаниеПример
promoPriceCurrencyCodestringКод валюты ISO-4217 для промо-цены.RUB
promoPriceAmountMicrosstringНачальная промо-цена (в микроединицах).59900000
promoPricePeriodstringПериод начальной цены (ISO-8601).P1Y
promoPriceCyclesstringКоличество расчётных периодов промо-предложения.1

Пример успешного ответа

{
"code": "OK",
"message": "Successful result",
"body": {
"startTimeMillis": "1694431707000",
"expiryTimeMillis": "1697083457000",
"autoRenewing": 1,
"developerPayload": "External id = 1",
"priceCurrencyCode": "RUB",
"priceAmountMicros": "749000000",
"countryCode": "RU",
"paymentState": 1,
"cancelReason": 0,
"userCancellationTimeMillis": "1697083457000",
"orderId": "3352E..1",
"acknowledgementState": 1,
"externalAccountId": "any_string",
"kind": "androidpublisher#subscriptionPurchase",
"purchaseType": 0,
"introductoryPriceInfo": {
"introductoryPriceCurrencyCode": "RUB",
"introductoryPriceAmountMicros": "59900000",
"introductoryPricePeriod": "P1Y",
"introductoryPriceCycles": "1"
},
"promoPriceInfo": {
"promoPriceCurrencyCode": "RUB",
"promoPriceAmountMicros": "59900000",
"promoPricePeriod": "P1Y",
"promoPriceCycles": "1"
}
},
"timestamp": "2025-08-11T14:16:02.236Z"
}

Пример ответа с ошибкой

{
"code": "ERROR",
"message": "Bad request",
"body": null,
"timestamp": "2024-07-29T12:00:00.000Z"
}

Валидация запроса

При получении запроса проверяется токен авторизации, полученный методом получения токена авторизации:

  • владелец и/или приложение не должны быть заблокированы;
  • токен должен быть действительным;
  • подписка должна принадлежать приложению компании, получившей доступ к Public API.