Это все о расходных материалах в покупках приложений, и я использую библиотеку биллинга 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 дней или что-то в этом роде?).