找不到订阅。应用内购买

时间:2020-11-12 15:19:19

标签: android kotlin billing in-app

我在项目中实施应用内购买时遇到了问题。

当我测试我的应用程序时,它始终无法创建订阅。但是Play控制台中有订阅。我有1个具有真实ID的订阅。

这是我的代码:

private var billingClient: BillingClient? = null

onPurchaseUpdate:

override fun onPurchasesUpdated(billingResult: BillingResult, purchases: MutableList<Purchase>?) {

    if (billingResult.responseCode == BillingClient.BillingResponseCode.OK && purchases != null){

        handlePurchase(purchases[0])
    }
    else if (billingResult.responseCode == BillingClient.BillingResponseCode.ITEM_ALREADY_OWNED){

        val queryAlreadyPurchasesResult = billingClient!!.queryPurchases(SUBS)
        val alreadyPurchases = queryAlreadyPurchasesResult.purchasesList

        if (alreadyPurchases != null){

            handlePurchase(alreadyPurchases[0])
        }
    }
    else if (billingResult.responseCode == BillingClient.BillingResponseCode.USER_CANCELED){

        Toast.makeText(this@MainActivity, "Purchase Canceled!", Toast.LENGTH_SHORT).show()
    }
    else{

        Toast.makeText(this@MainActivity, "Error: ${billingResult.debugMessage}", Toast.LENGTH_SHORT).show()
    }
}

购买句柄:

private fun handlePurchase(purchases: Purchase){

   if (purchases.purchaseState == Purchase.PurchaseState.PURCHASED){

        val consumeParams = ConsumeParams.newBuilder()
            .setPurchaseToken(purchases.purchaseToken)
            .build()

       billingClient!!.consumeAsync(consumeParams) { billingResult, outToken ->

           if (billingResult.responseCode == BillingClient.BillingResponseCode.OK){

                Toast.makeText(this@MainActivity, "Purchase Success!", Toast.LENGTH_SHORT).show()
           }
       }
   }
}

订阅乐趣:

private fun subscribe(){

    if (billingClient!!.isReady){

        initiatePurchase()
    }
    else{

        billingClient = BillingClient.newBuilder(this)
            .enablePendingPurchases()
            .setListener(this)
            .build()

        billingClient!!.startConnection(object: BillingClientStateListener{

            override fun onBillingServiceDisconnected() {

                Toast.makeText(this@MainActivity, "Service Disconnected", Toast.LENGTH_SHORT).show()
            }

            override fun onBillingSetupFinished(billingResult: BillingResult) {

                if (billingResult.responseCode == BillingClient.BillingResponseCode.OK){

                    initiatePurchase()
                }
                else{

                    Toast.makeText(this@MainActivity, "Error: ${billingResult.debugMessage}", Toast.LENGTH_SHORT).show()
                }
            }
        })
    }
}

启动购买乐趣:

private fun initiatePurchase(){

    val skuList: MutableList<String> = ArrayList()
    skuList.add(Constans.SUBS_ID)

    val params = SkuDetailsParams.newBuilder()
    params.setSkusList(skuList).setType(SUBS)

    val billingResult = billingClient!!.isFeatureSupported(BillingClient.FeatureType.SUBSCRIPTIONS)
    if (billingResult.responseCode == BillingClient.BillingResponseCode.OK){

        billingClient!!.querySkuDetailsAsync(params.build(), object: SkuDetailsResponseListener{

            override fun onSkuDetailsResponse(billingResult: BillingResult, skuDetailsList: MutableList<SkuDetails>?) {

                if (billingResult.responseCode == BillingClient.BillingResponseCode.OK){

                    if (skuDetailsList != null && skuDetailsList.isNotEmpty()){

                        val flowParams = BillingFlowParams.newBuilder()
                            .setSkuDetails(skuDetailsList[0])
                            .build()

                        billingClient!!.launchBillingFlow(this@MainActivity, flowParams)
                    }
                    else{

                        Toast.makeText(this@MainActivity, "Item not Found!", Toast.LENGTH_SHORT).show()
                    }
                }
                else{

                    Toast.makeText(this@MainActivity, "Error: ${billingResult.debugMessage}", Toast.LENGTH_SHORT).show()
                }
            }
        })
    }
    else{

        Toast.makeText(this@MainActivity, "Sorry Subscription not Supported. Please Update Play Store", Toast.LENGTH_SHORT).show()
    }
}

我总是看到消息“找不到项目”。

有什么问题?预先感谢。

0 个答案:

没有答案