关于确认购买的Google Play 结算库文档指出:
您必须在向用户授予权利后尽快确认通过 Google Play 结算库收到的所有具有成功状态的购买。
所以你的应用应该首先给用户他购买的东西,然后确认购买。这也是他们的示例代码所暗示的:
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 -> { ... }
}
}
}
因为文档指出:
...您必须在三天内确认所有购买。未能正确确认购买会导致这些购买被退款。
如果发生这种情况,并且用户得到了退款,那么用户对产品的权利也应该被撤销。但就我而言,进行购买意味着加载数据、在数据库中存储内容等等,而我没有,也不想拥有代码来恢复这一点。因此,我只有在成功确认后才向用户提供产品。
因此我的问题是:是否可以等到确认购买后才授予应用内购买的权利?或者我在这里错过了什么?我认为文档指定此顺序是有原因的,但他们没有详细说明。