Валидация подписки
Метод позволяет получить информацию о подписке пользователя (в формате Google) по packageName
, subscriptionId
и purchaseId
.
Параметры взаимодействия
GET
https://public-api.rustore.ru/public/v4/subscription/{packageName}/{subscriptionId}/{purchaseId}
Атрибут | Тип | Описание | Обязательность | Расположение | Пример |
---|---|---|---|---|---|
Public-Token | string | JWE-токен авторизации в Public API RuStore. Как получить токен авторизации | Да | header | N/A |
packageName | string | Наименование пакета приложения. | Да | path | com.MashaAndTheBear.HairSalon |
subscriptionId | string | Код продукта-подписки. | Да | path | daily_sub |
purchaseId | string (UUID) | Идентификатор покупки. | Да | path | 19b873b0-a3a9-4578-be99-1ed0fc8a73d0 |
Параметры ответа
Атрибут | Тип | Описание | Обязательность | Расположение | Пример |
---|---|---|---|---|---|
code | string | Код ответа. | Да | body | OK / ERROR |
message | string | Расшифровка кода ответа. | Нет | body | Successful result |
body{} | object | Тело ответа. | Нет | body | N/A |
timestamp | string | Время ответа. | Да | body | 2024-07-29T12:00:00.000Z |
body{}
Поля объекта соответствуют формату Google-подписок.
Атрибут | Тип | Описание | Обязательность | Пример |
---|---|---|---|---|
startTimeMillis | string | Время предоставления подписки в миллисекундах с начала эпохи. | Да | 1694431707000 |
expiryTimeMillis | string | Время истечения срока действия подписки в миллисекундах с начала эпохи. | Да | 1697083457000 |
autoRenewing | integer(int32) | Будет ли подписка автоматически продлеваться по окончании текущего срока. | Да | 1 |
developerPayload | string | Строка с дополнительной информацией о покупке. | Нет | External id = 1 |
priceCurrencyCode | string | Код валюты ISO-4217 для цены подписки. | Да | RUB |
priceAmountMicros | string | Цена подписки в микроединицах (1 000 000 micro = 1 единица валюты). | Да | 749000000 |
countryCode | string | Код страны/региона выставления счетов пользователя на момент предоставления подписки. | Да | RU |
paymentState | integer(int32) | Состояние оплаты: 0 — ожидание платежа; 1 — платёж получен; 2 — бесплатная пробная версия. | Да | 1 |
cancelReason | integer(int32) | Причина отмены или непродления: 0 — пользователь отменил; 1 — отмена разработчиком. | Нет | 0 |
userCancellationTimeMillis | string | Время отмены подписки пользователем (мс с начала эпохи). | Нет | 1697083457000 |
orderId | string | Идентификатор последнего счёта, связанного с покупкой подписки. | Нет | 3352E..1 |
acknowledgementState | integer(int32) | Состояние подтверждения продукта: 0 — ещё не подтверждено; 1 — подтверждено. | Да | 1 |
externalAccountId | string | Идентификатор пользователя во внешнем приложении (передаётся, если задан при старте покупки appUserId ). | Нет | any_string |
kind | string | Всегда androidpublisher#subscriptionPurchase . | Да | androidpublisher#subscriptionPurchase |
purchaseType | integer(int32) | Тип покупки: 0 — тестовая подписка. | Нет | 0 |
introductoryPriceInfo{} | object | Информация о бесплатном (стартовом) периоде подписки. Заполняется только для подписок с бесплатным периодом. | Нет | см. ниже |
promoPriceInfo{} | object | Информация о стартовом промо-периоде подписки. Заполняется только при наличии промо-периода. | Нет | см. ниже |
introductoryPriceInfo{}
Атрибут | Тип | Описание | Пример |
---|---|---|---|
introductoryPriceCurrencyCode | string | Код валюты ISO-4217 для начальной цены. | RUB |
introductoryPriceAmountMicros | string | Начальная цена (в микроединицах). | 59900000 |
introductoryPricePeriod | string | Период начальной цены в формате ISO-8601 (P1W , P1M , P3M , P6M , P1Y ). | P1Y |
introductoryPriceCycles | string | Количество расчётных периодов предложения. | 1 |
promoPriceInfo{}
Атрибут | Тип | Описание | Пример |
---|---|---|---|
promoPriceCurrencyCode | string | Код валюты ISO-4217 для промо-цены. | RUB |
promoPriceAmountMicros | string | Начальная промо-цена (в микроединицах). | 59900000 |
promoPricePeriod | string | Период начальной цены (ISO-8601). | P1Y |
promoPriceCycles | string | Количество расчётных периодов промо-предложения. | 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.