Подход, связанный с двумя элементами в заголовке этого поста, кажется, противоречит друг другу, и их очень сложно протестировать, и именно эти крайние случаи приводят к недовольству клиентов, когда их приобретенный продукт перестает работать.
Многим обсуждениям Stack Overflow уже более двух лет, они неубедительны и ссылаются на устаревшую библиотеку AIDL, а не на платежную службу Google Play.
Я хочу убедиться, что у пользователя есть автономный доступ к премиум-версии моего Android приложения, которое было приобретено с помощью одноразового нерасходуемого продукта внутри приложения в Google Play. Я также хочу защитить себя от покупателя, который покупает обновление в приложении, активирует его, а затем отменяет / запрашивает возврат средств за покупку и сохраняет доступ к премиум-функции.
В документации указано, что мы можем доверять getPurchasesList()
чтобы всегда возвращать продукты, к которым у покупателя есть доступ: https://developer.android.com/google/play/billing/billing_library_overview
Однако я также вижу противоречивые отчеты о том, что, когда покупатель отключается (например, в долгом путешествии на самолете), Кэш Google за getPurchasesList () в конечном итоге истекает, что приведет к потере доступа клиента к премиум-контенту. Некоторые люди утверждают, что срок действия кеша Google истекает примерно через 12 часов, однако я перевел свой телефон в режим полета на 14 часов и все еще получал ответы от getPurchasesList (), так что, возможно, эти утверждения устарели.
Когда выставляется счет Google срок действия кеша истекает, какова структура ответа? Видно ли это из ответа, в котором покупатель не совершал покупок или получил возмещение за покупку. Допустим, мы получаем пустой ответ от Google по истечении срока действия кеша. Как мы можем точно узнать, что разница между:
getPurchasesList()
не содержит покупок, потому что покупатель никогда не делал покупок. getPurchasesList()
не содержит покупок, потому что покупатель получил возмещение. getPurchasesList()
не содержит покупок, потому что срок действия кеша истек, НО покупатель совершил покупку и является владельцем продукта.
Кажется, очень мало официальной документации об этом важном сценарии, времени жизни кеша, способах его тестирования и т. Д. c. если я где-то чего-то не упускаю.
Я, конечно, могу поддерживать свой собственный кеш продукта, приобретенного клиентом, например. хранить токен, который необходимо обновлять не реже одного раза в 3 дня с помощью Google Billing, иначе вы потеряете доступ, но действительно ли это правильный способ сделать это?