এই ডকুমেন্ট থেকে আপনি জানতে পারবেন কীভাবে Google Play Billing Library (PBL) 7 বা 8 থেকে PBL 9-এ মাইগ্রেট করতে হয় এবং নতুন ফিচারের সাথে কীভাবে ইন্টিগ্রেট করতে হয়।
9.0.0 ভার্সনে হওয়া পরিবর্তনের সম্পূর্ণ তালিকা দেখতে, রিলিজ নোট দেখুন।
Android স্কিল
GitHub-এ দেখুনPlay Billing Library আপগ্রেড করুন
android skills add play-billing-library-version-upgradeHelp me upgrade my Play Billing Library implementation.এক নজরে
PBL 9-এ আগে থেকে থাকা API-এর উন্নতি করা হয়েছে এবং আগে বন্ধ করা API সরিয়ে দেওয়া হয়েছে। লাইব্রেরির এই ভার্সন নতুন সাব-রেসপন্স কোডের মাধ্যমে আরও সমৃদ্ধ ত্রুটি প্রসঙ্গও প্রবর্তন করে।
PBL আপগ্রেডের জন্য ব্যাকওয়ার্ড-কম্প্যাটিবিলিটি
PBL 9-এ মাইগ্রেট করতে, আপনার অ্যাপ থেকে আগে থেকে থাকা কিছু API রেফারেন্স আপডেট করতে বা সরিয়ে দিতে হবে, যেমনটি রিলিজ নোট এবং পরে এই মাইগ্রেশন গাইডে বর্ণনা করা হয়েছে।
PBL 7 বা 8 থেকে PBL 9-এ আপগ্রেড করুন
PBL 7 বা 8 থেকে PBL 9-এ আপগ্রেড করতে, নিম্নলিখিত ধাপগুলি অনুসরণ করুন:
আপনার অ্যাপের
build.gradleফাইলে Play Billing Library ডিপেন্ডেন্সি ভার্সন আপডেট করুন।dependencies { def billing_version = "9.1.0" implementation "com.android.billingclient:billing:$billing_version" }আপনি Kotlin ব্যবহার করলে, Google Play Billing Library KTX মডিউলে Kotlin এক্সটেনশন ও কোরুটিন সাপোর্ট থাকে যা আপনাকে Google Play Billing Library ব্যবহার করার সময় ইডিওমেটিক Kotlin লিখতে সাহায্য করে। আপনার প্রোজেক্টে এইসব এক্সটেনশন অন্তর্ভুক্ত করতে, আপনার অ্যাপের
build.gradleফাইলে নিম্নলিখিত ডিপেন্ডেন্সি যোগ করুন, যেমন দেখানো হয়েছে:dependencies { val billing_version = "9.1.0" implementation("com.android.billingclient:billing-ktx:$billing_version") }(শুধুমাত্র PBL 7 থেকে PBL 9-এ আপগ্রেড করার ক্ষেত্রে প্রযোজ্য)।
queryProductDetailsAsyncপদ্ধতির প্রয়োগ আপডেট করুন।ProductDetailsResponseListener.onProductDetailsResponseপদ্ধতির সিগনেচারে পরিবর্তন করা হয়েছে, যার জন্যqueryProductDetailsAsyncপ্রয়োগ করতে আপনার অ্যাপে পরিবর্তন করতে হবে। আরও তথ্যের জন্য, কেনার জন্য উপলভ্য প্রোডাক্ট দেখুন।সরিয়ে দেওয়া API ম্যানেজ করুন।
নিচের সারণিতে সরিয়ে দেওয়া API এবং তার পরিবর্তে আপনার অ্যাপে ব্যবহার করতে হবে এমন API-এর তালিকা দেওয়া হল।
এখান থেকে আপগ্রেড করুন
PBL 9-এ নিম্নলিখিত টেবিলে তালিকাভুক্ত API আর কাজ করে না। আপনার প্রয়োগে যদি সরিয়ে দেওয়া এইসব API-এর কোনওটি ব্যবহার করা হয়, তাহলে সংশ্লিষ্ট বিকল্প API-এর জন্য টেবিলটি দেখুন।
আগে থেকে বন্ধ হয়ে যাওয়া API সরিয়ে দেওয়া হয়েছে ব্যবহার করার জন্য বিকল্প API queryPurchaseHistoryAsync API কেনাকাটার ইতিহাস কোয়েরি করুন দেখুন। আপনি যদি ফ্রি ট্রায়ালের জন্য উপযুক্ততা নির্ধারণ করতে queryPurchaseHistoryAsync ব্যবহার করে থাকেন, তাহলে এখন আপনাকে ProductDetails.getSubscriptionOfferDetails() ব্যবহার করে নির্ধারণ করতে হবে যে ব্যবহারকারী কোন অফারের জন্য উপযুক্ত। BillingClient.SkuType BillingClient.ProductType। INAPP এবং SUBS প্রোডাক্ট টাইপ কনস্ট্যান্ট, বন্ধ হয়ে যাওয়া SKU টাইপ কনস্ট্যান্টের মতোই কাজ করে। SkuDetails ProductDetails. এটি হল নতুন ডেটা মডেল যা এককালীন প্রোডাক্টের ক্ষেত্রে কাজ করে। SkuDetailsParams queryProductDetailsAsync-এর সাথে QueryProductDetailsParams ব্যবহার করুন। SkuDetailsResponseListener queryProductDetailsAsync-এর সাথে ProductDetailsResponseListener ব্যবহার করুন। QueryPurchaseHistoryParams - অ্যাক্টিভ বা বাকি থাকা কেনাকাটার জন্য queryPurchasesAsync ব্যবহার করুন।
- আপনার ব্যাকএন্ড সার্ভারে ব্যবহার করা কেনাকাটা ট্র্যাক করুন।
- বাতিল বা বাতিল করা কেনাকাটার জন্য সার্ভার-সাইড Voided Purchases API ব্যবহার করুন।
getSkuDetailsList এবং setSkuDetailsList BillingFlowParams.Builder.setProductDetailsParamsList ব্যবহার করুন querySkuDetailsAsync queryProductDetailsAsync enablePendingPurchases() (প্যারামিটার ছাড়া API) enablePendingPurchases(PendingPurchasesParams params)
মনে রাখবেন যে বন্ধ হয়ে যাওয়া enablePendingPurchases() ফাংশনালিenablePendingPurchases(PendingPurchasesParams.newBuilder().enableOneTimeProducts().build())-এর সমতুল্য।queryPurchasesAsync(String skuType, PurchasesResponseListener listener) queryPurchasesAsync এখান থেকে আপগ্রেড করুন
নিচের সারণিতে PBL 9 থেকে সরিয়ে দেওয়া API এবং তার পরিবর্তে আপনার অ্যাপে ব্যবহার করতে হবে এমন API-এর তালিকা দেওয়া হল।
আগে থেকে বন্ধ হয়ে যাওয়া API সরিয়ে দেওয়া হয়েছে ব্যবহার করার জন্য বিকল্প API BillingClient.SkuType BillingClient.ProductType। INAPP এবং SUBS প্রোডাক্ট টাইপ কনস্ট্যান্ট, বন্ধ হয়ে যাওয়া SKU টাইপ কনস্ট্যান্টের মতোই কাজ করে। SkuDetails ProductDetails. এটি হল নতুন ডেটা মডেল যা এককালীন প্রোডাক্টের ক্ষেত্রে কাজ করে। SkuDetailsParams queryProductDetailsAsync-এর সাথে QueryProductDetailsParams ব্যবহার করুন। SkuDetailsResponseListener queryProductDetailsAsync-এর সাথে ProductDetailsResponseListener ব্যবহার করুন। QueryPurchaseHistoryParams - অ্যাক্টিভ বা বাকি থাকা কেনাকাটার জন্য queryProductDetailsAsync ব্যবহার করুন।
- আপনার ব্যাকএন্ড সার্ভারে ব্যবহার করা কেনাকাটা ট্র্যাক করুন।
- বাতিল বা বাতিল করা কেনাকাটার জন্য সার্ভার-সাইড Voided Purchases API ব্যবহার করুন।
getSkuDetailsList এবং setSkuDetailsList BillingFlowParams.Builder.setProductDetailsParamsList ব্যবহার করুন (সাজেস্ট করা হয়েছে) অটোমেটিক পরিষেবা রিকানেকশন চালু করুন।
পরিষেবা ডিসকানেক্ট হয়ে গেলে, API কল করা হলে Play Billing Library অটোমেটিক পরিষেবা কানেকশন আবার স্থাপন করার চেষ্টা করতে পারে। আরও তথ্যের জন্য, অটোমেটিক পরিষেবা রিকানেকশন চালু করুন বিকল্প দেখুন।
নতুন সাব-রেসপন্স কোড ম্যানেজ করুন।
launchBillingFlow()থেকে ফেরত আসা BillingResult-এ এখন একটি সাব-রেসপন্স কোড ফিল্ড অন্তর্ভুক্ত থাকবে। ব্যর্থতার আরও নির্দিষ্ট কারণ প্রদান করার জন্য এই ফিল্ডটি শুধুমাত্র কিছু ক্ষেত্রে পূরণ করা হবে। সাব-রেসপন্স ফিল্ডে নিম্নলিখিত ভ্যালু থাকতে পারে:PAYMENT_DECLINED_DUE_TO_INSUFFICIENT_FUNDS- ব্যবহারকারী যে আইটেম কেনার চেষ্টা করছেন সেটির দামের থেকে তার ফান্ডে কম টাকা থাকলে এটি ফেরত দেওয়া হয়।USER_INELIGIBLE- সাবস্ক্রিপশন অফারের জন্য কনফিগার করা যোগ্যতার শর্ত ব্যবহারকারী পূরণ না করলে এটি দেখানো হয়।NO_APPLICABLE_SUB_RESPONSE_CODE- ডিফল্ট ভ্যালু, অন্য কোনও সাব-রেসপন্স কোড প্রযোজ্য না হলে এটি দেখানো হয়।
মাইগ্রেশন সংক্রান্ত ধাপ: ব্যবহারকারীকে আরও ভালো অভিজ্ঞতা প্রদান করতে, এইসব নির্দিষ্ট সাব-রেসপন্স কোড শনাক্ত করতে ও সেগুলির উত্তর দিতে, আপনার
PurchasesUpdatedListenerবা সমতুল্য ফলাফল হ্যান্ডলিং আপডেট করুন। যেমন, পেমেন্ট পদ্ধতি ঠিক করার জন্য প্রম্পট করা বা নির্দিষ্ট কোনও ত্রুটি মেসেজ দেখানো।সমস্যার কোড আবার শ্রেণীবিন্যাস করা সংক্রান্ত সচেতনতা।
যেসব ক্ষেত্রে সিস্টেমের মাধ্যমে Play Store অ্যাপ ব্লক করা হয় (যেমন, OEM-কাস্টমাইজ করা বাচ্চাদের মোডে), PBL থেকে রেসপন্স কোড
ERRORথেকেBILLING_UNAVAILABLE-এ পরিবর্তন করা হয়েছে।মাইগ্রেশন সংক্রান্ত ধাপ: আপনার সমস্যা ম্যানেজ করার লজিক যাতে এই পরিবর্তনকে অ্যাকোমোডেট করে এবং এই নির্দিষ্ট পরিস্থিতিতে সাধারণ সমস্যা পাওয়ার উপর নির্ভর না করে তা নিশ্চিত করুন।
DeveloperProvidedBillingDetails.getLinkUri()নালেবিলিটি ম্যানেজ করুন।আপনি যদি এক্সটার্নাল পেমেন্ট ইন্টিগ্রেশনের অংশ হিসেবে
DeveloperProvidedBillingDetailsব্যবহার করেন, তাহলেgetLinkUri()এখন@Nullable।মাইগ্রেশন সংক্রান্ত ধাপ: এই পরিবর্তন নিরাপদে ম্যানেজ করতে, ব্রাউজার ইনটেন্ট পার্স বা লঞ্চ করার আগে, আপনার ইন্টিগ্রেশন কোড যাতে
DeveloperProvidedBillingDetails.getLinkUri()পদ্ধতি থেকেnullএবং খালি স্ট্রিং ("") ভ্যালু, দুটিই ম্যানেজ করে তা নিশ্চিত করুন। যেমন:Kotlin
val linkUri = details.linkUri if (!linkUri.isNullOrEmpty()) { val intent = Intent(Intent.ACTION_VIEW, linkUri.toUri()) context.startActivity(intent) }
জাভা
String linkUri = details.getLinkUri(); if (!android.text.TextUtils.isEmpty(linkUri)) { Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(linkUri)); context.startActivity(intent); }ঐচ্ছিক পরিবর্তন।
প্রিপেড প্ল্যানের জন্য বাকি থাকা কেনাকাটা সংক্রান্ত সহায়তা। আরও তথ্যের জন্য, সাবস্ক্রিপশন ও বাকি থাকা ট্রানজ্যাকশন ম্যানেজ করা দেখুন।
ভার্চুয়াল ইনস্টলমেন্ট সাবস্ক্রিপশন। আরও তথ্যের জন্য, ইনস্টলমেন্ট সাবস্ক্রিপশন ইন্টিগ্রেশন দেখুন।