Google обеспечивает проверку квитанции через API разработчика Google Play. В API есть две конечные точки, которые могут вас заинтересовать больше всего: Purchases.products: get и Purchases.subscriptions: get .
Purchases.products: get
может использоваться для подтверждения покупки продукта без автоматического продления, то Purchases.subscriptions: get
есть для проверки и повторной проверки подписок на продукт с автоматическим продлением.
Для того, чтобы использовать любую конечную точку вы должны знать packageName
, productId
, purchaseToken
все это можно найти в полезной нагрузке вы получили на покупке. Вам также понадобится, access_token
который вы можете получить, создав учетную запись службы Google API.
Чтобы начать работу с учетной записью службы, сначала перейдите на страницу настроек доступа к API консоли разработчика Google Play и нажмите кнопку «Создать новый проект»:
Теперь вы должны увидеть новый связанный проект и несколько новых разделов. В разделе «Учетная запись службы» нажмите кнопку «Создать учетную запись службы».
Вам будет представлено информационное окно с инструкциями по созданию учетной записи службы. Щелкните ссылку на консоль разработчика Google, и откроется новая вкладка.
Теперь нажмите Create new Client ID, выберите Service account из вариантов и нажмите Create Client ID.
Будет загружен файл JSON, это ваш веб-токен JSON, который вы будете использовать для обмена, access_token
поэтому сохраняйте его в безопасности.
Затем переключите вкладки обратно в консоль разработчика Google Play и нажмите Готово в информационном поле. Вы должны увидеть свою новую учетную запись службы в списке. Щелкните Предоставить доступ рядом с адресом электронной почты учетной записи службы.
Затем в разделе «Выберите роль для этого пользователя» выберите «Финансы» и нажмите «Добавить пользователя».
Теперь вы настроили свою учетную запись службы, и у нее есть все необходимые права для проверки квитанций. Далее следует обменять ваш JWT на access_token.
Срок access_token
действия истекает через час обмена, поэтому вам понадобится код сервера, чтобы справиться с этим, и Google предоставил несколько библиотек на многих языках для этого (список не исчерпывающий):
Я не буду вдаваться в подробности, потому что существует множество документации о том, как использовать эти библиотеки, но я упомяну, что вы хотите использовать область https://www.googleapis.com/auth/androidpublisher
действия OAuth2, объект client_email
JWT в качестве issuer
и открытый ключ, который можно получить из private_key
и кодовая фраза notasecret
будет использоваться для signing_key
.
Как только у вас будет access_token
все готово (по крайней мере, в течение следующего часа, вы захотите запросить новый, следуя той же процедуре, описанной в предыдущем абзаце).
Чтобы проверить статус покупки расходных материалов (без автоматического продления), отправьте http- get
запрос по адресу :https://www.googleapis.com/androidpublisher/v2/applications/com.example.app/purchases/products/exampleSku/tokens/rojeslcdyyiapnqcynkjyyjh?access_token=your_access_token
Если вы получили код ответа 200 http, значит, все прошло по плану и ваша покупка действительна. 404 означает, что ваш токен недействителен, поэтому покупка, скорее всего, была попыткой мошенничества. 401 будет означать, что ваш токен доступа недействителен, а 403 будет означать, что у вашей служебной учетной записи недостаточно доступа. Убедитесь, что вы включили Финансы. для учетной записи доступа в консоли разработчика Google Play.
Ответ от 200 будет выглядеть примерно так:
{
"kind": "androidpublisher#productPurchase",
"purchaseTimeMillis": long,
"purchaseState": integer,
"consumptionState": integer,
"developerPayload": string
}
Описание каждого свойства см. На странице https://developers.google.com/android-publisher/api-ref/purchases/products. .
Подписки похожи, но конечная точка выглядит так:
https://www.googleapis.com/androidpublisher/v2/applications/packageName/purchases/subscriptions/subscriptionId/tokens/token?access_token=you_access_token
И ответ должен содержать следующие свойства:
{
"kind": "androidpublisher#subscriptionPurchase",
"startTimeMillis": long,
"expiryTimeMillis": long,
"autoRenewing": boolean
}
См. Https://developers.google.com/android-publisher/api-ref/purchases/subscriptions описания свойств и обратите внимание, что startTimeMillis
иexpiryTimeMillis
будут меняться в зависимости от продолжительности подписки.
Удачного подтверждения!