Why Android BillingClient v2 slow credit card test never cancels?
I also discovered that in my tests, although I also remember that using the deprecated AIDL a user of my app took 24 hours to validate the purchase. I have considered the case of the refused slow card taking hours may occur and I have done the following:
If purchase.getPurchaseState() == Purchase.PurchaseState.PENDING
then I show a dialog that says: Waiting for purchase validation. Sometimes it can last several hours
If the user tries to buy the item again and billingResult.getResponseCode() == BillingClient.BillingResponseCode.ITEM_ALREADY_OWNED
then I show a dialog that says: Cannot buy the item. You already own it or a previous purchase is still pending for validation
Hope it will help
It actually declines a few minutes later. I realized that if you check "Order management" on Play Console you'll see it already declined.
The issue is the local cache of google play billing. I guess that updating this cache for billing tests is very low priority, you can clear it like this:
adb shell pm clear com.android.vending
I had the same issue. On launchBillingFlow
you get a BillingResponseCode.ITEM_ALREADY_OWNED
. the purchase returns PurchaseState.PENDING
. If you consumeAsync
immediately after, its response is BillingResponseCode.DEVELOPER_ERROR
, but after a few minutes (or whatever delay the transaction takes to fail) you can consumeAsync
again then it returns BillingResponseCode.ITEM_NOT_OWNED
, now you are allowed to retry the launchBillingFlow
again. like Lluis Felisart said create a dialog to ask the user to clear the pending,