androidgoogle-playgoogle-play-servicesandroid-billingplay-billing-library

Android In-App Billing: Refunded in-app purchases not cancelled


I'm having a trouble with testing my in-app billing.
(using Google Play In-app Billing Version 3 API)

Problem:

Refunded in-app purchases are still present in the purchase list, which is provided by BillingClient.queryPurchases().

When I tried refunding purchases in January, refunded items were gone from the purchase list.

What I did:

  1. purchased some items as a tester.
    (I'm pretty sure a dialog said it's a test purchase.)
  2. refunded them in Google Play Console afterwards.
  3. wait until their payment statuses turned into "Refunded".
  4. cleared caches of Google Play Services & Google Play.
  5. checked my purchases BillingClient.queryPurchases() provides in my app.
  6. waited for a few days. reinstalled my app. All of them didn't work.

Minimal check code:

private val client: BillingClient // provided

fun check() {
    // client.startConnection() already completed here
    client.queryPurchases(BillingClient.SkuType.INAPP)
        .run {
            purchasesList
                .map     { it.originalJson }
                .forEach { Log.d("billing", "json = $it") }
        }
}

What I want to do:

I want to cancel all my test purchases.

Does anyone have any suggestions? Thank you in advance.


Solution

  • If your canceling doesn't remove your purchases from the query result you can consume them. They will then not be available anymore, when you make a new query and can be purchased again.

    int response = client.consumePurchase(3, packageName, purchaseToken);
    

    Managed in-app products are consumable, but subscriptions are not.

    Source: developer.android.com