Android 应用内结算:已退款的应用内购买未取消

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

我在测试应用内结算时遇到问题。
(使用 Google Play 应用内结算版本 3 API)

问题:

已退款的应用内购买仍存在于购买列表中,该列表由 BillingClient.queryPurchases() 提供。

当我在 1 月份尝试退款时,已退款的商品从购买列表中消失了。

我做了什么:

  1. 作为测试者购买了一些物品。
    (我很确定对话框说这是一次试购。)
  2. 之后在 Google Play 管理中心退款。
  3. 等到他们的付款状态变成"Refunded"。
  4. 已清除 Google Play 服务和 Google Play 的缓存。
  5. 检查了我的购买 BillingClient.queryPurchases() 在我的应用程序中提供。
  6. 等了几天。重新安装了我的应用程序。都没有用。

最小校验码:

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") }
        }
}

我想做什么:

我想取消我所有的测试购买。

有人有什么建议吗? 提前谢谢你。

基于此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了解更多信息。

如果您的取消没有从查询结果中删除您的购买,您可以使用它们。当您进行新查询并可以再次购买时,它们将不再可用。

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

托管 in-app 产品是消费品,但订阅不是。

来源:developer.android.com