Я столкнулся с проблемой прерывания работы с версией 3 биллинга приложений с помощью IABHelper, предоставленной Google.
Перед тем, как начать новую покупку, я проверяю покупки без покупки с queryInventoryAsync. Если найдено, я использую любые неиспользованные покупки и начинаю новую транзакцию, если не переходить напрямую, чтобы начать новую транзакцию. 99% времени он отлично работает.
Иногда, когда queryInventoryAsync не возвращает неиспользуемые покупки, следующий сбой запускает с помощью Response: 7: Item уже принадлежит.
INFO [IABHelper] Starting async operation: refresh inventory
INFO [IABHelper] Querying owned items, item type: inapp
INFO [IABHelper] Package name: jp.co.mycompany.myapp
INFO [IABHelper] Calling getPurchases with continuation token: null
INFO [IABHelper] Owned items response: 0
INFO [IABHelper] Continuation token: null
INFO [IABHelper] Querying SKU details.
INFO [IABHelper] queryPrices: nothing to do because there are no SKUs.
INFO [IABHelper] Querying owned items, item type: subs
INFO [IABHelper] Package name: jp.co.mycompany.myapp
INFO [IABHelper] Calling getPurchases with continuation token: null
INFO [IABHelper] Owned items response: 0
INFO [IABHelper] Continuation token: null
INFO [IABHelper] Querying SKU details.
INFO [IABHelper] queryPrices: nothing to do because there are no SKUs.
INFO [IABHelper] Ending async operation: refresh inventory
INFO [IABHelper] Constructing buy intent for jp.co.mycompany.myapp.myitem, item type: inapp
INFO [IABHelper] Launching buy intent for jp.co.mycompany.myapp.myitem Request code: 1001
INFO [IABHelper] Ending async operation: launchPurchaseFlow
INFO [IABHelper] Purchase canceled - Response: 7:Item Already Owned
queryInventoryAsync говорит, что пользователь не владеет этим элементом, но launchPurchaseFlow говорит, что пользователь делает.
Странно после ожидания (иногда несколько минут, иногда больше) проблема решает сам.
Кто-нибудь испытал что-то подобное?
Для справки я использую версию IABHelper, обновленную 15 марта.