使用 Android BillingClient 2.1 检索应用内购买,returns 空列表

Retrieve in-app purchases with Android BillingClient 2.1, returns empty list

我正在尝试使用 Android BillingClient 2.1 检索可用购买的列表(仅一项),如 here 所述。像这样:

private suspend fun querySkuDetails() {
    val skuList = ArrayList<String>()
    skuList.add("premium_upgrade")
    val params = SkuDetailsParams.newBuilder()
    params.setSkusList(skuList).setType(BillingClient.SkuType.INAPP)
    val skuDetailsResult = withContext(Dispatchers.IO) {
        billingClient.querySkuDetails(params.build())
    }
    if (skuDetailsResult.billingResult.responseCode ==  BillingClient.BillingResponseCode.OK && skuDetailsResult.skuDetailsList != null) {
        for (skuDetails in skuDetailsResult.skuDetailsList as List<SkuDetails>) {
            val sku = skuDetails.sku
            val price = skuDetails.price
            if ("premium_upgrade" == sku) {
                premiumUpgradePrice = price
            }
        }
    }
}

在 Play 商店控制台中,我上传了准备商店页面的应用程序并添加了一个名为 "premium_upgrade" 的托管产品。但我还没有发布这个应用程序,因为它缺少这个重要的部分。

出于某种原因 skuDetailsResult.skuDetailsList 总是返回空的。 billingResult中没有debugMessage。所以我有点卡住了。有什么建议吗?

经过一番搜索,我在左侧菜单的下方找到了测试部分。 https://developer.android.com/google/play/billing/billing_testing

在本地测试时,我不得不将 sku 产品 ID 更改为保留的 google ID 之一。因此为了测试,我不得不将 premium_upgrade 更改为 android.test.purchased 然后您可以尝试整个流程。

一旦您对管理产品进行了测试购买,它会说您已经拥有该产品并且您会在那里被阻止。如果您需要重新测试购买,您可以使用此 adb 命令清除购买历史并再次 运行。

adb shell pm clear com.android.vending