AngryCodingBird
AngryCodingBird

Reputation: 408

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.

Upvotes: 12

Views: 5539

Answers (2)

jekatt
jekatt

Reputation: 221

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

Upvotes: 4

abielita
abielita

Reputation: 13469

Based from this documentation, currently, the In-app Billing API does not provide support for programmatically canceling subscriptions from inside the purchasing app. Then after a user cancels a subscription, the subscription is still active until the expiration date. Thus it stays visible in the Play Store app until the subscription expires. You may check this support page for more information.

Upvotes: 0

Related Questions