Как получить историю покупки для IAP с BillingClient - PullRequest
0 голосов
/ 23 января 2019

Как сказано в документации:

queryPurchaseHistoryAsync():

Returns the most recent purchase made by the user for each SKU, even if that purchase is expired, canceled, or consumed.

Допустим, я хотел бы сделать IAP для пользователя, чтобы навсегда удалял рекламу из моего приложения.

Как мне решить с новой установкой, если этот пользователь уже приобрел этот IAP , если эта функция также возвращает "отмененный" IAPS?

Я бы хотел запросить фактически приобретенного IAPS, но не все. Так как пользователь может разблокировать бесплатную версию Ad с отмененным IAP.


Что еще хуже, класс Purchase не имеет статуса типа "отменен" или "потреблен" Я не могу определить состояние приобретенного пользователем IAPS.

Я что-то здесь упускаю?

Заранее спасибо

1 Ответ

0 голосов
/ 25 января 2019

В документации клиента выставления счетов указано, что он проверяет пользователя.

Тогда возникает вопрос: Кто такой пользователь

Если вы посмотрите на шаги, предпринятые для API биллинга на https://developer.android.com/google/play/billing/billing_library_overview, то увидите, что необходимо подключение к Google Play.

То, что происходит тогда, это то, что текущий пользователь на Android, учетная запись, с которой он вошел в Google Play, и его мобильное устройство определено как пользователь.

Так что, если они купили его через приложение Google Play в приложении, оно всегда будет назначено этому пользователю в Google Play, и это то, что запрашивается этим. Независимо от того, на каком устройстве они вошли, планшет, смарт-часы, телефон, телевизор и т. Д. ...

Как получить список фактически купленных продуктов

Вместо того, чтобы использовать асинхронную передачу, которая дает вам все, в том числе брошенные корзины покупок, я предлагаю вам использовать https://developer.android.com/reference/com/android/billingclient/api/BillingClient#querypurchases

Таким образом можно получить информацию о покупках для всех предметов, фактически купленных и оплаченных в вашем приложении. Этот метод использует кэш приложения Google Play Store без инициирования сетевого запроса.

Примечание. Рекомендуется в целях безопасности совершать покупки. подтверждение на вашем бэкэнде (если оно есть), позвонив следующий API: https://developers.google.com/android-publisher/api-ref/purchases/products/get

Если вы прочитаете эту ссылку API, легко проверить с помощью онлайн-кэша, была ли покупка действительной с помощью простого запроса GET.

Лично я бы встроил проверку, если телефон подозревается в качестве рута, прежде чем выполнять ручную проверку данных с помощью API покупок, который отправляет запрос в магазин.

Телефоны без рута имеют более высокий уровень доверия, так как пользователь, вероятно, не очень разбирается в технологиях и не будет иметь ни малейшего понятия о том, как обойти такие проверки, и кэш Google Play будет регулярно обновляться, отражая доверие данные.

Когда телефон подозревается в том, что он рутирован (вы можете читать защищенные каталоги или записывать в них), а затем выполнять онлайн-проверку, купили ли они вещи каждый раз, когда вы считаете это необходимым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...