Я разрабатываю приложение с помощью Unity (для Android и iOS). Я использую плагин SOOMLA, чтобы позволить пользователям приобретать драгоценные камни (виртуальную валюту) при покупке приложения.
Пользователи и Gems и все другие логические игры проходят через мой сервер на Azure.
Я хочу, чтобы следующая процедура выполнялась как одна транзакция каким-то образом:
- Пользователь покупает драгоценные камни с помощью IAP
- Приложение уведомляет сервер
- Сервер проверяет данные о покупке и обновлениях
Но если интернет-соединение разрывается между шагами 1 и 2, пользователь платит за драгоценные камни, которые он не получил (не хорошо!)
Итак, мой нынешний подход таков:
- Пользователь инициирует покупку
- Приложение уведомляет сервер
- Сервер слепо обновляет данные соответственно.
- Пользователь покупает драгоценные камни с помощью IAP
- Если покупка отменена, уведомите сервер, чтобы отменить его
Таким образом, пользователю гарантированно получить его приобретенные драгоценные камни, но я не гарантированно заплачу (не очень...)
Примечание. Я не хочу управлять пользователями Gems в самом магазине. Я хочу все на своем сервере. Поэтому баланс SOOMLA для меня не имеет смысла. Меня это не волнует.
Я думал, что приложение может хранить данные о покупке в постоянном хранилище, пока не удастся уведомить об этом сервер, а затем удалить его. Но я также думал, что это может быть плохим решением. Отсюда этот вопрос.
Я представляю лучшее решение как что-то, что будет правильно обрабатывать этот сценарий:
- Пользователь покупает драгоценные камни с помощью IAP
- IAP успешно
- Интернет распадается
- Мой собственный сервер не уведомлен
- Пользователь удаляет приложение из своего устройства.
-
Пользователь может установить приложение на другие устройства:
- Либо он был обвинен, и он получил драгоценные камни от какой-то магии.
- Или он был возвращен автоматически, так как драгоценные камни не были получены
До сих пор кажется, что это невозможно каким-либо образом, что меня разочаровывает в технологии IAP. Надеюсь на ответы, которые докажут, что я ошибаюсь.
Кажется, что все, что мне когда-либо понадобилось, - это возможность получить историю покупок пользователей с моего сервера с защищенным запросом в Google Play или Apple Store. Но это просто не часть рамки.
Так что делают другие? Каков наилучший подход?