Unity IAP: покупка прошла, сервер не ответил, пакет кристаллов потерян навсегда
public PurchaseProcessingResult ProcessPurchase(PurchaseEventArgs e)
{
backend.GrantAsync(e.purchasedProduct).Forget(); // отправили и не ждём
return PurchaseProcessingResult.Complete;
}
Это классический обработчик Unity IAP. Если в момент покупки сервер недоступен, кристаллы не начисляются, а при следующем запуске покупка больше не приходит. Как правильно?
- Вернуть Pending, подтвердить после ответа сервера
- Начислить кристаллы локально, потом Complete
- Дождаться GrantAsync синхронно через .Result
- Вернуть Complete и повторить покупку при ошибке
