问题描述
我正在使用 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 notes 和 Processing Purchases 了解更多详情。