Google 结算库取消了所有订阅

问题描述

我正在使用 Google 的结算库在我的应用内进行订阅

~~3天后,google play 对我用户的每一次订阅都退款了,这是为什么?

一些带有活动的代码,用于订阅

    private var billingClient: BillingClient? = null
    private val purchasesUpdateListener = PurchasesUpdatedListener { billingResult,purchases ->
        val isSuccessResult = billingResult.responseCode == BillingClient.BillingResponseCode.OK
        val hasPurchases = !purchases.isNullOrEmpty()
        if (isSuccessResult && hasPurchases) {
            purchases?.forEach(::confirmpurchase)
            viewmodel.hasSubscription.value = true
        }
    }

    private fun confirmpurchase(purchase: Purchase) {
        val consumeParams = ConsumeParams.newBuilder()
            .setPurchasetoken(purchase.purchasetoken)
            .build()
        billingClient?.consumeAsync(consumeParams) { billingResult,_ ->
            if (billingResult.responseCode != BillingClient.BillingResponseCode.OK) {
                //all done
            }
        }
    }
 override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
   
        billingClient = BillingClient.newBuilder(this)
            .setListener(purchasesUpdateListener)
            .enablePendingPurchases()
            .build()

        connectToBillingService()
    }

    private fun connectToBillingService() {
        billingClient?.startConnection(this)
    }

    private fun getPurchases(): List<Purchase> {
        val purchasesResult = billingClient?.queryPurchases(BillingClient.SkuType.SUBS)
        return purchasesResult?.purchasesList.orEmpty()
    }

    override fun onBillingSetupFinished(result: BillingResult) {
        if (result.responseCode == BillingClient.BillingResponseCode.OK) {
            updateSkuMap()
        }
    }
}

解决方法

因为您使用的是 Play 结算库 2.0 或更高版本。从 Play Billing Library 2.0 开始,所有购买都必须在三天内确认。未能正确确认购买将导致购买退款。 查看 Play Billing Library v2.0 release notesProcessing Purchases 了解更多详情。