এই ডকুমেন্টে Google Play Billing Library-এর রিলিজ নোট রয়েছে।
Android স্কিল
GitHub-এ দেখুনPlay Billing Library আপগ্রেড করুন
android skills add play-billing-library-version-upgradeHelp me upgrade my Play Billing Library implementation.Google Play Billing Library 9.1.0 রিলিজ (১৮-০৬-২০২৬)
Google Play Billing Library-এর 9.1.0 ভার্সন এবং Kotlin এক্সটেনশন এখন উপলভ্য।
পরিবর্তনগুলির সারাংশ
- বিলিংয়ের বিকল্প-এর জন্য নতুন API:
- ব্যবহারকারীর জন্য উপলভ্য বিলিং সংক্রান্ত বিকল্পের তথ্য ফিরিয়ে আনতে
BillingClient.getBillingChoiceInfoAsync()যোগ করা হয়েছে। BillingChoiceInfoক্লাস যোগ করা হয়েছে, যার মধ্যে ইমেজ URL ও লয়ালটি তথ্য সহ উত্তরের বিবরণ রয়েছে।- অনুরোধ কনফিগার করতে
GetBillingChoiceInfoParamsযোগ করা হয়েছে। - কলব্যাক পাওয়ার জন্য
BillingChoiceInfoResponseListenerযোগ করা হয়েছে। - Kotlin এক্সটেনশন
BillingClient.getBillingChoiceInfo()সাসপেন্ড ফাংশন যোগ করা হয়েছে। - বিলিং প্রোগ্রামের জন্য তথ্য ডায়ালগ দেখাতে
BillingClient.showBillingProgramInformationDialog()যোগ করা হয়েছে। - ডায়ালগ কনফিগার করতে
BillingProgramInformationDialogParamsযোগ করা হয়েছে। - কলব্যাক পাওয়ার জন্য
BillingProgramInformationDialogListenerযোগ করা হয়েছে। - বিলিং সংক্রান্ত পছন্দের উপলভ্যতা সম্পর্কে বিবরণ প্রদান করতে
BillingProgramAvailabilityDetails.BillingChoiceAvailabilityDetailsযোগ করা হয়েছে। - পছন্দের স্ক্রিনের ধরন নির্দিষ্ট করতে
ChoiceScreenTypeযোগ করা হয়েছে।
- ব্যবহারকারীর জন্য উপলভ্য বিলিং সংক্রান্ত বিকল্পের তথ্য ফিরিয়ে আনতে
Google Play Billing Library 9.0.0 রিলিজ (১৯-০৫-২০২৬)
Google Play Billing Library-এর 9.0.0 ভার্সন এবং Kotlin এক্সটেনশন এখন উপলভ্য। PBL-এর আগের ভার্সন থেকে মাইগ্রেট করতে চাইলে, PBL 9 মাইগ্রেশন গাইড দেখুন।
পরিবর্তনগুলির সারাংশ
ব্লক করা Play Store অ্যাক্টিভিটির জন্য আপডেট করা ত্রুটি কোড: ব্লক করা Play Store অ্যাপের জন্য ত্রুটি কোড আপডেট করা হয়েছে। যেসব ক্ষেত্রে সিস্টেমের মাধ্যমে Play Store অ্যাপ ব্লক করা হয় (যেমন, OEM-কাস্টমাইজ করা বাচ্চাদের মোডে), সেক্ষেত্রে রেসপন্স কোড
ERRORথেকেBILLING_UNAVAILABLE-এ পরিবর্তন করা হয়েছে। এছাড়াও, এই ধরনের ক্ষেত্রেBillingResultএখন একটি Play Store ব্লক করা হয়েছে ডিবাগ মেসেজ প্রদান করে।ডেভেলপারের প্রদান করা বিলিংয়ের জন্য নালেবিলিটি আপডেট:
DeveloperProvidedBillingDetails.getLinkUri()পদ্ধতি আপডেট করে@Nullableকরা হয়েছে। এই পরিবর্তন সেইসব পরিস্থিতিতে সাহায্য করে যেখানে পেমেন্ট বেছে নেওয়ার সময় এক্সটার্নাল পেমেন্টের জন্য ডাইরেক্ট লিঙ্ক URI উপলভ্য থাকে না।এই পরিবর্তন নিরাপদে ম্যানেজ করতে, আপনার ইন্টিগ্রেশন কোড যাতে
nullএবং খালি স্ট্রিং ("") ভ্যালু, দুটিইDeveloperProvidedBillingDetails.getLinkUri()পদ্ধতি থেকে ম্যানেজ করে তা নিশ্চিত করুন। পার্সিং বা ব্রাউজার ইনটেন্ট লঞ্চ করার আগে এটি করতে হবে।targetSdkVersionথেকে ৩৫-এ আপডেট করা হয়েছে।আসন্ন চালু করলে মূল্য বাড়বে সংক্রান্ত বিষয়ে ব্যবহারকারীদের জানাতে আপনি এখন ইন-অ্যাপ মেসেজিং ব্যবহার করতে পারবেন। এর ফলে ব্যবহারকারীরা অ্যাপ থেকে না বেরিয়েই দাম বাড়ার বিষয়টি কনফার্ম করতে পারেন। দাম বাড়ার বিষয়টি ব্যবহারকারী যেদিন থেকে গ্রহণ করতে পারবেন, সেদিন থেকে চালু করলে মূল্য বাড়বে সংক্রান্ত বকেয়া মেসেজ দেখানো শুরু হয় এবং প্রতি ৭ দিনে সর্বাধিক একবার এই মেসেজ দেখানো হয়।
Google Play Billing Library 8.3.0 রিলিজ (২৩-১২-২০২৫)
Google Play Billing Library-এর 8.3.0 ভার্সন এবং Kotlin এক্সটেনশন এখন উপলভ্য।
পরিবর্তনগুলির সারাংশ
এক্সটার্নাল পেমেন্টের জন্য নতুন API:
- এক্সটার্নাল পেমেন্ট ফ্লোতে সহায়তা করার জন্য ক্লাস যোগ করা হয়েছে:
- এক্সটার্নাল পেমেন্ট চালু করতে
enableBillingProgram(EnableBillingProgramParams)যোগ করা হয়েছে। - এক্সটার্নাল পেমেন্ট ফ্লো চালু করতে
BillingFlowParams.Builder.enableDeveloperBillingOptionযোগ করা হয়েছে।
এক্সটার্নাল পেমেন্ট ফ্লো ড্রপ-অফের জন্য উন্নত ত্রুটি বিভাগীকরণ:
- কোনও ব্যবহারকারী যদি কোনও এক্সটার্নাল অ্যাপে (যেমন ই-ওয়ালেট) পেমেন্ট সম্পূর্ণ করার জন্য পারচেজ ফ্লো থেকে বেরিয়ে যান এবং ফিরে না এসে ট্রানজ্যাকশনটি বাতিল করেন, তাহলে ক্লায়েন্টকে ফেরত পাঠানো রেসপন্স কোড এখন
BillingResponseCode.USER_CANCELED(1) এবং ডিবাগ মেসেজBILLING_ACTIVITY_PAUSED(আগে ডিফল্ট হিসেবেBillingResponseCode.ERROR(6) ছিল)।
- কোনও ব্যবহারকারী যদি কোনও এক্সটার্নাল অ্যাপে (যেমন ই-ওয়ালেট) পেমেন্ট সম্পূর্ণ করার জন্য পারচেজ ফ্লো থেকে বেরিয়ে যান এবং ফিরে না এসে ট্রানজ্যাকশনটি বাতিল করেন, তাহলে ক্লায়েন্টকে ফেরত পাঠানো রেসপন্স কোড এখন
Google Play Billing Library 8.2.1 রিলিজ (১৫-১২-২০২৫)
Google Play Billing Library-এর 8.2.1 ভার্সন এবং Kotlin এক্সটেনশন এখন উপলভ্য।
সমস্যার সমাধান
isBillingProgramAvailableAsyncএবংcreateBillingProgramReportingDetailsAsync-এ ত্রুটির নিষ্পত্তি করা হয়েছে। 8.2.0-এ নিয়ে আসা এইসব API ব্যবহার করতে 8.2.1 ভার্সনে আপডেট করুন।
Google Play Billing Library 8.2.0 রিলিজ (০৯-১২-২০২৫)
Google Play Billing Library-এর 8.2.0 ভার্সন এবং Kotlin এক্সটেনশন এখন উপলভ্য।
পরিবর্তনগুলির সারাংশ
এক্সটার্নাল কন্টেন্ট লিঙ্ক এবং এক্সটার্নাল অফার-এর জন্য নতুন API:
- এইসব প্রোগ্রামের জন্য
BillingClientসেট-আপ করতেenableBillingProgramযোগ করা হয়েছে। - ব্যবহারকারীর যোগ্যতা নির্ধারণ করতে
isBillingProgramAvailableAsyncযোগ করা হয়েছে। - এক্সটার্নাল ট্রানজ্যাকশন টোকেন তৈরি করতে
createBillingProgramReportingDetailsAsyncযোগ করা হয়েছে, যা রিপোর্টিংয়ের জন্য ব্যবহার করতে হবে। - ডিজিটাল কন্টেন্ট অফার বা অ্যাপ ডাউনলোডের জন্য এক্সটার্নাল লিঙ্ক চালু করতে
launchExternalLinkযোগ করা হয়েছে।
- এইসব প্রোগ্রামের জন্য
এক্সটার্নাল অফার প্রোগ্রামে পরিবর্তন:
- এক্সটার্নাল অফার প্রোগ্রামের জন্য নীতিতে পরিবর্তন করা হয়েছে। বিবরণের জন্য প্রোগ্রামে হওয়া পরিবর্তন দেখুন। নতুন API-এর মাধ্যমে কীভাবে এক্সটার্নাল অফার ফ্লো লঞ্চ করতে হয় তা বুঝতে, ইন্টিগ্রেশন গাইড দেখুন।
BillingClient.Builder.enableExternalOfferAPI বন্ধ করা হয়েছে।isExternalOfferAvailableAsyncAPI বন্ধ করা হয়েছে।createExternalOfferReportingDetailsAsyncAPI বন্ধ করা হয়েছে।showExternalOfferInformationDialogAPI বন্ধ করা হয়েছে।
Google Play Billing Library 8.1.0 রিলিজ (০৬-১১-২০২৫)
Google Play Billing Library-এর 8.1.0 ভার্সন এবং Kotlin এক্সটেনশন এখন উপলভ্য।
পরিবর্তনগুলির সারাংশ
সাসপেন্ড করা সাবস্ক্রিপশন
সাবস্ক্রিপশন কোয়েরি করার সময় সাসপেন্ড করা সাবস্ক্রিপশন অন্তর্ভুক্ত করার জন্য
BillingClient.queryPurchasesAsync()পদ্ধতিতে একটি নতুন প্যারামিটার যোগ করা হয়েছে। সাসপেন্ড করা সাবস্ক্রিপশন এখনও ব্যবহারকারীর সাথে অ্যাট্রিবিউট করা থাকে, কিন্তু অ্যাক্টিভ থাকে না, কারণ ব্যবহারকারী সাবস্ক্রিপশন পজ করেছেন অথবা তার রিনিউ করার পেমেন্ট পদ্ধতি বাতিল করা হয়েছে।লিসনারে ফেরত আসা
Purchaseঅবজেক্ট, সাসপেন্ড করা যেকোনও সাবস্ক্রিপশনের জন্যisSuspended() = trueফেরত দেবে। এই ক্ষেত্রে, আপনার কেনা সাবস্ক্রিপশনে অ্যাক্সেস দেওয়া উচিত নয় এবং এর পরিবর্তে ব্যবহারকারীকে সাবস্ক্রিপশন সেন্টার-এ যেতে বলুন যেখানে ব্যবহারকারী তার পেমেন্ট পদ্ধতি ম্যানেজ করতে পারবেন অথবা সাবস্ক্রিপশন আবার অ্যাক্টিভেট করতে পজ স্টেট ব্যবহার করতে পারবেন।সাবস্ক্রিপশন সংক্রান্ত আপডেট:
BillingFlowParams.ProductDetailsParamsঅবজেক্টে এখনsetSubscriptionProductReplacementParams()পদ্ধতি আছে যার মাধ্যমে আপনি প্রোডাক্ট লেভেল রিপ্লেসমেন্ট সংক্রান্ত তথ্য উল্লেখ করতে পারবেন।SubscriptionProductReplacementParamsঅবজেক্টে দুটি সেটার পদ্ধতি আছে:setOldProductId: পুরনো প্রোডাক্ট যা বর্তমানProductDetails-এ থাকা প্রোডাক্ট দিয়ে পাল্টাতে হবে।setReplacementMode: এটি হল আইটেম লেভেল রিপ্লেসমেন্ট মোড। মোডগুলি মূলত SubscriptionUpdateParams-এর মতোই, তবে ভ্যালু ম্যাপিং আপডেট করা হয়েছে। একটি নতুন রিপ্লেসমেন্ট মোডKEEP_EXISTINGচালু করা হয়েছে যা আপনাকে কোনও আইটেমের জন্য আগে থেকে থাকা পেমেন্টের সময়সূচী অপরিবর্তিত রাখতে দেয়।
SubscriptionUpdateParams setSubscriptionReplacementMode বন্ধ হয়ে যাবে। পরিবর্তে আপনাকে
SubscriptionProductReplacementParams.setReplacementModeব্যবহার করতে হবে।
minSdkVersion-কে ২৩-এ আপডেট করা হয়েছে।এককালীন প্রোডাক্টের জন্য প্রি-অর্ডার API চালু করা হয়েছে
ProductDetails.oneTimePurchaseOfferDetails.getPreorderDetails()API যা প্রি-অর্ডারের বিবরণ পায়, তা এখন ব্যবহারের জন্য উপলভ্য।Google Play Billing Library এখন Kotlin ভার্সন ২.২.০-তে কাজ করে।
Google Play Billing Library 8.0.0 রিলিজ (৩০-০৬-২০২৫)
Google Play Billing Library-এর 8.0.0 ভার্সন এবং Kotlin এক্সটেনশন এখন উপলভ্য।
পরিবর্তনগুলির সারাংশ
অ্যাপ-মধ্যস্থ আইটেম এখন থেকে এককালীন প্রোডাক্ট হিসেবে উল্লেখ করা হবে।
এককালীন প্রোডাক্টের জন্য একাধিক কেনাকাটার বিকল্প ও অফার।
আপনি এখন এককালীন প্রোডাক্টের জন্য একাধিক কেনাকাটার বিকল্প এবং অফার পেতে পারেন। এর ফলে আপনি নিজের প্রোডাক্ট আরও সহজে বিক্রি করতে পারবেন এবং সেগুলি ম্যানেজ করার জটিলতাও কমবে।
queryProductDetailsAsync()পদ্ধতি উন্নত করা হয়েছে।PBL 8.0.0-এর আগে,
queryProductDetailsAsync()পদ্ধতি ফেচ করা যায়নি এমন প্রোডাক্ট ফিরিয়ে দেয়নি। এটি বিভিন্ন কারণে হতে পারে, যেমন প্রোডাক্ট খুঁজে না পাওয়া অথবা ব্যবহারকারীর জন্য কোনও অফার উপলভ্য না থাকা। PBL 8.0.0-এর মাধ্যমে, ফেচ না করা প্রোডাক্টগুলি একটি নতুন প্রোডাক্ট-লেভেল স্ট্যাটাস কোড সহ ফেরত দেওয়া হয় যা ফেচ না করা প্রোডাক্ট সম্পর্কে তথ্য প্রদান করে। মনে রাখবেন যেProductDetailsResponseListener.onProductDetailsResponse()-এর সিগনেচারে পরিবর্তন হয়েছে, যার জন্য আপনার অ্যাপে পরিবর্তন করতে হবে। আরও তথ্যের জন্য, ফলাফল প্রসেস করুন দেখুন।পরিষেবা অটোমেটিক আবার কানেক্ট করা।
নতুন
BillingClient.Builder.enableAutoServiceReconnection()বিল্ডার প্যারামিটার ডেভেলপারদের অটোমেটিক পরিষেবা রিকানেকশন চালু করার সুবিধা দেয়, যা Play Billing Service-এ রিকানেকশন অটোমেটিক ম্যানেজ করে কানেকশন ম্যানেজমেন্টকে সহজ করে তোলে এবং পরিষেবা ডিসকানেক্ট হয়ে গেলে ম্যানুয়ালিstartConnection()কল করার প্রয়োজনীয়তা দূর করে। আরও তথ্যের জন্য, অটোমেটিক কানেকশন আবার স্থাপন করুন দেখুন।launchBillingFlow()পদ্ধতির জন্য সাব-রেসপন্স কোড।launchBillingFlow()থেকে ফেরত আসা BillingResult-এ এখন একটি সাব-রেসপন্স কোড ফিল্ড অন্তর্ভুক্ত থাকবে। ব্যর্থতার আরও নির্দিষ্ট কারণ প্রদান করার জন্য এই ফিল্ডটি শুধুমাত্র কিছু ক্ষেত্রে পূরণ করা হবে। সাব-রেসপন্স ফিল্ডে নিম্নলিখিত ভ্যালু থাকতে পারে:PAYMENT_DECLINED_DUE_TO_INSUFFICIENT_FUNDS- ব্যবহারকারী যে আইটেম কেনার চেষ্টা করছেন সেটির দামের থেকে তার ফান্ডে কম টাকা থাকলে এটি ফেরত দেওয়া হয়।USER_INELIGIBLE- সাবস্ক্রিপশন অফারের জন্য কনফিগার করা যোগ্যতার শর্ত ব্যবহারকারী পূরণ না করলে এটি দেখানো হয়।NO_APPLICABLE_SUB_RESPONSE_CODE- ডিফল্ট ভ্যালু, অন্য কোনও সাব-রেসপন্স কোড প্রযোজ্য না হলে এটি দেখানো হয়।
queryPurchaseHistory()পদ্ধতি সরিয়ে দেওয়া হয়েছে।queryPurchaseHistory()পদ্ধতি যা আগে বন্ধ করা হয়েছে বলে চিহ্নিত করা হয়েছিল, তা এখন সরিয়ে দেওয়া হয়েছে। পরিবর্তে কোন বিকল্প API ব্যবহার করতে হবে সেই সম্পর্কে বিশদ বিবরণের জন্য কোয়েরি কেনাকাটার ইতিহাস দেখুন।querySkuDetailsAsync()পদ্ধতি সরিয়ে দেওয়া হয়েছে।querySkuDetailsAsync()পদ্ধতি যা আগে বন্ধ করা হয়েছে হিসেবে চিহ্নিত করা হয়েছিল তা এখন সরিয়ে দেওয়া হয়েছে। পরিবর্তে আপনার queryProductDetailsAsync ব্যবহার করা উচিত।BillingClient.Builder.enablePendingPurchases()পদ্ধতি সরিয়ে দেওয়া হয়েছে।কোনও প্যারামিটার ছাড়া
enablePendingPurchases()মেথড যা আগে বন্ধ হিসেবে চিহ্নিত করা হয়েছিল, তা এখন সরিয়ে দেওয়া হয়েছে। পরিবর্তে আপনারenablePendingPurchases(PendingPurchaseParams params)ব্যবহার করা উচিত। মনে রাখবেন যে বন্ধ হয়ে যাওয়াenablePendingPurchases()ফাংশনালিenablePendingPurchases(PendingPurchasesParams.newBuilder().enableOneTimeProducts().build())-এর সমতুল্য।ওভারলোড করা
queryPurchasesAsync()পদ্ধতি সরিয়ে দেওয়া হয়েছে যা skuType নেয়।queryPurchasesAsync(String skuType, PurchasesResponseListener listener)পদ্ধতি যা আগে বন্ধ করা হয়েছে বলে চিহ্নিত করা হয়েছিল, তা এখন সরিয়ে দেওয়া হয়েছে। বিকল্প হিসেবে,queryPurchasesAsync(QueryPurchasesParams queryPurchasesParams, PurchasesResponseListener listener)ব্যবহার করুন।
Google Play Billing Library 7.1.1 রিলিজ (০৩-১০-২০২৪)
Google Play Billing Library-এর 7.1.1 ভার্সন এবং Kotlin এক্সটেনশন এখন উপলভ্য।
সমস্যার সমাধান
- Play Billing Library 7.1.0-এ টেস্টিং
BillingResultরেসপন্স কোড সংক্রান্ত একটি সমস্যার সমাধান করা হয়েছে।
Google Play Billing Library 7.1.0 রিলিজ (১৯-০৯-২০২৪)
Google Play Billing Library-এর 7.1.0 ভার্সন এবং Kotlin এক্সটেনশন এখন উপলভ্য।
পরিবর্তনগুলির সারাংশ
- কানেকশন স্ট্যাটাস ও ম্যানেজমেন্ট সম্পর্কিত থ্রেড নিরাপত্তা উন্নত করা হয়েছে।
BillingResultরেসপন্স কোড পরীক্ষা করার জন্য আংশিক পরিবর্তন করা হয়েছে যা Play Billing Library 7.1.1-এ সম্পূর্ণভাবে রিলিজ করা হয়েছে। এই ফিচার ব্যবহার করে আপনার ইন্টিগ্রেশন টেস্ট করতে, আপনাকে Play Billing Library 7.1.1-এ আপগ্রেড করতে হবে। একটি সমস্যা রয়েছে যা শুধুমাত্র বিলিং ওভাররাইড টেস্টিং চালু আছে এমন অ্যাপ্লিকেশনকে প্রভাবিত করবে এবং নিয়মিত ব্যবহারে কোনও প্রভাব ফেলবে না। আরও তথ্যের জন্য,BillingResultরেসপন্স কোড টেস্ট করুন দেখুন।
Google Play Billing Library 7.0.0 রিলিজ (১৪-০৫-২০২৪)
Google Play Billing Library-এর 7.0.0 ভার্সন এবং Kotlin এক্সটেনশন এখন উপলভ্য।
পরিবর্তনগুলির সারাংশ
ইনস্টলমেন্ট সাবস্ক্রিপশন সাপোর্ট করার জন্য API যোগ করা হয়েছে।
- ব্যবহারকারীরা কিনতে পারবেন এমন ইনস্টলমেন্ট বেস প্ল্যানের জন্য
ProductDetails.InstallmentPlanDetailsযোগ করা হয়েছে। এই API আপনার অ্যাপকে ইনস্টলমেন্ট প্ল্যান এবং এর কমিটমেন্ট সেট-আপ শনাক্ত করতে সাহায্য করে যাতে ব্যবহারকারীকে প্রাসঙ্গিক তথ্য প্রদান করা যায়। আরও জানতে, আমাদের সাবস্ক্রিপশন ইনস্টলমেন্ট সংক্রান্ত নির্দেশিকা দেখুন।
- ব্যবহারকারীরা কিনতে পারবেন এমন ইনস্টলমেন্ট বেস প্ল্যানের জন্য
BillingClient.Builder.enablePendingPurchases()-এর পরিবর্তেPendingPurchasesParamsএবংBillingClient.Builder.enablePendingPurchases(PendingPurchaseParams)যোগ করা হয়েছে, যা এই রিলিজে বন্ধ করে দেওয়া হয়েছে।- বন্ধ হয়ে যাওয়া
enablePendingPurchases()-এর কার্যকারিতাenablePendingPurchases(PendingPurchasesParams.newBuilder().enableOneTimeProducts().build())-এর মতোই।
- বন্ধ হয়ে যাওয়া
সাবস্ক্রিপশন প্রিপেড প্ল্যানের জন্য পেন্ডিং ট্রানজ্যাকশন সংক্রান্ত API যোগ করা হয়েছে:
- সাবস্ক্রিপশন প্রিপেড প্ল্যানের জন্য পেন্ডিং ট্রানজ্যাকশন চালু করতে
BillingClient.Builder.enablePendingPurchases(PendingPurchaseParams)-এর সাথেPendingPurchasesParams.Builder.enablePrepaidPlans()ব্যবহার করুন। সহায়তা যোগ করার সময়, আপনার অ্যাপ সাবস্ক্রিপশন লাইফসাইকেল সঠিকভাবে ম্যানেজ করছে কিনা তা নিশ্চিত করুন। আরও জানতে, আমাদের বাকি থাকা কেনাকাটা সংক্রান্ত নির্দেশিকা দেখুন। - আগে থেকে থাকা সাবস্ক্রিপশনে
বাকি থাকা টপ-আপ বা আপগ্রেড বা ডাউনগ্রেড ফিরিয়ে আনার জন্য
Purchase.PendingPurchaseUpdateএবংPurchase.getPendingPurchaseUpdate()যোগ করা হয়েছে।
- সাবস্ক্রিপশন প্রিপেড প্ল্যানের জন্য পেন্ডিং ট্রানজ্যাকশন চালু করতে
BillingClient.Builder.enableAlternativeBilling(),AlternativeBillingListenerএবংAlternativeChoiceDetailsসরানো হয়েছে।- ডেভেলপারদের উচিত
BillingClient.Builder.enableUserChoiceBilling()এর সাথেUserChoiceBillingListenerএবংUserChoiceDetailsলিসেনার কলব্যাকে ব্যবহার করা।
- ডেভেলপারদের উচিত
BillingFlowParams.ProrationMode,BillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceProrationMode(), এবংBillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceSkusProrationMode()সরানো হয়েছে।- ডেভেলপারদের
BillingFlowParams.SubscriptionUpdateParams.Builder#setSubscriptionReplacementMode(int)-এর পরিবর্তেBillingFlowParams.SubscriptionUpdateParams.ReplacementModeব্যবহার করা উচিত।
- ডেভেলপারদের
BillingFlowParams.SubscriptionUpdateParams.Builder#setOldSkuPurchaseToken()সরানো হয়েছে।- ডেভেলপারদের এর পরিবর্তে
BillingFlowParams.SubscriptionUpdateParams.Builder#setOldPurchaseToken(java.lang.String)ব্যবহার করা উচিত।
- ডেভেলপারদের এর পরিবর্তে
BillingClient.queryPurchaseHistoryAsync()বন্ধ করা হয়েছে এবং ভবিষ্যতে রিলিজের সময় এটি সরিয়ে দেওয়া হবে। ডেভেলপারদের পরিবর্তে নিম্নলিখিত বিকল্পগুলি ব্যবহার করা উচিত:- স্বীকৃত এবং বাকি থাকা কেনাকাটা: অ্যাক্টিভ কেনাকাটা ফেচ করতে
BillingClient.queryPurchasesAsync()ব্যবহার করুন। - ব্যবহার করা কেনাকাটা: ডেভেলপারদের নিজেদের সার্ভারে ব্যবহার করা কেনাকাটার ট্র্যাক রাখতে হবে।
- বাতিল করা কেনাকাটা: voided-purchases ডেভেলপার API ব্যবহার করুন।
- আরও জানতে, কেনাকাটার ইতিহাস কোয়েরি করা দেখুন
- স্বীকৃত এবং বাকি থাকা কেনাকাটা: অ্যাক্টিভ কেনাকাটা ফেচ করতে
ডেভেলপাররা খালি
offerTokenউল্লেখ করলে,BillingFlowParams.ProductDetailsParams.setOfferToken()এখন ব্যতিক্রম দেখায়।minSdkVersionআপডেট করে ২১ এবংtargetSdkVersionআপডেট করে ৩৪ করা হয়েছে।
Google Play Billing Library 6.2.1 রিলিজ (১৬-০৪-২০২৪)
Google Play Billing Library-এর 6.2.1 ভার্সন এবং Kotlin এক্সটেনশন এখন উপলভ্য।
পরিবর্তনগুলির সারাংশ
BillingClient.showAlternativeBillingOnlyInformationDialog()-এ একটি সমস্যার সমাধান করা হয়েছে যেখানেAlternativeBillingOnlyInformationDialogListenerডায়ালগ সম্পূর্ণ হওয়ার সময় নির্দিষ্ট কিছু ক্ষেত্রে কল নাও করা হতে পারে।
Google Play Billing Library 6.2.0 রিলিজ (০৬-০৩-২০২৪)
Google Play Billing Library-এর 6.2.0 ভার্সন এবং Kotlin এক্সটেনশন এখন উপলভ্য।
পরিবর্তনগুলির সারাংশ
- এক্সটার্নাল অফার সংক্রান্ত সহায়তা করতে API যোগ করা হয়েছে
- এক্সটার্নাল অফার দেওয়ার ক্ষমতা চালু করতে
BillingClient.Builder.enableExternalOffer()যোগ করা হয়েছে। - এক্সটার্নাল অফার সংক্রান্ত কার্যকারিতা প্রদান করার উপলভ্যতা চেক করতে
BillingClient.isExternalOfferAvailableAsync()যোগ করা হয়েছে। - ব্যবহারকারীদের অ্যাপের বাইরে নিয়ে যাওয়ার আগে তাদের তথ্য সংক্রান্ত ডায়ালগ দেখানোর জন্য
BillingClient.showExternalOfferInformationDialog()যোগ করা হয়েছে। - এক্সটার্নাল অফারের মাধ্যমে করা ট্রানজ্যাকশনের রিপোর্ট করার জন্য প্রয়োজনীয় পেলোড তৈরি করতে
BillingClient.createExternalOfferReportingDetailsAsync()যোগ করা হয়েছে।
- এক্সটার্নাল অফার দেওয়ার ক্ষমতা চালু করতে
Google Play Billing Library 6.1.0 রিলিজ (১৪-১১-২০২৩)
Google Play Billing Library-এর 6.1.0 ভার্সন এবং Kotlin এক্সটেনশন এখন উপলভ্য।
পরিবর্তনগুলির সারাংশ
- শুধু বিকল্প বিলিং (অর্থাৎ, ব্যবহারকারীর পছন্দ ছাড়া) সংক্রান্ত সুবিধা দিতে API যোগ করা হয়েছে
- শুধুমাত্র বিকল্প বিলিং অফার করার ক্ষমতা কার্যকরভাবে চালু করতে
BillingClient.Builder.enableAlternativeBillingOnly()যোগ করা হয়েছে। - শুধুমাত্র বিকল্প বিলিং অফার করার উপলভ্যতা চেক করার জন্য
BillingClient.isAlternativeBillingOnlyAvailableAsync()যোগ করা হয়েছে। - শুধুমাত্র বিকল্প বিলিং ব্যবহার করা হলে ব্যবহারকারীদের জানানোর জন্য
BillingClient.showAlternativeBillingOnlyInformationDialog()যোগ করা হয়েছে। - শুধুমাত্র বিকল্প বিলিংয়ের মাধ্যমে করা ট্রানজ্যাকশনের রিপোর্ট করার জন্য প্রয়োজনীয় পেলোড তৈরি করতে
BillingClient.createAlternativeBillingOnlyReportingDetailsAsync()যোগ করা হয়েছে।
- শুধুমাত্র বিকল্প বিলিং অফার করার ক্ষমতা কার্যকরভাবে চালু করতে
- ব্যবহারকারীর পছন্দের বিলিং API আপডেট করা হয়েছে
- AlternativeBillingListener-এর
পরিবর্তে
UserChoiceBillingListenerযোগ করা হয়েছে যেটি বন্ধ হয়ে গেছে হিসেবে চিহ্নিত করা হয়েছে। AlternativeChoiceDetailsযা বাতিল হিসেবে চিহ্নিত করা হয়েছে, তার পরিবর্তেUserChoiceDetailsযোগ করা হয়েছে।BillingClient.Builder.enableAlternativeBilling()যা বাতিল হিসেবে চিহ্নিত করা হয়েছে, তার পরিবর্তেBillingClient.Builder.enableUserChoiceBilling()যোগ করা হয়েছে।
- AlternativeBillingListener-এর
পরিবর্তে
- Google Play দেশ ফিরিয়ে আনতে
BillingClient.getBillingConfigAsync()যোগ করা হয়েছে।
Google Play Billing Library 6.0.1 রিলিজ (২২-০৬-২০২৩)
Google Play Billing Library-এর 6.0.1 ভার্সন এবং Kotlin এক্সটেনশন এখন উপলভ্য।
পরিবর্তনগুলির সারাংশ
Android 14-এর সাথে মানানসই করতে Play Billing Library আপডেট করুন।
Google Play Billing Library 6.0 রিলিজ (১০-০৫-২০২৩)
Google Play Billing Library-এর 6.0.0 ভার্সন এবং Kotlin এক্সটেনশন এখন উপলভ্য।
পরিবর্তনগুলির সারাংশ
ProrationMode-এর পরিবর্তে নতুনReplacementModeenum যোগ করা হয়েছে।মনে রাখবেন যে
ProrationModeএখনও ব্যাকওয়ার্ড কম্প্যাটিবিলিটির কারণে উপলভ্য।PENDINGকেনাকাটার জন্য অর্ডার আইডি সরানো হয়েছে।আগে, কেনাকাটা পেন্ডিং থাকলেও, অর্ডার আইডি সবসময় তৈরি করা হত। 6.0.0 ভার্সন থেকে শুরু করে, বাকি থাকা কেনাকাটার জন্য কোনও অর্ডার আইডি তৈরি করা হবে না এবং এইসব কেনাকাটার জন্য, কেনাকাটা
PURCHASEDস্টেটে চলে যাওয়ার পরে অর্ডার আইডি পপুলেট করা হবে।queryPurchasesএবংlaunchPriceConfirmationFlowপদ্ধতি সরানো হয়েছে।queryPurchasesএবংlaunchPriceConfirmationFlowপদ্ধতি যা আগে বন্ধ করা হয়েছে বলে চিহ্নিত করা হয়েছিল, তা এখন Play Billing Library 6.0.0 থেকে সরিয়ে দেওয়া হয়েছে। ডেভেলপারদেরqueryPurchases-এর পরিবর্তেqueryPurchasesAsyncব্যবহার করা উচিত।launchPriceConfirmationFlow-এর বিকল্পের জন্য, দামের পরিবর্তন দেখুন।নতুন নেটওয়ার্কের সমস্যা সংক্রান্ত রেসপন্স কোড যোগ করা হয়েছে।
PBL ভার্সন 6.0.0 থেকে শুরু করে,
NETWORK_ERROR, একটি নতুন নেটওয়ার্ক এরর রেসপন্স কোড যোগ করা হয়েছে। নেটওয়ার্ক কানেকশন সংক্রান্ত সমস্যার কারণে কোনও সমস্যা হলে এই কোড দেখানো হয়। এই নেটওয়ার্ক কানেকশন সমস্যা আগেSERVICE_UNAVAILABLEহিসেবে রিপোর্ট করা হয়েছে।SERVICE_UNAVAILABLEএবংSERVICE_TIMEOUTআপডেট করা হয়েছে।PBL ভার্সন 6.0.0 থেকে শুরু করে, প্রসেসিংয়ে টাইমআউটের কারণে হওয়া সমস্যাগুলি বর্তমান
SERVICE_TIMEOUT-এর পরিবর্তেSERVICE_UNAVAILABLEহিসেবে দেখানো হবে।PBL-এর আগের ভার্সনে আচরণ পরিবর্তন হয় না।
SERVICE_TIMEOUTসরানো হয়েছে।PBL ভার্সন 6.0.0 থেকে শুরু করে,
SERVICE_TIMEOUTআর ফেরত দেওয়া হবে না। PBL-এর আগের ভার্সন এখনও এই কোড ফিরিয়ে দেবে।অতিরিক্ত লগিং যোগ করা হয়েছে।
Play Billing Library 6 রিলিজে অতিরিক্ত লগিং অন্তর্ভুক্ত আছে, যা API ব্যবহার (যেমন, সাফল্য ও ব্যর্থতা) এবং পরিষেবা কানেকশন সংক্রান্ত সমস্যার ব্যাপারে ইনসাইট প্রদান করে। Play Billing Library-এর পারফর্ম্যান্স উন্নত করতে এবং সমস্যার ক্ষেত্রে আরও ভাল সহায়তা প্রদান করতে এই তথ্য ব্যবহার করা হবে।
Google Play Billing Library 5.2.1 রিলিজ (২২-০৬-২০২৩)
Google Play Billing Library-এর 5.2.1 ভার্সন এবং Kotlin এক্সটেনশন এখন উপলভ্য।
পরিবর্তনগুলির সারাংশ
Android 14-এর সাথে মানানসই করতে Play Billing Library আপডেট করুন।
Google Play Billing Library 5.2 রিলিজ (০৬-০৪-২০২৩)
Google Play Billing Library-এর 5.2.0 ভার্সন ও Kotlin এক্সটেনশন এখন উপলভ্য।
পরিবর্তনগুলির সারাংশ
- দক্ষিণ কোরিয়ার ব্যবহারকারীদের জন্য মোবাইল/ট্যাবলেটে বিকল্প বিলিং ফ্লোতে সহায়তা করার জন্য ক্লাস যোগ করা হয়েছে:
- যে সাবস্ক্রিপশন থেকে ট্রানজ্যাকশন শুরু হয়েছে সেটির এক্সটার্নাল ট্রানজ্যাকশন আইডি উল্লেখ করার জন্য
BillingFlowParams.SubscriptionUpdateParams.Builder.setOriginalExternalTransactionId()পদ্ধতি যোগ করা হয়েছে। - দক্ষিণ কোরিয়ার ব্যবহারকারীদের বিকল্প বিলিং বেছে নেওয়ার সুবিধা দিতে
BillingClient.Builder.enableAlternativeBilling()পদ্ধতি যোগ করা হয়েছে।
Google Play Billing Library 5.1 রিলিজ (৩১-১০-২০২২)
Google Play Billing Library-এর 5.1.0 ভার্সন এবং Kotlin এক্সটেনশন এখন উপলভ্য।
এই ভার্সনে নিম্নলিখিত পরিবর্তনগুলি রয়েছে।
পরিবর্তনগুলির সারাংশ
- অফার আইডি ফিরিয়ে আনার জন্য
ProductDetails.SubscriptionOfferDetails.getOfferId()পদ্ধতি যোগ করা হয়েছে। - বেস প্ল্যান আইডি ফিরিয়ে আনার জন্য
ProductDetails.SubscriptionOfferDetails.getBasePlanId()পদ্ধতি যোগ করা হয়েছে। targetSdkVersion-এর সংখ্যা আপডেট করে ৩১ করা হয়েছে।
Google Play Billing Library 5.0 রিলিজ (১১-০৫-২০২২)
Google Play Billing Library-এর 5.0.0 ভার্সন এবং Kotlin এক্সটেনশন এখন উপলভ্য।
এই ভার্সনে নিম্নলিখিত পরিবর্তনগুলি রয়েছে।
পরিবর্তনগুলির সারাংশ
- সাবস্ক্রিপশনের জন্য নতুন মডেল চালু করা হয়েছে, যার মধ্যে নতুন এন্টিটি অন্তর্ভুক্ত আছে যা আপনাকে একটি সাবস্ক্রিপশন প্রোডাক্টের জন্য একাধিক অফার তৈরি করতে দেয়। আরও তথ্যের জন্য, মাইগ্রেশন গাইড দেখুন।
BillingClient.querySkuDetailsAsync()-এর পরিবর্তেBillingClient.queryProductDetailsAsync()যোগ করা হয়েছে।- ইউরোপীয় ইউনিয়নের পছন্দমতো দাম সংক্রান্ত তথ্য প্রকাশ করার প্রয়োজনীয় শর্তাবলীর জন্য
setIsOfferPersonalized()পদ্ধতি যোগ করা হয়েছে। এই পদ্ধতি কীভাবে ব্যবহার করবেন সেই সম্পর্কে আরও জানতে, পছন্দমতো দাম উল্লেখ করুন নিবন্ধটি দেখুন। queryPurchases()সরিয়ে দেওয়া হয়েছে, যা আগে বাতিল করা হয়েছিল এবং Google Play Billing Library 4.0.0-এ চালু করা queryPurchasesAsync দ্বারা প্রতিস্থাপিত হয়েছে।launchPriceChangeFlowবন্ধ করা হয়েছে এবং ভবিষ্যতে রিলিজের সময় এটি সরিয়ে দেওয়া হবে। বিকল্প সম্পর্কে আরও জানতে, দাম পরিবর্তন কনফার্মেশন ফ্লো লঞ্চ করুন দেখুন।- সরানো হয়েছে
setVrPurchaseFlow(), যা আগে পারচেজ ফ্লো ইনস্ট্যান্টিয়েট করার সময় ব্যবহার করা হয়েছিল। আগের ভার্সনে, এই পদ্ধতি ব্যবহারকারীকে তার Android-চালিত ডিভাইসে কেনাকাটা সম্পূর্ণ করার জন্য রিডাইরেক্ট করেছে। আপনি এই পদ্ধতি সরিয়ে দিলে, ব্যবহারকারীরা স্ট্যান্ডার্ড পারচেজ ফ্লোয়ের মাধ্যমে কেনাকাটা সম্পূর্ণ করবেন।
Google Play Billing Library 4.1 রিলিজ (২৩-০২-২০২২)
Google Play Billing Library-এর 4.1.0 ভার্সন এবং Kotlin এক্সটেনশন এখন উপলভ্য।
এই ভার্সনে নিম্নলিখিত পরিবর্তনগুলি রয়েছে।
পরিবর্তনগুলির সারাংশ
- সাবস্ক্রিপশন পেমেন্ট বাতিল হওয়ার সমস্যা ম্যানেজ করতে সাহায্য করার জন্য
BillingClient.showInAppMessages()যোগ করা হয়েছে। সাবস্ক্রিপশন পেমেন্ট প্রত্যাখ্যান সংক্রান্ত সমস্যা ম্যানেজ করার জন্য ইন-অ্যাপ মেসেজিং কীভাবে ব্যবহার করবেন সেই সম্পর্কে আরও জানতে, প্রত্যাখ্যান করা পেমেন্ট ম্যানেজ করা দেখুন।
Google Play Billing Library 4.0 রিলিজ (১৮-০৫-২০২১)
Google Play Billing Library-এর 4.0.0 ভার্সন এবং Kotlin এক্সটেনশন এখন উপলভ্য।
পরিবর্তনগুলির সারাংশ
BillingClient.queryPurchases()পরিবর্তন করতেBillingClient.queryPurchasesAsync()যোগ করা হয়েছে যা ভবিষ্যতের রিলিজে সরিয়ে দেওয়া হবে।নতুন সাবস্ক্রিপশন রিপ্লেসমেন্ট মোড যোগ করা হয়েছে
IMMEDIATE_AND_CHARGE_FULL_PRICE।Play Billing Library-এর কানেকশন স্ট্যাটাস ফিরিয়ে আনতে
BillingClient.getConnectionState()পদ্ধতি যোগ করা হয়েছে।কোন থ্রেডে কোনও পদ্ধতি কল করা যেতে পারে এবং কোন থ্রেডের ফলাফল পোস্ট করা হয় তা নির্দেশ করার জন্য Javadoc এবং প্রয়োগ আপডেট করা হয়েছে।
সাবস্ক্রিপশন আপডেট শুরু করার নতুন উপায় হিসেবে
BillingFlowParams.Builder.setSubscriptionUpdateParams()যোগ করা হয়েছে। এটিBillingFlowParams#getReplaceSkusProrationMode,BillingFlowParams#getOldSkuPurchaseToken,BillingFlowParams#getOldSku,BillingFlowParams.Builder#setReplaceSkusProrationMode,BillingFlowParams.Builder#setOldSku-এর পরিবর্তে ব্যবহার করা হয়, যেগুলি সরিয়ে দেওয়া হয়েছে।Purchase.getQuantity()এবংPurchaseHistoryRecord.getQuantity()যোগ করা হয়েছে।Purchase#getSkus()এবংPurchaseHistoryRecord#getSkus()যোগ করা হয়েছে। এগুলিPurchase#getSkuএবংPurchaseHistoryRecord#getSku-এর পরিবর্তে ব্যবহার করা হয়, যেগুলি সরিয়ে দেওয়া হয়েছে।BillingFlowParams#getSku,BillingFlowParams#getSkuDetailsএবংBillingFlowParams#getSkuTypeসরানো হয়েছে।
Google Play Billing Library 3.0.3 রিলিজ (১২-০৩-২০২১)
Google Play Billing Library, Kotlin এক্সটেনশন ও Unity প্লাগ-ইনের ৩.০.৩ ভার্সন এখন উপলভ্য।
Java ও Kotlin-এ ত্রুটি সমাধান
endConnection()কল করা হলে মেমরি লিক সংক্রান্ত সমস্যার সমাধান করুন।- Google Play Billing Library-তে সমস্যা সমাধান করুন যখন অ্যাপগুলি এটি ব্যবহার করে যা
সিঙ্গেল টাস্ক লঞ্চ মোড ব্যবহার করে। Android লঞ্চার থেকে কোনও অ্যাপ আবার চালু করা হলে এবং সাসপেন্ড হওয়ার আগে বিলিং ডায়ালগ দেখা গেলে,
onPurchasesUpdated()কলব্যাক ট্রিগার করা হবে।
Unity-র ত্রুটি সমাধান
- মেমরি লিক সংক্রান্ত সমস্যার সমাধান করতে Java ভার্সন 3.0.3-এ আপডেট করুন এবং Android লঞ্চার থেকে কোনও অ্যাপ আবার চালু করা হলে এবং সাসপেন্ড হওয়ার আগে বিলিং ডায়ালগ দেখা গেলে কেনাকাটা করার ক্ষেত্রে বাধা সৃষ্টি করে এমন সমস্যার সমাধান করুন।
Google Play Billing Library 3.0.2 রিলিজ (২৪-১১-২০২০)
Google Play Billing Library-এর 3.0.2 ভার্সন এবং Kotlin এক্সটেনশন এখন উপলভ্য।
সমস্যার সমাধান
- Kotlin এক্সটেনশনে একটি সমস্যার সমাধান করা হয়েছে যেখানে "ইতিমধ্যে আবার শুরু করা হয়েছে" সমস্যার কারণে কো-রুটিন ব্যর্থ হয়।
- Kotlin এক্সটেনশন, kotlinx.coroutines লাইব্রেরি ভার্সন ১.৪+ এর সাথে ব্যবহার করা হলে, সমাধান না হওয়া রেফারেন্সের সমস্যা সমাধান করা হয়েছে।
Google Play Billing Library 3.0.1 রিলিজ (৩০-০৯-২০২০)
Google Play Billing Library-এর 3.0.1 ভার্সন এবং Kotlin এক্সটেনশন এখন উপলভ্য।
সমস্যার সমাধান
- বিলিং ফ্লো চলাকালীন অ্যাপ বন্ধ হয়ে গেলে এবং রিস্টোর করা হলে,
PurchasesUpdatedListener-কে কেনাকাটার ফলাফল সহ কল করা নাও হতে পারে। এই সমস্যার সমাধান করা হয়েছে।
Google Play Billing Library 3.0 রিলিজ (০৮-০৬-২০২০)
Google Play Billing Library-এর ভার্সন 3.0.0, Kotlin এক্সটেনশন এবং Unity প্লাগ-ইন এখন উপলভ্য।
পরিবর্তনগুলির সারাংশ
- পুরস্কারপ্রাপ্ত SKU সহায়তা সরানো হয়েছে।
ChildDirectedএবংUnderAgeOfConsentপ্যারামিটার সরানো হয়েছে।- বন্ধ হয়ে যাওয়া ডেভেলপার পেলোড পদ্ধতি সরিয়ে দেওয়া হয়েছে।
- বন্ধ হয়ে যাওয়া পদ্ধতি
BillingFlowParams.setAccountId()এবংBillingFlowParams.setDeveloperId()সরিয়ে দেওয়া হয়েছে। - বন্ধ হয়ে যাওয়া পদ্ধতি
BillingFlowParams.setOldSkus(String oldSku)এবংBillingFlowParams.addOldSku(String oldSku)সরিয়ে দেওয়া হয়েছে। - নালেবিলিটি অ্যানোটেশন যোগ করা হয়েছে।
সমস্যার সমাধান
SkuDetails.getIntroductoryPriceCycles()এখনString-এর পরিবর্তেintরিটার্ন করে।- কোনও অতিরিক্ত প্যারামিটার সেট না করা থাকলেও বিলিং ফ্লোতে অতিরিক্ত প্যারামিটার আছে বলে বিবেচনা করা সংক্রান্ত সমস্যার সমাধান করা হয়েছে।
Google Play Billing Library 2.2.1 রিলিজ (২০-০৫-২০২০)
Google Play Billing লাইব্রেরির 2.2.1 ভার্সন এখন উপলভ্য।
সমস্যার সমাধান
- Java Play Billing লাইব্রেরির ডিফল্ট ভার্সন আপডেট করা হয়েছে যার উপর Kotlin এক্সটেনশন নির্ভর করে।
Google Play Billing Library 2.2.0 রিলিজ এবং Unity সাপোর্ট (২৩-০৩-২০২০)
Google Play Billing-এর ২.২.০ ভার্সন এমন কার্যকারিতা প্রদান করে যা ডেভেলপারদের নিশ্চিত করতে সাহায্য করে যে কেনাকাটা সঠিক ব্যবহারকারীর সাথে অ্যাট্রিবিউট করা হয়েছে। এইসব পরিবর্তন ডেভেলপার পেলোডের উপর ভিত্তি করে কাস্টম সমাধান তৈরি করার প্রয়োজনীয়তা প্রতিস্থাপন করে। এই আপডেটের অংশ হিসেবে, ডেভেলপার পেলোড কার্যকারিতা বন্ধ করা হয়েছে এবং ভবিষ্যতে কোনও রিলিজে সরিয়ে দেওয়া হবে। সাজেস্ট করা বিকল্প সহ আরও তথ্যের জন্য, ডেভেলপার পেলোড দেখুন।
Unity-র জন্য Google Play Billing Billing Library 2
Google Play Billing Library 2-এর বর্তমান Java ও Kotlin ভার্সন ছাড়াও, আমরা Unity-র সাথে ব্যবহার করার জন্য লাইব্রেরির একটি ভার্সন রিলিজ করেছি। Unity অ্যাপ-মধ্যস্থ কেনাকাটা API ব্যবহার করা গেম ডেভেলপাররা এখন আপগ্রেড করতে পারবেন যাতে Google Play Billing Library 2-এর সব ফিচারের সুবিধা নিতে পারেন এবং Google Play Billing Library-র পরবর্তী ভার্সনে আপগ্রেড করা সহজ হয়।
আরও জানতে, Unity-এর সাথে Google Play Billing ব্যবহার করুন নিবন্ধটি দেখুন।
পরিবর্তনগুলির সারাংশ
- Java Google Play Billing Library
AcknowledgePurchaseParams, অবচিতsetDeveloperPayload()এবংgetDeveloperPayload()পদ্ধতিতে।ConsumeParams, অবচিতsetDeveloperPayload()এবংgetDeveloperPayload()পদ্ধতিতে।BillingFlowParams-এ,setAccountId()-এর নাম পরিবর্তন করেsetObfuscatedAccountId()করা হয়েছে এবং এই ফিল্ডে ৬৪ অক্ষরের দৈর্ঘ্যের সীমাবদ্ধতা এবং ব্যক্তিগতভাবে শনাক্তকরণযোগ্য তথ্য (PII) অনুমতি না দেওয়ার সীমাবদ্ধতা ডকুমেন্ট করা হয়েছে।setAccountId()বন্ধ করা হয়েছে হিসেবে চিহ্নিত করা হয়েছে এবং লাইব্রেরির পরবর্তী ভার্সনে এটি সরিয়ে দেওয়া হবে।BillingFlowParams-এ,setObfuscatedProfileId()যোগ করা হয়েছে যাsetObfuscatedAccountId()-এর মতো কাজ করে। আরও তথ্যের জন্য, ডেভেলপার পেলোড আপডেট ও বিকল্প দেখুন।Purchase-এ,BillingFlowParams-এ সেট করা অস্পষ্ট অ্যাকাউন্ট শনাক্তকারী ফিরিয়ে আনতেgetAccountIdentifiers()পদ্ধতি যোগ করা হয়েছে।BillingClient-এ,loadRewardedSku()পদ্ধতিকে অবচিত হিসেবে চিহ্নিত করা হয়েছে, কারণ এটি অবচিত পুরস্কারপ্রাপ্ত SKU-এর অংশ।
Google Play Billing Library 2.1.0 রিলিজ এবং Kotlin Extension 2.1.0 রিলিজ (১০-১২-২০১৯)
Google Play Billing লাইব্রেরির 2.1.0 ভার্সন এবং নতুন Kotlin এক্সটেনশন এখন উপলভ্য। Play Billing Library Kotlin এক্সটেনশন, Kotlin ব্যবহারের জন্য ইডিওমেটিক API বিকল্প প্রদান করে, যার মধ্যে আরও ভালো নাল-সেফটি এবং কোরুটিন অন্তর্ভুক্ত। কোডের উদাহরণ দেখতে, Google Play Billing Library ব্যবহার করুন।
এই ভার্সনে নিম্নলিখিত পরিবর্তনগুলি রয়েছে।
পরিবর্তনগুলির সারাংশ
BillingFlowParams-এ,setOldSku(String oldSku)বন্ধ করে দেওয়া হয়েছে এবংsetOldSku(String oldSku, String purchaseToken)দিয়ে পরিবর্তন করা হয়েছে, যাতে ডিভাইসে একাধিক অ্যাকাউন্ট একই sku-এর মালিক হলে বিভ্রান্তি দূর করা যায়।
Google Play Billing Library 2.0.3 রিলিজ (০৫-০৮-২০১৯)
Google Play Billing লাইব্রেরির 2.0.3 ভার্সন এখন উপলভ্য।
সমস্যার সমাধান
- একটি সমস্যার সমাধান করা হয়েছে যেখানে
querySkuDetailsAsync()মাঝে মাঝে সফল ফলাফল দেখানোর পরিবর্তেDEVELOPER_ERRORকোড সহ ব্যর্থ হয়।
Google Play Billing Library 2.0.2 রিলিজ (০৮-০৭-২০১৯)
Google Play Billing লাইব্রেরির 2.0.2 ভার্সন এখন উপলভ্য। এই রিলিজে রেফারেন্স ডকুমেন্টেশনের আপডেট রয়েছে এবং লাইব্রেরির কার্যকারিতায় কোনও পরিবর্তন করা হয়নি।
Google Play Billing Library 2.0.1 রিলিজ (০৬-০৬-২০১৯)
Google Play Billing লাইব্রেরির 2.0.1 ভার্সন এখন উপলভ্য। এই ভার্সনে নিম্নলিখিত পরিবর্তনগুলি রয়েছে।
সমস্যার সমাধান
- কিছু ক্ষেত্রে ডিবাগ মেসেজ
nullহিসেবে দেখানো হচ্ছিল, এই সমস্যার সমাধান করা হয়েছে। - সম্ভাব্য মেমরি লিক সংক্রান্ত সমস্যার সমাধান করা হয়েছে।
Google Play Billing Library 2.0 রিলিজ (০৭-০৫-২০১৯)
Google Play Billing লাইব্রেরির ২.০ ভার্সন এখন উপলভ্য। এই ভার্সনে নিম্নলিখিত পরিবর্তনগুলি রয়েছে।
কেনাকাটার বিষয়টি তিন দিনের মধ্যে স্বীকার করতে হবে
Google Play আপনার অ্যাপের ভিতর থেকে (অ্যাপ-মধ্যস্থ) বা
অ্যাপের বাইরে থেকে (অ্যাপের বাইরে) প্রোডাক্ট কেনাকাটার সুবিধা দেয়। ব্যবহারকারী আপনার প্রোডাক্ট যেখান থেকেই কিনুন না কেন, Google Play যাতে
কেনাকাটার ধারাবাহিক অভিজ্ঞতা নিশ্চিত করতে পারে, তার জন্য আপনাকে Google Play
Billing Library-এর মাধ্যমে পাওয়া সব কেনাকাটার স্বীকৃতি দিতে হবে। ব্যবহারকারীকে এনটাইটেলমেন্ট দেওয়ার পরে যত তাড়াতাড়ি সম্ভব এটি করতে হবে। আপনি
তিন দিনের মধ্যে কেনাকাটা স্বীকার না করলে, ব্যবহারকারী অটোমেটিক
রিফান্ড পাবেন এবং Google Play কেনাকাটা বাতিল করে দেবে। পেন্ডিং
ট্রানজ্যাকশনের (ভার্সন ২.০-এ নতুন) ক্ষেত্রে, তিন দিনের উইন্ডো শুরু হয়
যখন কেনাকাটা PURCHASED অবস্থায় চলে যায় এবং কেনাকাটা PENDING অবস্থায়
থাকলে এটি প্রযোজ্য হয় না।
সাবস্ক্রিপশনের জন্য, আপনাকে অবশ্যই নতুন কেনাকাটার টোকেন আছে এমন যেকোনও কেনাকাটা স্বীকার করতে হবে। এর অর্থ হল, সব প্রাথমিক কেনাকাটা, প্ল্যান পরিবর্তন এবং আবার সাইন-আপ করার বিষয়টি কনফার্ম করতে হবে, তবে পরবর্তী রিনিউয়াল কনফার্ম করার প্রয়োজন নেই। কোনও কেনাকাটার জন্য স্বীকৃতি প্রয়োজন কিনা তা নির্ধারণ করতে, আপনি কেনাকাটার স্বীকৃতি ফিল্ড চেক করতে পারেন।
Purchase অবজেক্টে এখন একটি
isAcknowledged()
পদ্ধতি অন্তর্ভুক্ত রয়েছে যা কোনও কেনাকাটা স্বীকার করা হয়েছে কিনা তা নির্দেশ করে। এছাড়াও, Google Play Developer API-তে
Purchases.products
এবং
Purchases.subscriptions-এর জন্য অ্যাকনলেজমেন্ট বুলিয়ান ভ্যালু অন্তর্ভুক্ত থাকে।
কেনাকাটা স্বীকার করার আগে, কেনাকাটা আগেই স্বীকার করা হয়েছে কিনা তা নির্ধারণ করতে এই পদ্ধতিগুলি ব্যবহার করতে ভুলবেন না।
আপনি নিম্নলিখিত পদ্ধতির মধ্যে যেকোনও একটি ব্যবহার করে কেনাকাটার স্বীকৃতি দিতে পারেন:
- ব্যবহারযোগ্য প্রোডাক্টের জন্য, ক্লায়েন্ট API-তে পাওয়া
consumeAsync()ব্যবহার করুন। - যেসব প্রোডাক্ট ব্যবহার করা হয় না, সেগুলির জন্য
acknowledgePurchase()ব্যবহার করুন, যা ক্লায়েন্ট API-তে পাওয়া যায়। - এছাড়াও, Server API-তে নতুন
acknowledge()পদ্ধতি উপলভ্য।
BillingFlowParams.setSku() সরিয়ে দেওয়া হয়েছে
এই রিলিজে আগে থেকে বন্ধ হয়ে যাওয়া BillingFlowParams#setSku() পদ্ধতি সরিয়ে দেওয়া হয়েছে। পারচেজ ফ্লোতে প্রোডাক্ট দেখানোর আগে, আপনাকে এখন
BillingClient.querySkuDetailsAsync() কল করতে হবে,
ফলাফল হিসেবে পাওয়া
SkuDetails অবজেক্ট
BillingFlowParams.Builder.setSkuDetails()-এ পাস করতে হবে।
কোডের উদাহরণ দেখতে, Google Play Billing Library ব্যবহার করুন।
ডেভেলপার পেলোড কাজ করে
Google Play Billing লাইব্রেরির ২.০ ভার্সন ডেভেলপার পে-লোড-এর জন্য সহায়তা যোগ করে—যা হল কেনাকাটার সাথে অ্যাটাচ করা যায় এমন ইচ্ছামতো স্ট্রিং। আপনি কোনও কেনাকাটার সাথে ডেভেলপার পেলোড প্যারামিটার অ্যাটাচ করতে পারেন, তবে শুধুমাত্র কেনাকাটা স্বীকৃত বা ব্যবহৃত হলে তবেই। এটি AIDL-এ ডেভেলপার পেলোডের মতো নয়, যেখানে কেনাকাটার ফ্লো চালু করার সময় পেলোড নির্দিষ্ট করা যেতে পারে। যেহেতু কেনাকাটা এখন আপনার অ্যাপের বাইরে থেকে শুরু করা যেতে পারে, তাই এই পরিবর্তন নিশ্চিত করে যে আপনার কাছে কেনাকাটায় পেলোড যোগ করার সুযোগ সবসময় থাকবে।
নতুন লাইব্রেরিতে পেলোড অ্যাক্সেস করতে, Purchase অবজেক্টে এখন একটি
getDeveloperPayload()
পদ্ধতি অন্তর্ভুক্ত রয়েছে।
একই ধরনের অফার
আপনি কোনও SKU-তে ছাড় দিলে, Google Play এখন SKU-এর আসল দাম ফিরিয়ে দেয় যাতে আপনি ব্যবহারকারীদের দেখাতে পারেন যে তারা ছাড় পাচ্ছেন।
SkuDetails-এ আসল SKU-এর দাম ফিরিয়ে আনার জন্য দুটি নতুন পদ্ধতি আছে:
getOriginalPriceAmountMicros()- ছাড়ের আগে SKU-এর আনফর্ম্যাট করা আসল দাম দেখায়।
getOriginalPrice()- অতিরিক্ত কারেন্সি ফর্ম্যাটিং সহ আসল দাম দেখায়।
বাকি থাকা ট্রানজ্যাকশন
Google Play Billing লাইব্রেরির ২.০ ভার্সনের সাথে, আপনাকে অবশ্যই এমন কেনাকাটায় সহায়তা করতে হবে যেখানে এনটাইটেলমেন্ট দেওয়ার আগে অতিরিক্ত অ্যাকশন প্রয়োজন। যেমন, কোনও ব্যবহারকারী নগদ টাকা দিয়ে কোনও দোকান থেকে আপনার অ্যাপ-মধ্যস্থ প্রোডাক্ট কেনার সিদ্ধান্ত নিতে পারেন। এর অর্থ হল, আপনার অ্যাপের বাইরে ট্রানজ্যাকশন সম্পূর্ণ হয়েছে। এই পরিস্থিতিতে, ব্যবহারকারী ট্রানজ্যাকশন সম্পূর্ণ করার পরেই আপনাকে এনটাইটেলমেন্টের অনুমতি দিতে হবে।
বাকি থাকা কেনাকাটা চালু করতে, আপনার অ্যাপ শুরু করার অংশ হিসেবে
enablePendingPurchases()
কল করুন।
Purchase.getPurchaseState()
ব্যবহার করে নির্ধারণ করুন যে কেনাকাটার স্ট্যাটাস PURCHASED নাকি PENDING। মনে রাখবেন যে
স্ট্যাটাস PURCHASED হলে তবেই আপনার এনটাইটেলমেন্ট মঞ্জুর করা উচিত। Purchase স্ট্যাটাস আপডেট চেক করতে
আপনাকে নিম্নলিখিত ধাপগুলি অনুসরণ করতে হবে:
- আপনার অ্যাপ চালু করার সময়, ব্যবহারকারীর সাথে যুক্ত ব্যবহার না করা প্রোডাক্টের তালিকা পেতে
BillingClient.queryPurchases()কল করুন। - ফেরত আসা প্রতিটি
Purchaseঅবজেক্টেPurchase.getPurchaseState()কল করুন। Purchaseঅবজেক্টে হওয়া পরিবর্তনের উত্তর দিতেonPurchasesUpdated()পদ্ধতি প্রয়োগ করুন।
এছাড়াও, Google Play Developer API-তে Purchases.products-এর জন্য PENDING স্ট্যাটাস
অন্তর্ভুক্ত।
সাবস্ক্রিপশনের জন্য পেন্ডিং ট্রানজ্যাকশন কাজ করে না।
এই রিলিজে নতুন রিয়েল-টাইম ডেভেলপার বিজ্ঞপ্তিও চালু করা হয়েছে,
OneTimeProductNotification। এই ধরনের বিজ্ঞপ্তিতে একটি মেসেজ থাকে
যার ভ্যালু হয় ONE_TIME_PRODUCT_PURCHASED অথবা
ONE_TIME_PRODUCT_CANCELED। এই ধরনের বিজ্ঞপ্তি শুধুমাত্র সেইসব কেনাকাটার জন্য পাঠানো হয়
যেগুলি দেরিতে পেমেন্ট করার পদ্ধতির সাথে যুক্ত, যেমন ক্যাশ।
বাকি থাকা কেনাকাটা স্বীকার করার সময়, কেনাকাটার স্ট্যাটাস PURCHASED হলে তবেই স্বীকার করবেন,
PENDING হলে নয়।
API-তে পরিবর্তন
Google Play Billing Library-এর ২.০ ভার্সনে নতুন ফিচার কাজ করার জন্য এবং বর্তমান কার্যকারিতা আরও স্পষ্ট করার জন্য একাধিক API পরিবর্তন করা হয়েছে।
consumeAsync
consumeAsync()
এখন purchaseToken-এর পরিবর্তে
ConsumeParams অবজেক্ট
নেয়। ConsumeParams-এ purchaseToken-এর পাশাপাশি
ঐচ্ছিক ডেভেলপার পেলোডও থাকে।
এই রিলিজে consumeAsync()-এর আগের ভার্সন সরিয়ে দেওয়া হয়েছে।
queryPurchaseHistoryAsync
বিভ্রান্তি কমাতে,
queryPurchaseHistoryAsync()
এখন Purchase অবজেক্টের পরিবর্তে
PurchaseHistoryRecord
অবজেক্ট রিটার্ন করে। PurchaseHistoryRecord অবজেক্টটি Purchase অবজেক্টের
মতোই, তবে এটি শুধুমাত্র queryPurchaseHistoryAsync()-এর মাধ্যমে রিটার্ন করা ভ্যালু দেখায় এবং এতে autoRenewing,
orderId এবং packageName ফিল্ড থাকে না। মনে রাখবেন যে, ফেরত পাঠানো ডেটায় কোনও পরিবর্তন হয়নি—
queryPurchaseHistoryAsync() আগের মতোই একই ডেটা
ফেরত পাঠায়।
BillingResult রিটার্ন ভ্যালু
যেসব API আগে BillingResponse পূর্ণসংখ্যা ভ্যালু রিটার্ন করত, সেগুলি এখন
BillingResult
অবজেক্ট রিটার্ন করে। BillingResult-এ BillingResponse ইন্টিজার এবং একটি ডিবাগ স্ট্রিং থাকে যা আপনি সমস্যা নির্ণয় করতে ব্যবহার করতে পারেন। ডিবাগ স্ট্রিং en-US
লোকেল ব্যবহার করে এবং এটি ব্যবহারকারীদের দেখানোর জন্য নয়।
সমস্যার সমাধান
SkuDetails.getIntroductoryPriceAmountMicros()এখনString-এর পরিবর্তেlongরিটার্ন করে।
Google Play Billing Library 1.2.2 রিলিজ (০৭-০৩-২০১৯)
Google Play Billing লাইব্রেরির 1.2.2 ভার্সন এখন উপলভ্য। এই ভার্সনে নিম্নলিখিত পরিবর্তনগুলি রয়েছে।
সমস্যার সমাধান
- v1.2.1-এ থ্রেডিং সংক্রান্ত যে সমস্যা দেখা গিয়েছিল তা সমাধান করা হয়েছে। ব্যাকগ্রাউন্ড কল আর প্রধান থ্রেড ব্লক করে না।
অন্যান্য পরিবর্তন
- যদিও এখনও মূল থ্রেড ব্যবহার করার সাজেশন দেওয়া হয়, তবে আপনি এখন ব্যাকগ্রাউন্ড থ্রেড থেকে Google Play Billing Library ইনস্ট্যান্টিয়েট করতে পারবেন।
- ANR-এর সম্ভাবনা কমাতে ইনস্ট্যান্টিয়েশন সম্পূর্ণভাবে ব্যাকগ্রাউন্ড থ্রেডে মাইগ্রেট করা হয়েছে।
Play Billing Library 1.2.1 রিলিজ (০৪-০৩-২০১৯)
Google Play Billing লাইব্রেরির 1.2.1 ভার্সন এখন উপলভ্য। এই ভার্সনে নিম্নলিখিত পরিবর্তনগুলি রয়েছে।
প্রধান পরিবর্তনগুলি
- পুরস্কৃত প্রোডাক্টের জন্য সহায়তা যোগ করা হয়েছে। মনিটাইজেশন সংক্রান্ত বিকল্পের ব্যাপারে আরও তথ্য পেতে, পুরস্কৃত প্রোডাক্ট-নির্দিষ্ট ফিচার যোগ করুন দেখুন।
অন্যান্য পরিবর্তন
- টেস্টিং আরও সহজ করতে
PurchasesResultএবংSkuDetailsResult-এর জন্য পাবলিক কনস্ট্রাক্টর যোগ করা হয়েছে। SkuDetailsটি অবজেক্ট নতুন পদ্ধতি,getOriginalJson()ব্যবহার করতে পারবে।- সব AIDL পরিষেবা কল এখন ব্যাকগ্রাউন্ড থ্রেড দ্বারা ম্যানেজ করা হয়।
সমস্যার সমাধান
- নাল কলব্যাক লিসেনার আর পাবলিক API-তে পাস করা হয় না।
Google Play Billing Library 1.2 রিলিজ (১৮-১০-২০১৮)
Google Play Billing লাইব্রেরির 1.2 ভার্সন এখন উপলভ্য। এই ভার্সনে নিম্নলিখিত পরিবর্তনগুলি রয়েছে।
পরিবর্তনগুলির সারাংশ
- Google Play Billing Library এখন Android Software Development Kit লাইসেন্স চুক্তি-এর অধীনে লাইসেন্সপ্রাপ্ত।
launchPriceChangeConfirmationFlowAPI যোগ করা হয়েছে, যা ব্যবহারকারীদের সাবস্ক্রিপশনের দামের বাকি থাকা পরিবর্তন পর্যালোচনা করতে প্রম্পট করে।- ব্যবহারকারীর সাবস্ক্রিপশন আপগ্রেড বা ডাউনগ্রেড করার সময়, নতুন প্রোরেশন মোড,
DEFERRED-এর জন্য সহায়তা যোগ করা হয়েছে। BillingFlowParamsক্লাসে,setSku()-এর পরিবর্তেsetSkuDetails()করা হয়েছে।- ছোটখাটো সমস্যার সমাধান ও কোড অপ্টিমাইজেশন।
দামের পরিবর্তন কনফার্ম করা
আপনি এখন Google Play Console-এ সাবস্ক্রিপশনের দাম পরিবর্তন করতে পারবেন এবং ব্যবহারকারী আপনার অ্যাপে প্রবেশ করলে তাকে নতুন দাম পর্যালোচনা ও গ্রহণ করার জন্য প্রম্পট করতে পারবেন।
এই API ব্যবহার করতে, সাবস্ক্রিপশন প্রোডাক্টের skuDetails ব্যবহার করে একটি PriceChangeFlowParams অবজেক্ট তৈরি করুন এবং তারপরে launchPriceChangeConfirmationFlow() কল করুন। দাম পরিবর্তনের কনফার্মেশন ফ্লো শেষ হলে,
PriceChangeConfirmationListener প্রয়োগ করে ফলাফল ম্যানেজ করুন, যেমনটি নিম্নলিখিত কোড স্নিপেটে দেখানো হয়েছে:
Kotlin
val priceChangeFlowParams = PriceChangeFlowParams.newBuilder() .setSkuDetails(skuDetailsOfThePriceChangedSubscription) .build() billingClient.launchPriceChangeConfirmationFlow(activity, priceChangeFlowParams, object : PriceChangeConfirmationListener() { override fun onPriceChangeConfirmationResult(responseCode: Int) { // Handle the result. } })
জাভা
PriceChangeFlowParams priceChangeFlowParams = PriceChangeFlowParams.newBuilder() .setSkuDetails(skuDetailsOfThePriceChangedSubscription) .build(); billingClient.launchPriceChangeConfirmationFlow(activity, priceChangeFlowParams, new PriceChangeConfirmationListener() { @Override public void onPriceChangeConfirmationResult(int responseCode) { // Handle the result. } });
দাম পরিবর্তনের কনফার্মেশন ফ্লোতে নতুন দামের তথ্য সহ একটি ডায়ালগ দেখানো হয়, যেখানে ব্যবহারকারীকে নতুন দাম গ্রহণ করতে বলা হয়। এই ফ্লো
BillingClient.BillingResponse
টাইপের রেসপন্স কোড ফেরত পাঠায়।
নতুন প্রোরেশন মোড
ব্যবহারকারীর সাবস্ক্রিপশন আপগ্রেড বা ডাউনগ্রেড করার সময়, আপনি নতুন প্রোরেশন
মোড, DEFERRED ব্যবহার করতে পারবেন। এই মোড ব্যবহারকারীর সাবস্ক্রিপশন পরবর্তী রিনিউ করার সময় আপডেট করে।
এই প্রোরেশন মোড কীভাবে সেট করবেন সেই সম্পর্কে আরও জানতে, প্রোরেশন মোড
সেট করুন দেখুন।
SKU-এর বিবরণ সেট করার নতুন পদ্ধতি
BillingFlowParams ক্লাসে, setSku() পদ্ধতি অবচিত করা হয়েছে৷
Google Play Billing ফ্লো অপ্টিমাইজ করার জন্য এই পরিবর্তন করা হয়েছে।
আপনার ইন-অ্যাপ বিলিং ক্লায়েন্টে BillingFlowParams-এর নতুন ইনস্ট্যান্স তৈরি করার সময়, আমরা সাজেস্ট করি যে আপনি
setSkuDetails() ব্যবহার করে সরাসরি JSON অবজেক্টের সাথে কাজ করুন, যেমনটি নিম্নলিখিত কোড স্নিপেটে দেখানো হয়েছে:
BillingFlowParams বিল্ডার ক্লাসে, setSku() পদ্ধতি অবচিত করা
হয়েছে। পরিবর্তে, নিম্নলিখিত কোড স্নিপেটে দেখানো setSkuDetails() পদ্ধতি ব্যবহার করুন। setSkuDetails() অবজেক্টে পাস করা অবজেক্টটি
querySkuDetailsAsync()
মেথড থেকে আসে।
Kotlin
private lateinit var mBillingClient: BillingClient private val mSkuDetailsMap = HashMap<String, SkuDetails>() private fun querySkuDetails() { val skuDetailsParamsBuilder = SkuDetailsParams.newBuilder() mBillingClient.querySkuDetailsAsync(skuDetailsParamsBuilder.build() ) { responseCode, skuDetailsList -> if (responseCode == 0) { for (skuDetails in skuDetailsList) { mSkuDetailsMap[skuDetails.sku] = skuDetails } } } } private fun startPurchase(skuId: String) { val billingFlowParams = BillingFlowParams.newBuilder() .setSkuDetails(mSkuDetailsMap[skuId]) .build() }
জাভা
private BillingClient mBillingClient; private Map<String, SkuDetails> mSkuDetailsMap = new HashMap<>(); private void querySkuDetails() { SkuDetailsParams.Builder skuDetailsParamsBuilder = SkuDetailsParams.newBuilder(); mBillingClient.querySkuDetailsAsync(skuDetailsParamsBuilder.build(), new SkuDetailsResponseListener() { @Override public void onSkuDetailsResponse(int responseCode, List<SkuDetails> skuDetailsList) { if (responseCode == 0) { for (SkuDetails skuDetails : skuDetailsList) { mSkuDetailsMap.put(skuDetails.getSku(), skuDetails); } } } }); } private void startPurchase(String skuId) { BillingFlowParams billingFlowParams = BillingFlowParams.newBuilder() .setSkuDetails(mSkuDetailsMap.get(skuId)) .build(); }
Play Billing Library 1.1 রিলিজ (০৭-০৫-২০১৮)
Google Play Billing লাইব্রেরির 1.1 ভার্সন এখন উপলভ্য। এই ভার্সনে নিম্নলিখিত পরিবর্তনগুলি রয়েছে।
পরিবর্তনগুলির সারাংশ
- আগে থেকে থাকা সাবস্ক্রিপশন আপগ্রেড/ডাউনগ্রেড করার সময়
BillingFlowParams-এ প্রোরেশন মোড নির্দিষ্ট করার জন্য সহায়তা যোগ করা হয়েছে। BillingFlowParams-এreplaceSkusProrationবুলিয়ান ফ্ল্যাগ আর কাজ করে না। পরিবর্তেreplaceSkusProrationModeব্যবহার করুন।- ব্যর্থ উত্তরের জন্য
launchBillingFlow()এখন কলব্যাক ট্রিগার করে।
আচরণগত পরিবর্তন
Google Play Billing লাইব্রেরির 1.1 ভার্সনে নিম্নলিখিত আচরণগত পরিবর্তন করা হয়েছে।
ডেভেলপাররা BillingFlowParams ক্লাসে replaceSkusProrationMode সেট করতে পারবেন
ব্যবহারকারীর সাবস্ক্রিপশন আপগ্রেড বা ডাউনগ্রেড করার সময়
ProrationMode-এ প্রোরেশনের ধরন সম্পর্কে আরও বিবরণ দেওয়া থাকে।
Kotlin
BillingFlowParams.newBuilder() .setSku(skuId) .setType(billingType) .setOldSku(oldSku) .setReplaceSkusProrationMode(replaceSkusProrationMode) .build()
জাভা
BillingFlowParams.newBuilder() .setSku(skuId) .setType(billingType) .setOldSku(oldSku) .setReplaceSkusProrationMode(replaceSkusProrationMode) .build();
Google Play-তে নিম্নলিখিত প্রোরেশন মোড কাজ করে:
IMMEDIATE_WITH_TIME_PRORATION |
পরিবর্তন অবিলম্বে কার্যকর হয় এবং নতুন মেয়াদ শেষ হওয়ার সময় প্রো-রেট করা হবে এবং ব্যবহারকারীকে ক্রেডিট বা চার্জ করা হবে। এটি হল বর্তমান ডিফল্ট অ্যাকশন। |
IMMEDIATE_AND_CHARGE_PRORATED_PRICE |
রিপ্লেসমেন্ট সাথে সাথেই কার্যকর হয় এবং বিলিং চক্র একই থাকে। বাকি সময়ের জন্য
দাম চার্জ করা হবে।
মনে রাখবেন: এই বিকল্পটি শুধুমাত্র সাবস্ক্রিপশন আপগ্রেড করার জন্য উপলভ্য। |
IMMEDIATE_WITHOUT_PRORATION |
পরিবর্তন অবিলম্বে কার্যকর হয় এবং পরবর্তী পুনরাবৃত্তির সময় নতুন দাম চার্জ করা হবে। বিলিং চক্র একই থাকে। |
replaceSkusProration আর BillingFlowParams ক্লাসে কাজ করবে না
ডেভেলপাররা আগে সাবস্ক্রিপশন আপগ্রেড করার অনুরোধের জন্য আনুপাতিক পরিমাণ চার্জ করতে
বুলিয়ান ফ্ল্যাগ সেট করতে পারতেন। যেহেতু আমরা ProrationMode-কে সাপোর্ট করছি,
যার মধ্যে আরও বিস্তারিত প্রোরেশন সংক্রান্ত নির্দেশাবলী রয়েছে, তাই এই বুলিয়ান ফ্ল্যাগ আর
সাপোর্ট করা হয় না।
launchBillingFlow() এখন ব্যর্থ রেসপন্সের জন্য কলব্যাক ট্রিগার করে
বিলিং লাইব্রেরি সবসময়
PurhcasesUpdatedListener
কলব্যাক ট্রিগার করবে এবং অ্যাসিঙ্ক্রোনাসভাবে
BillingResponse
রিটার্ন করবে। BillingResponse-এর
সিঙ্ক্রোনাস রিটার্ন ভ্যালুও
রাখা হয়।
সমস্যার সমাধান
- পরিষেবা ডিসকানেক্ট হয়ে গেলে, অ্যাসিঙ্ক পদ্ধতিতে আগেভাগে সঠিকভাবে বেরিয়ে আসে।
Builderparam অবজেক্ট আর তৈরি করা অবজেক্টকে মিউটেট করে না।- সমস্যা ৬৮০৮৭১৪১:
launchBillingFlow()এখন ব্যর্থ উত্তরের জন্য কলব্যাক ট্রিগার করে।
Google Play Billing Library 1.0 রিলিজ (১৯-০৯-২০১৭, ঘোষণা)
Google Play Billing লাইব্রেরির 1.0 ভার্সন এখন উপলভ্য। এই ভার্সনে নিম্নলিখিত পরিবর্তনগুলি রয়েছে।
গুরুত্বপূর্ণ পরিবর্তন
- লাইব্রেরির ম্যানিফেস্টে এম্বেড করা বিলিংয়ের অনুমতি। Android ম্যানিফেস্টে
com.android.vending.BILLINGঅনুমতি যোগ করার আর কোনও প্রয়োজন নেই। BillingClient.Builderক্লাসে নতুন বিল্ডার যোগ করা হয়েছে।- SKU কোয়েরি করার পদ্ধতিতে ব্যবহার করার জন্য
SkuDetailsParamsক্লাসের জন্য বিল্ডার প্যাটার্ন চালু করা হয়েছে। - সামঞ্জস্য বজায় রাখার জন্য (একই রিটার্ন আর্গুমেন্টের নাম ও ক্রম) একাধিক API পদ্ধতি আপডেট করা হয়েছে।
আচরণগত পরিবর্তন
Google Play Billing লাইব্রেরির ১.০ ভার্সনে নিম্নলিখিত আচরণগত পরিবর্তন করা হয়েছে।
BillingClient.Builder ক্লাস
BillingClient.Builder
এখন newBuilder প্যাটার্নের মাধ্যমে শুরু করা হয়েছে:
Kotlin
billingClient = BillingClient.newBuilder(context).setListener(this).build()
জাভা
billingClient = BillingClient.newBuilder(context).setListener(this).build();
BillingFlowParams ক্লাস ব্যবহার করে এখন launchBillingFlow পদ্ধতি কল করা হয়
কোনও কেনাকাটা বা সাবস্ক্রিপশনের জন্য বিলিং ফ্লো শুরু করতে, launchBillingFlow() পদ্ধতিটি একটি
BillingFlowParams
ইনস্ট্যান্স গ্রহণ করে যা অনুরোধের জন্য নির্দিষ্ট প্যারামিটার সহ শুরু করা হয়:
Kotlin
BillingFlowParams.newBuilder().setSku(skuId) .setType(billingType) .setOldSku(oldSku) .build() // Then, use the BillingFlowParams to start the purchase flow val responseCode = billingClient.launchBillingFlow(builder.build())
জাভা
BillingFlowParams.newBuilder().setSku(skuId) .setType(billingType) .setOldSku(oldSku) .build(); // Then, use the BillingFlowParams to start the purchase flow int responseCode = billingClient.launchBillingFlow(builder.build());
উপলভ্য প্রোডাক্ট সম্পর্কে কোয়েরি করার নতুন উপায়
queryPurchaseHistoryAsync() এবং
querySkuDetailsAsync() পদ্ধতির জন্য আর্গুমেন্টগুলি
একটি বিল্ডার প্যাটার্নে মোড়ানো হয়েছে:
Kotlin
val params = SkuDetailsParams.newBuilder() params.setSkusList(skuList) .setType(itemType) billingClient.querySkuDetailsAsync(params.build(), object : SkuDetailsResponseListener() { ... })
জাভা
SkuDetailsParams.Builder params = SkuDetailsParams.newBuilder(); params.setSkusList(skuList) .setType(itemType); billingClient.querySkuDetailsAsync(params.build(), new SkuDetailsResponseListener() {...})
আপনার সুবিধার জন্য এবং আমাদের API জুড়ে সামঞ্জস্যপূর্ণ হওয়ার জন্য, ফলাফলটি এখন ফলাফল কোড এবং
SkuDetails
অবজেক্টের একটি তালিকার মাধ্যমে আগের র্যাপার ক্লাসের পরিবর্তে ফেরত দেওয়া হয়:
Kotlin
fun onSkuDetailsResponse(@BillingResponse responseCode: Int, skuDetailsList: List<SkuDetails>)
জাভা
public void onSkuDetailsResponse(@BillingResponse int responseCode, List<SkuDetails> skuDetailsList)
onConsumeResponse() পদ্ধতিতে প্যারামিটারের ক্রম পরিবর্তন করা হয়েছে
আমাদের API জুড়ে সামঞ্জস্যপূর্ণ হতে
ConsumeResponseListener
ইন্টারফেস থেকে
onConsumeResponse-এর
আর্গুমেন্টের ক্রম পরিবর্তন করা হয়েছে:
Kotlin
fun onConsumeResponse(@BillingResponse responseCode: Int, outToken: String)
জাভা
public void onConsumeResponse(@BillingResponse int responseCode, String outToken)
আনর্যাপ করা PurchaseResult অবজেক্ট
PurchaseResult
আমাদের API জুড়ে সামঞ্জস্যপূর্ণ হতে আনর্যাপ করা হয়েছে:
Kotlin
fun onPurchaseHistoryResponse(@BillingResponse responseCode: Int, purchasesList: List<Purchase>)
জাভা
void onPurchaseHistoryResponse(@BillingResponse int responseCode, List<Purchase> purchasesList)
সমস্যার সমাধান
- PURCHASES_UPDATED বান্ডেলে কোনও রেসপন্স কোড নেই
- ডিভাইস ঘোরানোর সময় ProxyBillingActivity এবং PurchasesUpdatedListener সংক্রান্ত সমস্যার সমাধান করা
ডেভেলপার প্রিভিউ ১ রিলিজ (১২-০৬-২০১৭, ঘোষণা)
ডেভেলপার প্রিভিউ লঞ্চ করা হয়েছে, যার লক্ষ্য হল বিলিংয়ের ক্ষেত্রে ডেভেলপমেন্ট প্রসেসকে সহজ করা, যাতে ডেভেলপাররা Android অ্যাপের জন্য নির্দিষ্ট লজিক প্রয়োগ করার দিকে মনোযোগ দিতে পারেন, যেমন অ্যাপ্লিকেশন আর্কিটেকচার এবং নেভিগেশন স্ট্রাকচার।
Google Play Billing API-এর সাথে আপনার Android অ্যাপ ইন্টিগ্রেট করার সময় ব্যবহার করার জন্য লাইব্রেরিতে বেশ কিছু সুবিধাজনক ক্লাস ও ফিচার অন্তর্ভুক্ত থাকে। এছাড়াও, লাইব্রেরিটি Android ইন্টারফেস ডেফিনিশন ল্যাঙ্গুয়েজ (AIDL) পরিষেবার উপরে একটি অ্যাবস্ট্রাকশন লেয়ার প্রদান করে, যা ডেভেলপারদের জন্য অ্যাপ এবং Google Play Billing API-এর মধ্যে ইন্টারফেস সংজ্ঞায়িত করা সহজ করে তোলে।