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

Получение данных подписки (V4)

Важно

Метод работает только с подписками, оформленными через Pay SDK.

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

подсказка

Если не знаете с чего начать, прочтите инструкцию в сценариях использования.

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

GET
https://public-api.rustore.ru/public/v4/subscription/{packageName}/{subscriptionId}/{purchaseId}
АтрибутТипОписаниеОбязательностьРасположениеПример
Public-TokenstringJWE-токен авторизации в Public API RuStore.
Как получить токен авторизации
ДаheaderN/A
packageNamestringНаименование пакета приложения.Даpathcom.MashaAndTheBear.HairSalon
subscriptionIdstringКод продукта-подписки.
Указывается разработчиком при создании продукта в RuStore Консоли.

Как создать подписку.
Даpathdaily_sub
purchaseIdstringИдентификатор покупки в формате UUID. Можно получить из результата покупки через SDK, из уведомления на сервер или запросом информации о покупке.Даpath3aa0c7bd-964e-4562-b218-fe365adb4ae3

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

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

body{}

АтрибутТипОписаниеОбязательностьПример
startTimeMillisstringВремя предоставления подписки в миллисекундах с начала эпохи.Да1694431707000
expiryTimeMillisstringВремя истечения срока действия подписки в миллисекундах с начала эпохи.Да1697083457000
autoRenewingbooleanБудет ли подписка автоматически продлеваться по истечении текущего срока действия.Даfalse
developerPayloadstringСтрока с дополнительной информацией о заказе, которую вы можете установить при подтверждении покупки в SDK.НетExternal id = 1
priceCurrencyCodestringКод валюты ISO 4217 для цены подписки.ДаRUB
priceAmountMicrosstringЦена подписки. Цена выражается в микроединицах, где 1 000 000 микроединиц представляет собой одну единицу валюты. Например, если цена подписки составляет 100 рублей, цена AmountMicros равна 100000000.Да749000000
countryCodestringКод страны/региона выставления счетов пользователя на момент предоставления подписки.ДаRU
paymentStatenumberСостояние оплаты подписки. Возможные значения:
0 — ожидание платежа
1 — платёж получен;
2 — бесплатная пробная версия.

Отсутствует для отмененных подписок с истекшим сроком действия.
Нет, только для активных подписок1
cancelReasonnumberПричина, по которой подписка была отменена. Возможные значения:
0 — подписка отменена пользователем
1 — подписка была отменена системой, например, из-за проблемы с оплатой
3 - подписка отменена разработчиком
Нет, только для отмененных подписок со статусом CLOSED0
userCancellationTimeMillisstringВремя отмены подписки пользователем в миллисекундах с начала эпохи.Нет, только для отмененных подписок со статусом CLOSED1697083457000
orderIdstringИдентификатор последнего счета, связанного с покупкой подписки. Если счетов по подписке более одного, к идентификатору добавляется их количество через разделитель "..", начало отсчёта от 0Да3352..1
acknowledgementStatenumberСостояние подтверждения продукта подписки. Возможные значения:
0 — ещё не подтверждено;
1 — подтверждено.
Да1
externalAccountIdstringИдентификатор пользователя во внешнем приложении.Нет, только если задан при старте покупки appUserIdany_string
kindstringВсегда androidpublisher#subscriptionPurchase.Даandroidpublisher#subscriptionPurchase
purchaseTypenumberТип покупки: 0 — тестовая подписка.Нет, только для тестовых подписок, для реальных не передаётся0
introductoryPriceInfo{}objectИнформация о бесплатном периоде подписки. Это поле не указывает, что подписка в настоящее время находится в бесплатном периоде.Нет, только если у подписки настроен бесплатный периодсм. ниже
promoPriceInfo{}objectИнформация о стартовом периоде подписки. Заполняется только при наличии стартового периода. Это поле не указывает, что подписка в настоящее время находится в стартовом периоде.Нет, только если у подписки настроен стартовый периодсм. ниже

introductoryPriceInfo{}

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

promoPriceInfo{}

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

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

{
"code": "OK",
"message": "Successful result",
"body": {
"startTimeMillis": "1694431707000",
"expiryTimeMillis": "1697083457000",
"autoRenewing": true,
"developerPayload": "External id = 1",
"priceCurrencyCode": "RUB",
"priceAmountMicros": "749000000",
"countryCode": "RU",
"paymentState": 1,
"cancelReason": 0,
"userCancellationTimeMillis": "1697083457000",
"orderId": "3352..1",
"acknowledgementState": 1,
"externalAccountId": "any_string",
"kind": "androidpublisher#subscriptionPurchase",
"purchaseType": 0,
"introductoryPriceInfo": {
"introductoryPriceCurrencyCode": "RUB",
"introductoryPriceAmountMicros": "0",
"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"
}

Список ошибок

MessageРасшифровка
Purchase not foundПокупка не найдена. Убедитесь, что указан корректный идентификатор покупки.
ForbiddenЗапрещено. Проверьте правильность токена авторизации и параметров запроса.
Something went wrongЧто-то пошло не так. Попробуйте позже или обратитесь в поддержку.