Игрок заплатил за 500 кристаллов, но приложение упало, и кристаллы не начислились
Поток покупки кристаллов: оплата прошла → приложение сразу завершает транзакцию (finish в StoreKit, consumeAsync в Google Play) → отправляет запрос на сервер начислить кристаллы. Изредка приложение падает или теряет сеть между завершением транзакции и начислением. Пишут в поддержку: «деньги списали, кристаллов нет».
Как правильно выстроить порядок?
- Сначала начислить на сервере, потом завершить
- Начислять кристаллы локально, сервер позже
- Повторять запрос на сервер пять раз подряд
- Завершать транзакцию до показа окна оплаты
