Я не хочу, чтобы у меня была возможность вернуть пользователя для покупки приложения в расходном материале, но только в странном случае, когда пользователь запрашивает возмещение, либо через Google, либо через разработчика покупки приложения расходного материала.
Там нет никакого способа обработки возмещений через In App Billing api V3. Вся документация указывает на V2 api, используя широковещательные приемники. Это нисколько не помогает мне.
Итак, как возмещение, обработанное в In App Billing v3 api? Я предполагаю, что для него нет расходных материалов, возврат будет обработан, а затем google обработает обработку через их бэкэнд, а затем, когда будет проведена процедура getPurchaseState(), она вернет значение 2 (возвращается). Если это так, это отлично работает для продукта NON CONSUMABLE.
Когда вызывается запрос getPurchaseState() на потребительскую покупку, он возвращает null. Это предполагает, что покупка была ранее успешной и что элемент был израсходован и подготовлен. Я полагаю, что я мог хранить предметы покупки локально в приложении, но тогда до сих пор нет способа получить уведомление о возврате этого продукта. Я могу проверить состояние покупки, но опять же, он вернет null, если он уже был использован и уже подготовлен.
Небольшое обходное решение, о котором я сейчас думаю, заключается в том, чтобы не покупать покупку при предоставлении ресурсов. Так что он остается "неповрежденным" в соответствии с google и остается в их базе данных. Теперь, если запрашивается возмещение, я принимаю вызов getPurchaseState(), так как потребляемый будет возвращать возвращенный, поэтому логика приложения может затем вычесть/вычесть зарезервированные расходные материалы из инвентаря пользователя. Если пользователь захочет повторно выкупить этот расходный материал, то перед тем, как будет сделан запрос IAB api для покупки, получите покупкуState() и/или hasPurchase(), и если там уже есть покупка, используйте этот элемент без предоставления ресурсов, это позволит пользователю выкупить это расходное. Только проблема с этим обходным путем заключается в том, что если пользователь хочет повторно приобрести тот же самый потребляемый продукт, как только выберете опцию выкупа, элемент должен потребляться независимо от того, успешно ли они выкупают продукт или нет. Поэтому, если пользователь не завершил покупку, продукт уже потребляется, и я вернусь туда, где я сейчас не могу проверить состояние возврата на расходные материалы.
Я не могу придумать какой-либо другой способ сделать возмещение за потребительский продукт в приложении, и вот что я прошу здесь. Является ли так, как я думал, достаточно, или есть правильный способ обработки возмещений с использованием IAP v3 на расходных материалах? Я думал, у меня есть 3 варианта:
- Не предлагайте возмещения за расходные материалы, за исключением/исключения, но проблема заключается в том, что пользователь запрашивает возврат через Google, а не через разработчика, что приводит к варианту 3 ниже)
- Найдите обходное решение (либо правильно через api, либо с моим предлагаемым обходным решением)
- Предлагайте возврат, но не имеете прикладной логики для вычитания/вычитания расходных материалов. В этом случае пользователи могут воспользоваться бесплатными покупками.