使用Google Play结算,可以等到确认应用购买后再授予其权利吗?

问题描述 投票:1回答:1

Google Play Billing library上的acknowledging purchases文档指出:

授予用户权利后,您必须尽快确认通过Google Play结算库收到的所有具有SUCCESS状态的购买。

因此,您的应用应首先向用户提供其购买的商品,然后确认购买。这也是他们的示例代码所暗示的:

fun handlePurchase() {
    if (purchase.purchaseState === PurchaseState.PURCHASED) {
        // Grant entitlement to the user.
        ...
        // Acknowledge the purchase if it hasn't already been acknowledged.
        if (!purchase.isAcknowledged) {
            val acknowledgePurchaseParams = AcknowledgePurchaseParams.newBuilder()
                    .setPurchaseToken(purchase.purchaseToken)
                    .build()
            client.acknowledgePurchase(acknowledgePurchaseParams, acknowledgePurchaseResponseListener)
        }
    }
}

我目前正在开发一个Android应用,我可以让用户访问其购买的内容之后返回的确认状态为OK(反之亦然):

private fun acknowledgePurchase(purchase: Purchase) {
    val params = AcknowledgePurchaseParams.newBuilder()
        .setPurchaseToken(purchase.purchaseToken)
        .build()

    billingClient.acknowledgePurchase(params) { billingResult ->
        when (billingResult.responseCode) {
            BillingResponseCode.OK -> loadPurchase(purchase.sku)
            else -> { ... }
        }
    }
}

因为文档指出:

...您必须在三天内确认所有购买。如果未正确确认购买,则会导致这些购买被退款。

如果发生这种情况,并且用户获得退款,则也应该撤消该用户对该产品的吸引力。但就我而言,购买意味着加载数据,将内容存储在数据库中等等,而我也没有,也不想拥有用于还原此代码的代码。因此,我仅成功地向用户提供产品[[之后确认。

因此,我的问题:可以等到确认购买后再等待授予应用内购买的权利吗?还是我在这里缺少一些收获?我以为文档中指定此顺序是有原因的,但是他们没有对此进行详细说明。
android in-app-purchase android-billing android-inapp-purchase play-billing-library
1个回答
0
投票
[经过更多研究后,我注意到Trivial Drive sample app采用与我完全相同的方法。以下是their code的代码段:

private fun acknowledgeNonConsumablePurchasesAsync(nonConsumables: List<Purchase>) { nonConsumables.forEach { purchase -> val params = AcknowledgePurchaseParams.newBuilder().setPurchaseToken(purchase .purchaseToken).build() playStoreBillingClient.acknowledgePurchase(params) { billingResult -> when (billingResult.responseCode) { BillingClient.BillingResponseCode.OK -> { disburseNonConsumableEntitlement(purchase) } else -> Log.d(LOG_TAG, "acknowledgeNonConsumablePurchasesAsync response is ${billingResult.debugMessage}") } } } }

显示如果确认正常,则在确认回调函数中授予了吸引力。与我的问题中的代码完全相同。

所以我想这个问题的答案是:是的,可以在成功确认后授予权利。

© www.soinside.com 2019 - 2024. All rights reserved.