عند تطبيق عمليات الشراء داخل التطبيق الخاص بي والموضحة في موقع developer.android
وهذا هو رابط الشرح
Use the Google Play Billing Library
كل شيء مثالي يمكنني الحصول على سعر ووصف وعنوان المنتج
المشكلة هي عدم ظهور مربع حوار الشراء
أنا استخدم هاتف حقيقي لتطبيق التغييرات
انا استخدم لغة kotlin
المرجو منكم تقديم المساعدة
شكرا لكم
الكود الخاص بالمشتريات داخل التطبيق
class AppBilling : AppCompatActivity(), PurchasesUpdatedListener {
private lateinit var billingClient: BillingClient
private val skuList = ArrayList<String>()
override fun onPurchasesUpdated(billingResult: BillingResult?, purchases: List<Purchase>?) {
Log.i("TAG", "$billingResult :::: $purchases")
if (billingResult != null) {
if (billingResult.responseCode == BillingClient.BillingResponseCode.OK && purchases != null) {
for (purchase in purchases) {
Log.i("TAG", "$purchase if")
handlePurchase(purchase)
}
} else if (billingResult.responseCode == BillingClient.BillingResponseCode.USER_CANCELED) {
Log.i("TAG", "else if")
} else {
Log.i("TAG", "else")
}
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_app_billing)
billingClient = BillingClient.newBuilder(this@AppBilling).setListener(this).enablePendingPurchases().build()
val params = SkuDetailsParams.newBuilder()
skuList.add("rm_admob")
params.setSkusList(skuList).setType(BillingClient.SkuType.INAPP)
billingClient.startConnection(object : BillingClientStateListener {
override fun onBillingSetupFinished(billingResult: BillingResult?) {
billingClient.querySkuDetailsAsync(params.build()) { billingResult, skuDetailsList ->
if (billingResult.responseCode == BillingClient.BillingResponseCode.OK && skuDetailsList != null) {
for (skuDetails in skuDetailsList) {
val sku = skuDetails.sku
val price = skuDetails.originalPrice
val title = skuDetails.title
val desc = skuDetails.description
val flowParams = BillingFlowParams.newBuilder().setSkuDetails(skuDetails).build()
if ("rm_admob" == sku) {
id_price.text = price
id_title.text = title
id_desc.text = desc
id_rm_admob.setOnClickListener {
val responseCode = billingClient.launchBillingFlow(this@AppBilling, flowParams)
}
}
}
}
}
}
override fun onBillingServiceDisconnected() {
}
})
}
private fun handlePurchase(purchase: Purchase) {
if (purchase.sku == "rm_admob") {
Log.i("TAG", "handlePurchase()")
}
}
}