Мне трудно найти полную документацию онлайн.Итак, у меня есть БД Cloud Firestore.Один Не Расходуемый, который открывает премиум-версию.Краткое руководство , которое я нашел, рекомендует:
Чтобы проверить информацию о покупке на доверенном сервере, выполните следующие действия:
Убедитесь, что устройство-сервер рукопожатия безопасен.
Проверьте сигнатуру возвращенных данных и orderId и убедитесь, что orderId является уникальным значением, которое вы ранее не обрабатывали.
- Убедитесь, что ключ вашего приложения подписал INAPP_PURCHASE_DATA, который вы обрабатываете.
- Проверьте ответы на покупки, используя ресурс ProductPurchase (для продуктов в приложении) или ресурс SubscriptionPurchase (для подписок) из API разработчика Google Play.Этот шаг особенно полезен, поскольку злоумышленники не могут создавать ложные ответы на ваши запросы на покупку в Play Store.
Какой сервер я использую?Достаточно ли облачного хранилища для завершения этой проверки?
Как мне Проверить, что ключ вашего приложения подписал INAPP_PURCHASE_DATA, который вы обрабатываете
Нужно ли мне читать каждый идентификатор заказа каждый раз, когда пользователь совершает покупку?Разве это не может очень быстро привести к тысячам операций чтения в БД?
Вот кодовый блок onPurchasesUpdated
, в котором я собираюсь реализовать проверку:
@Override
public void onPurchasesUpdated(BillingResult billingResult, @Nullable List<Purchase> purchases) {
if (billingResult.getResponseCode() == BillingResponseCode.OK
&& purchases != null) {
int index = 0;
for (Purchase purchase : purchases) {
if(purchase.getSignature().equals( /*Somehow check igned the INAPP_PURCHASE_DATA HERE?*/) || purchase.getOrderId().equals(purchases.get(index).getOrderId())) {
//Invalid
getMessage("Invalid. Order cancelled");
return;
} else {
handlePurchase(purchase);
}
}
} else if (billingResult.getResponseCode() == BillingResponseCode.USER_CANCELED) {
getMessage("Payment Cancelled");
} else {
getMessage("Error. Try Again");
}
}
Какие шаги мне следует предпринять?Что вы делаете для проверки IAP?Почему столовая очень плоха в этом.
Стоит ли даже усилий?Я не ожидаю, что это приложение будет скачано миллионы раз.Должен ли я просто пропустить это?