我在项目中实施应用内购买时遇到了问题。
当我测试我的应用程序时,它始终无法创建订阅。但是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()
}
}
我总是看到消息“找不到项目”。
有什么问题?预先感谢。