Как справиться с неудачными долгими покупками в приложении - PullRequest
0 голосов
/ 03 августа 2020

Это все о расходных материалах в покупках приложений, и я использую библиотеку биллинга com.android.billingclient:billing:3.0.0

Мое приложение правильно обрабатывает класси c Покупки в приложении, но я не уверен, как справиться с "Медленно тестовая карта, отклоняется через несколько минут ».

Если я куплю товар с этой тестовой картой, billingResult.getResponseCode вернет 0 с надписью OK, а PURCHASE_STATE будет 2, что означает PENDING. Это нормально. Теперь я жду несколько минут.

Мое приложение при каждом запуске запрашивает, есть ли еще не использованные покупки (с billingClient.queryPurchases). Затем он перебирает все покупки, проверяет их и, если все в порядке, использует покупку. В этом случае покупка PENDING все еще существует, но не может быть использована, потому что это все еще PENDING. В документах говорится, что вы должны потреблять покупки, только если они PURCHASED. Теперь, если пользователь хочет купить товар снова (потому что, с его точки зрения, первый уже отказал), я получаю код возврата 7 при вызове billingClient.launchBillingFlow, что означает ITEM_ALREADY_OWNED. Теперь я хотел бы использовать покупку, но она все еще PENDING, поэтому моя проверка не удалась (израсходовано только PURCHASED товаров).

Как мне поступить в таких случаях? Просто consumeAsync после billingClient.launchBillingFlow возвращает ITEM_ALREADY_OWNED, даже если написано PENDING? Как я с этим справляюсь сейчас, пользователь никогда не сможет купить тот же самый товар снова (пока покупка не истечет через 14 дней или что-то в этом роде?).

...