Я использую кошелек Google в качестве своего платежного шлюза, после покупки продукта Google дал мне ответ ниже, который
{
"orderId":"12999763169054705758.1371079406387615",
"packageName":"com.example.app",
"productId":"exampleSku",
"purchaseTime":1345678900000,
"purchaseState":0,
"developerPayload":"bGoa+V7g/yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ",
"purchaseToken":"rojeslcdyyiapnqcynkjyyjh"
}
Я пытаюсь использовать проверку квитанции, которую недавно представила Google Play. В консоли разработчика Google я сделал ключ сертификата с помощью учетной записи службы в разрешении. Но я не понимаю, как использовать проверку квитанции после покупки продукта в магазине Google Play.
Так может кто - нибудь , пожалуйста , помогите мне , как сделать Квитанцию проверку на InApp
покупках.
android
in-app-purchase
android-pay
Бинил Сурендран
источник
источник
Ответы:
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
будут меняться в зависимости от продолжительности подписки.Удачного подтверждения!
источник
Ответ Марка отличный. Я только добавлю, что клиентская библиотека API разработчика Google Play для Java значительно упрощает подключение с вашего сервера к серверам Google Play. Библиотека автоматически обрабатывает обновление токена аутентификации, а также предоставляет безопасный API, поэтому вам не нужно возиться с URL-адресами.
Вот как вы настраиваете
Publisher
синглтон:httpTransport = GoogleNetHttpTransport.newTrustedTransport(); jsonFactory = JacksonFactory.getDefaultInstance(); credential = GoogleCredential.fromStream(getClass().getResourceAsStream("/path/to/your/key.json")).createScoped(Collections.singleton(AndroidPublisherScopes.ANDROIDPUBLISHER)); publisher = new AndroidPublisher.Builder(httpTransport, jsonFactory, credential).setApplicationName(APP_NAME).build();
Следующий код запрашивает покупку продукта:
Вы можете аналогичным образом запросить подписки:
SubscriptionPurchase sub = publisher.purchases().subscriptions().get(PACKAGE_NAME, sku, token).execute(); sub.getAutoRenewing(); sub.getCancelReason(); ...
источник
APP_NAME = APP_PACKAGE_NAME
.getClass().getResourceAsStream(...
использоватьnew FileInputStream(...
.credential.refreshToken();
между получением учетных данных и издателем.@ marc-greenstock дал отличный ответ, однако есть очень важная вещь о проверке квитанции с помощью Google Play Android Developer API.
Если у вас возникли проблемы с использованием этого API, и вы добавили контент для продажи ДО предоставления разрешения или привязки к своей учетной записи службы, вам необходимо открыть «Продукты в приложении» и выполнить некоторое обновление. Вы можете, например, отредактировать описание вашего продукта и сохранить. Вы должны немедленно получить разрешение.
Несколько часов я думал, что я сделал не так ...
источник
Это отличный ответ. Еще одна проблема, с которой мы столкнулись, следуя указанию, заключалась в том, что учетная запись службы не отображалась в консоли Google Play. В итоге мы нашли это решение, которое поможет: учетная запись службы не отображается в консоли Google после создания
По сути, перейдите в IAM в консоли Google API и добавьте новую учетную запись службы, после чего она появится в консоли Google Play. снимок экрана
источник