Справочник API
Проверка Google Play
/v1/google-play/verifyПроверяет токен покупки Google Play с помощью сервисного аккаунта, привязанного к этому API-ключу (консоль → API-ключи → Изменить → Проверка подписок Google Play). Ответ приходит напрямую от Google; шлюз ничего не списывает, а что открыть пользователю, решает ваше приложение. Ответы кешируются на одну минуту для каждого токена.
#Параметры запроса
purchase_tokenstringобязательноТокен покупки из Play Billing. В Flutter in_app_purchase это purchaseDetails.verificationData.serverVerificationData.
subscribed равно true для любой реальной подписки этого приложения, включая истёкшие; active равно true, только пока подпиской можно пользоваться. Отменённые подписки остаются active до expiry_time, поскольку отключено лишь автопродление. in_trial равно true, пока текущий период — бесплатный пробный; expiry_time в этом случае — момент окончания пробного периода. Для неизвестных токенов возвращается subscribed false и state NOT_FOUND со статусом 200.
Настройка Google, вызов из приложения на Flutter и выбор того, что открывать пользователю, разобраны в руководстве. Подписки Google Play в вашем приложении →
Каждый вызов, включая ответы из кеша и ошибки, отображается в разделе Консоль → Журнал запросов как бесплатная строка «Проверка Google Play» у ключа, который его сделал, — с результатом, ID заказа и последними символами токена. Искать там можно по полному токену покупки, его последним символам или ID заказа. Эти строки не учитываются в количестве запросов.
#Связанные ошибки
- 400 invalid_requestТело не в формате JSON или отсутствует purchase_token.
- 400 google_play_not_configuredДля этого API-ключа ещё не указаны имя пакета и сервисный аккаунт.
- 401Bearer-токен недействителен или отсутствует.
- 429Лимит вызовов проверки на ключ: по умолчанию 120 в минуту, поддержка может повысить его для конкретного ключа. Лимит указан в настройках Google Play ключа. Дождитесь Retry-After и используйте последний полученный ответ.
- 502 google_play_api_disabledВ проекте Google Cloud сервисного аккаунта не включён Google Play Android Developer API. Включите его и повторите через несколько минут.
- 502 google_play_permission_deniedGoogle отказал в доступе: пригласите сервисный аккаунт в Play Console с правами на просмотр финансовых данных и управление заказами и подписками. Новые права могут вступать в силу до суток.
- 502 google_play_credentials_invalidGoogle отклонил сохранённый ключ сервисного аккаунта. Загрузите новый в настройках API-ключа.
- 503 google_play_unavailableGoogle не ответил вовремя. Повторите через несколько секунд.
#Пример запроса
curl https://www.aisplice.store/v1/google-play/verify \
-H "Authorization: Bearer sk-YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"purchase_token": "PURCHASE_TOKEN_FROM_PLAY_BILLING"}'#Ответ
{
"package_name": "com.example.app",
"subscribed": true,
"active": true,
"in_trial": false,
"state": "SUBSCRIPTION_STATE_ACTIVE",
"product_id": "vip_monthly",
"expiry_time": 1793000000,
"auto_renewing": true,
"acknowledged": true,
"test_purchase": false,
"order_id": "GPA.3300-1111-2222-44444..2",
"checked_at": 1790400000
}Проблема не решена?
Пришлите нам ID запроса или текст ошибки, и мы разберёмся.