如何在Play Billing v3.0中创建SkuDetail

问题描述

我正在从Play计费库的v1.0迁移到v3.0。

下面的代码演示了如何在v1.0中启动购买流程

val billingParams = BillingFlowParams.newBuilder().setSku(skuId).setType(skuType).build()
val billingResult  = billingClient.launchBillingFlow(activity,billingParams)

在3.0版中

它应该这样完成:

val billingParams = BillingFlowParams.newBuilder().setSkuDetails(skuDetails).build()
val billingResult  = billingClient.launchBillingFlow(activity,billingParams)

如何使用skuId和skuType创建skuDetail?

解决方法

这是我使用的方法,您传递了软件包名称列表,它返回了SkuDetails的列表

  suspend fun queryInAppPurchaseSkuDetails(packagesList: List<String>): List<SkuDetails>? {

        val params = SkuDetailsParams.newBuilder()
        params.setSkusList(packagesList).setType(BillingClient.SkuType.INAPP)
        val skuDetailsResult = withContext(Dispatchers.IO) {
            billingClient?.querySkuDetails(params.build())
        }
        // Process the result.

        if (skuDetailsResult?.billingResult?.responseCode == BillingClient.BillingResponseCode.OK && packagesList.isNotNullOrEmpty()) {
            val skuDetailsList = skuDetailsResult.skuDetailsList
            return skuDetailsList
        }

        return null
    }