Справочник API

Проверка Google Play

POST/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"}'

#Ответ

response.json
{
  "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 запроса или текст ошибки, и мы разберёмся.