এই নথিতে গুগল প্লে বিলিং লাইব্রেরির জন্য রিলিজ নোট রয়েছে।
গুগল প্লে বিলিং লাইব্রেরি 8.3.0 রিলিজ (2025-12-23)
গুগল প্লে বিলিং লাইব্রেরির সংস্করণ ৮.৩.০ এবং কোটলিন এক্সটেনশন এখন উপলব্ধ।
পরিবর্তনের সারাংশ
বহিরাগত অর্থপ্রদানের জন্য নতুন API:
- বাহ্যিক অর্থপ্রদান প্রবাহকে সমর্থন করার জন্য ক্লাস যোগ করা হয়েছে:
- বাহ্যিক অর্থপ্রদান সক্ষম করতে
enableBillingProgram(EnableBillingProgramParams)যোগ করা হয়েছে। - বহিরাগত পেমেন্ট প্রবাহ চালু করার জন্য
BillingFlowParams.Builder.enableDeveloperBillingOptionযোগ করা হয়েছে।
গুগল প্লে বিলিং লাইব্রেরি 8.2.1 রিলিজ (2025-12-15)
গুগল প্লে বিলিং লাইব্রেরির সংস্করণ ৮.২.১ এবং কোটলিন এক্সটেনশন এখন উপলব্ধ।
বাগ সংশোধন
-
isBillingProgramAvailableAsyncএবংcreateBillingProgramReportingDetailsAsyncএর একটি বাগ সংশোধন করা হয়েছে। 8.2.0 এ প্রবর্তিত এই API গুলি ব্যবহার করার জন্য 8.2.1 সংস্করণে আপডেট করুন।
গুগল প্লে বিলিং লাইব্রেরি 8.2.0 রিলিজ (2025-12-09)
গুগল প্লে বিলিং লাইব্রেরির সংস্করণ ৮.২.০ এবং কোটলিন এক্সটেনশন এখন উপলব্ধ।
পরিবর্তনের সারাংশ
বহিরাগত কন্টেন্ট লিঙ্ক এবং বহিরাগত অফারগুলির জন্য নতুন API:
- এই প্রোগ্রামগুলির জন্য
BillingClientসেটআপ করতেenableBillingProgramযোগ করা হয়েছে। - ব্যবহারকারীর যোগ্যতা নির্ধারণের জন্য
isBillingProgramAvailableAsyncযোগ করা হয়েছে। - রিপোর্টিংয়ের জন্য ব্যবহার করা আবশ্যক এমন বহিরাগত লেনদেন টোকেন তৈরি করতে
createBillingProgramReportingDetailsAsyncযোগ করা হয়েছে। - ডিজিটাল কন্টেন্ট অফার বা অ্যাপ ডাউনলোডের বাহ্যিক লিঙ্ক শুরু করতে
launchExternalLinkযোগ করা হয়েছে।
- এই প্রোগ্রামগুলির জন্য
বহিরাগত অফার প্রোগ্রামে পরিবর্তন:
- এক্সটার্নাল অফার প্রোগ্রামের জন্য নীতিগত পরিবর্তন রয়েছে। বিস্তারিত জানার জন্য প্রোগ্রামের পরিবর্তনগুলি দেখুন। নতুন API গুলির সাথে এক্সটার্নাল অফার ফ্লো কীভাবে চালু করবেন তা বুঝতে, ইন্টিগ্রেশন গাইডটি দেখুন।
-
BillingClient.Builder.enableExternalOfferAPI বন্ধ করা হয়েছে। -
isExternalOfferAvailableAsyncAPI বন্ধ করা হয়েছে। -
createExternalOfferReportingDetailsAsyncAPI বন্ধ করা হয়েছে। -
showExternalOfferInformationDialogAPI বন্ধ করা হয়েছে।
গুগল প্লে বিলিং লাইব্রেরি 8.1.0 রিলিজ (2025-11-06)
গুগল প্লে বিলিং লাইব্রেরির সংস্করণ ৮.১.০ এবং কোটলিন এক্সটেনশন এখন উপলব্ধ।
পরিবর্তনের সারাংশ
স্থগিত সদস্যতা
সাবস্ক্রিপশনের জন্য অনুসন্ধান করার সময় স্থগিত সাবস্ক্রিপশন অন্তর্ভুক্ত করার জন্য
BillingClient.queryPurchasesAsync()পদ্ধতিতে একটি নতুন প্যারামিটার যোগ করা হয়েছে। স্থগিত সাবস্ক্রিপশনগুলি এখনও ব্যবহারকারীর জন্য দায়ী করা হয়, কিন্তু সক্রিয় নয়, হয় ব্যবহারকারী সাবস্ক্রিপশন থামিয়ে দেওয়ার কারণে অথবা তাদের পুনর্নবীকরণ পেমেন্ট পদ্ধতি প্রত্যাখ্যান করা হয়েছে বলে।লিসেনারের মধ্যে ফেরত পাঠানো
Purchaseঅবজেক্টটি যেকোনো স্থগিত সাবস্ক্রিপশনের জন্যisSuspended() = trueদেখাবে। এই ক্ষেত্রে, আপনার ক্রয়কৃত সাবস্ক্রিপশনে অ্যাক্সেস দেওয়া উচিত নয়, বরং ব্যবহারকারীকে সাবস্ক্রিপশন কেন্দ্রে নিয়ে যাওয়া উচিত যেখানে ব্যবহারকারী তাদের পেমেন্ট পদ্ধতি পরিচালনা করতে পারবেন বা তাদের সাবস্ক্রিপশন পুনরায় সক্রিয় করতে পজ স্টেট করতে পারবেন।সাবস্ক্রিপশনের আপডেট:
BillingFlowParams.ProductDetailsParamsঅবজেক্টে এখনsetSubscriptionProductReplacementParams()পদ্ধতি রয়েছে যার মাধ্যমে আপনি পণ্য স্তর প্রতিস্থাপনের তথ্য নির্দিষ্ট করতে পারেন।SubscriptionProductReplacementParamsঅবজেক্টের দুটি সেটার পদ্ধতি রয়েছে:-
setOldProductId: বর্তমানProductDetailsএ থাকা পণ্য দ্বারা পুরাতন পণ্যটি প্রতিস্থাপন করা প্রয়োজন। -
setReplacementMode: এটি হল আইটেম লেভেল রিপ্লেসমেন্ট মোড। মোডগুলি মূলত SubscriptionUpdateParams এর মতোই, তবে মান ম্যাপিং আপডেট করা হয়েছে। একটি নতুন রিপ্লেসমেন্ট মোডKEEP_EXISTINGচালু করা হয়েছে যা আপনাকে একটি আইটেমের জন্য বিদ্যমান পেমেন্ট সময়সূচী অপরিবর্তিত রাখতে দেয়।
-
SubscriptionUpdateParams setSubscriptionReplacementMode বন্ধ করা হবে। এর পরিবর্তে আপনার
SubscriptionProductReplacementParams.setReplacementModeব্যবহার করা উচিত।
minSdkVersion23 এ আপডেট করা হয়েছে।এককালীন পণ্যের জন্য প্রি-অর্ডার API সক্ষম করা হয়েছে
ProductDetails.oneTimePurchaseOfferDetails.getPreorderDetails()API যা প্রি-অর্ডারের বিবরণ পায়, এখন ব্যবহারের জন্য উপলব্ধ।গুগল প্লে বিলিং লাইব্রেরি এখন কোটলিন সংস্করণ 2.2.0 সমর্থন করে।
গুগল প্লে বিলিং লাইব্রেরি 8.0.0 রিলিজ (2025-06-30)
গুগল প্লে বিলিং লাইব্রেরির ৮.০.০ সংস্করণ এবং কোটলিন এক্সটেনশন এখন উপলব্ধ।
পরিবর্তনের সারাংশ
অ্যাপ-মধ্যস্থ আইটেমগুলিকে এখন এককালীন পণ্য হিসাবে উল্লেখ করা হবে।
এককালীন পণ্যের জন্য একাধিক ক্রয়ের বিকল্প এবং অফার।
এখন আপনার এককালীন পণ্যের জন্য একাধিক ক্রয় বিকল্প এবং অফার থাকতে পারে। এটি আপনাকে আপনার পণ্যগুলি কীভাবে বিক্রি করবেন তাতে নমনীয়তা প্রদান করে এবং সেগুলি পরিচালনার জটিলতা হ্রাস করে।
queryProductDetailsAsync()পদ্ধতি উন্নত করা হয়েছে।PBL 8.0.0 এর আগে,
queryProductDetailsAsync()পদ্ধতিটি এমন পণ্য ফেরত দিত না যা আনা যেত না। এটি পণ্যটি খুঁজে না পাওয়া বা ব্যবহারকারীর জন্য কোনও অফার উপলব্ধ না থাকার কারণে হতে পারে। PBL 8.0.0 এর সাথে, আনফেচড পণ্যগুলিকে একটি নতুন পণ্য-স্তরের স্ট্যাটাস কোড সহ ফেরত দেওয়া হয় যা আনফেচড পণ্য সম্পর্কে তথ্য প্রদান করে। মনে রাখবেন যেProductDetailsResponseListener.onProductDetailsResponse()এর স্বাক্ষরে একটি পরিবর্তন রয়েছে যার জন্য আপনার অ্যাপে পরিবর্তন প্রয়োজন। আরও তথ্যের জন্য, process the result দেখুন।স্বয়ংক্রিয় পরিষেবা পুনঃসংযোগ।
নতুন
BillingClient.Builder.enableAutoServiceReconnection()বিল্ডার প্যারামিটার ডেভেলপারদের স্বয়ংক্রিয় পরিষেবা পুনঃসংযোগে অপ্ট-ইন করতে দেয়, যা Play Billing পরিষেবার সাথে পুনঃসংযোগ স্বয়ংক্রিয়ভাবে পরিচালনা করে এবং পরিষেবা সংযোগ বিচ্ছিন্ন হওয়ার ক্ষেত্রেstartConnection()ম্যানুয়ালি কল করার প্রয়োজনীয়তা দূর করে সংযোগ ব্যবস্থাপনাকে সহজ করে। আরও তথ্যের জন্য, Automatically Re-establish a Connection দেখুন।launchBillingFlow()পদ্ধতির জন্য সাব-রেসপন্স কোড।launchBillingFlow()থেকে ফিরে আসা BillingResult-এ এখন একটি সাব-রেসপন্স কোড ফিল্ড অন্তর্ভুক্ত থাকবে। এই ফিল্ডটি শুধুমাত্র কিছু ক্ষেত্রে পূরণ করা হবে যাতে ব্যর্থতার আরও সুনির্দিষ্ট কারণ জানা যায়। সাব-রেসপন্স ফিল্ডের নিম্নলিখিত মান থাকতে পারে:-
PAYMENT_DECLINED_DUE_TO_INSUFFICIENT_FUNDS- ব্যবহারকারীর তহবিল যখন তারা যে জিনিসটি কিনতে চাইছেন তার দামের চেয়ে কম থাকে তখন ফেরত দেওয়া হয়। -
USER_INELIGIBLE- যখন ব্যবহারকারী সাবস্ক্রিপশন অফারের জন্য কনফিগার করা যোগ্যতার প্রয়োজনীয়তা পূরণ না করে তখন ফেরত পাঠানো হয়। -
NO_APPLICABLE_SUB_RESPONSE_CODE- ডিফল্ট মান, যখন অন্য কোনও সাব-রেসপন্স কোড প্রযোজ্য না হয় তখন ফেরত পাঠানো হয়।
-
queryPurchaseHistory()পদ্ধতিটি সরানো হয়েছে।queryPurchaseHistory()পদ্ধতিটি যা পূর্বে অবচিত হিসেবে চিহ্নিত ছিল এখন তা সরানো হয়েছে। এর পরিবর্তে কোন বিকল্প API ব্যবহার করবেন সে সম্পর্কে বিস্তারিত জানতে Query Purchase History দেখুন।কোয়েরি
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)ব্যবহার করুন।
গুগল প্লে বিলিং লাইব্রেরি ৭.১.১ রিলিজ (২০২৪-১০-০৩)
গুগল প্লে বিলিং লাইব্রেরির সংস্করণ ৭.১.১ এবং কোটলিন এক্সটেনশন এখন উপলব্ধ।
বাগ সংশোধন
- Play Billing Library 7.1.0-এ
BillingResultরেসপন্স কোড পরীক্ষা করার সাথে সম্পর্কিত একটি বাগ সংশোধন করা হয়েছে।
গুগল প্লে বিলিং লাইব্রেরি ৭.১.০ রিলিজ (২০২৪-০৯-১৯)
গুগল প্লে বিলিং লাইব্রেরির সংস্করণ ৭.১.০ এবং কোটলিন এক্সটেনশন এখন উপলব্ধ।
পরিবর্তনের সারাংশ
- সংযোগের অবস্থা এবং ব্যবস্থাপনার সাথে সম্পর্কিত উন্নত থ্রেড নিরাপত্তা।
- [
BillingResult][billing-result] রেসপন্স কোড পরীক্ষার জন্য আংশিক পরিবর্তন আনা হয়েছে যা Play Billing Library 7.1.1 এ সম্পূর্ণরূপে প্রকাশিত হয়েছে। এই বৈশিষ্ট্যটি ব্যবহার করে আপনার ইন্টিগ্রেশন পরীক্ষা করার জন্য, আপনাকে Play Billing Library 7.1.1 এ আপগ্রেড করতে হবে। একটি বাগ বিদ্যমান যা শুধুমাত্র [billing overrides testing enabled][enable-billing-overrides-testing] সহ অ্যাপ্লিকেশনগুলিকে প্রভাবিত করবে এবং নিয়মিত ব্যবহারকে প্রভাবিত করবে না। আরও তথ্যের জন্য, TestBillingResultরেসপন্স কোডগুলি দেখুন। [billing-result]: /reference/com/android/billingclient/api/BillingResult [enable-billing-overrides-testing]: /google/play/billing/test-response-codes#enable-billing-overrides-testing
গুগল প্লে বিলিং লাইব্রেরি ৭.০.০ রিলিজ (২০২৪-০৫-১৪)
গুগল প্লে বিলিং লাইব্রেরির ৭.০.০ সংস্করণ এবং কোটলিন এক্সটেনশন এখন উপলব্ধ।
পরিবর্তনের সারাংশ
কিস্তি সাবস্ক্রিপশন সমর্থন করার জন্য API যোগ করা হয়েছে।
- ব্যবহারকারীরা যে কিস্তির বেস প্ল্যানের জন্য কিনতে পারবেন তার জন্য [
ProductDetails.InstallmentPlanDetails][installment-details] যোগ করা হয়েছে। এই API আপনার অ্যাপকে কিস্তির পরিকল্পনা এবং ব্যবহারকারীকে সম্পর্কিত তথ্য প্রদানের জন্য এর প্রতিশ্রুতি সেটআপ সনাক্ত করতে সাহায্য করে। আরও জানতে, আমাদের [সাবস্ক্রিপশন কিস্তি নির্দেশিকা][installments] দেখুন। [installment-details]: /reference/com/android/billingclient/api/ProductDetails.InstallmentPlanDetails [installments]: /google/play/billing/subscriptions#installments
- ব্যবহারকারীরা যে কিস্তির বেস প্ল্যানের জন্য কিনতে পারবেন তার জন্য [
BillingClient.Builder.enablePendingPurchases
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সরানো হয়েছে।- ডেভেলপারদের লিসেনার কলব্যাকে
UserChoiceBillingListenerএবংUserChoiceDetailsসহBillingClient.Builder.enableUserChoiceBilling()ব্যবহার করা উচিত।
- ডেভেলপারদের লিসেনার কলব্যাকে
BillingFlowParams.ProrationMode,BillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceProrationMode(), এবংBillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceSkusProrationMode()সরানো হয়েছে। - ডেভেলপারদেরBillingFlowParams.SubscriptionUpdateParams.ReplacementModeব্যবহার করা উচিতBillingFlowParams.SubscriptionUpdateParams.Builder#setSubscriptionReplacementMode(int)এর পরিবর্তে। -BillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceProrationMode(). -BillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceSkusProrationMode().BillingFlowParams.SubscriptionUpdateParams.Builder#setOldSkuPurchaseToken()সরানো হয়েছে। - ডেভেলপারদের পরিবর্তেBillingFlowParams.SubscriptionUpdateParams.Builder#setOldPurchaseToken(java.lang.String)ব্যবহার করা উচিত।BillingClient.queryPurchaseHistoryAsync()বন্ধ করা হয়েছে এবং ভবিষ্যতের রিলিজে এটি সরিয়ে ফেলা হবে। ডেভেলপারদের পরিবর্তে নিম্নলিখিত বিকল্পগুলি ব্যবহার করা উচিত:- স্বীকৃত এবং মুলতুবি কেনাকাটা: সক্রিয় কেনাকাটাগুলি আনতে
BillingClient.queryPurchasesAsync()ব্যবহার করুন। - ব্যবহৃত ক্রয়: ডেভেলপারদের তাদের নিজস্ব সার্ভারে ব্যবহৃত ক্রয়ের হিসাব রাখা উচিত।
- বাতিল করা কেনাকাটা: voided-purchases ডেভেলপার API ব্যবহার করুন।
- আরও বিস্তারিত জানার জন্য, কোয়েরি ক্রয়ের ইতিহাস দেখুন
- স্বীকৃত এবং মুলতুবি কেনাকাটা: সক্রিয় কেনাকাটাগুলি আনতে
BillingFlowParams.ProductDetailsParams.setOfferToken()এখন ডেভেলপাররা যখন একটি খালিofferTokenউল্লেখ করে তখন একটি ব্যতিক্রম করে।minSdkVersion21 এ এবংtargetSdkVersion34 এ আপডেট করা হয়েছে।
গুগল প্লে বিলিং লাইব্রেরি 6.2.1 রিলিজ (2024-04-16)
গুগল প্লে বিলিং লাইব্রেরির সংস্করণ 6.2.1 এবং কোটলিন এক্সটেনশন এখন উপলব্ধ।
পরিবর্তনের সারাংশ
-
BillingClient.showAlternativeBillingOnlyInformationDialog()এ একটি বাগ ঠিক করা হয়েছে যেখানে ডায়ালগ সম্পূর্ণ হওয়ার পরে কিছু ক্ষেত্রেAlternativeBillingOnlyInformationDialogListenerকল নাও করা যেতে পারে।
গুগল প্লে বিলিং লাইব্রেরি 6.2.0 রিলিজ (2024-03-06)
গুগল প্লে বিলিং লাইব্রেরির সংস্করণ 6.2.0 এবং কোটলিন এক্সটেনশন এখন উপলব্ধ।
পরিবর্তনের সারাংশ
- বহিরাগত অফারগুলিকে সমর্থন করার জন্য API যোগ করা হয়েছে
- বহিরাগত অফার প্রদানের ক্ষমতা সক্ষম করার জন্য
BillingClient.Builder.enableExternalOffer()যোগ করা হয়েছে। - বহিরাগত অফার কার্যকারিতা প্রদানের প্রাপ্যতা পরীক্ষা করার জন্য
BillingClient.isExternalOfferAvailableAsync()যোগ করা হয়েছে। - ব্যবহারকারীদের অ্যাপের বাইরে নিয়ে যাওয়ার আগে ব্যবহারকারীদের একটি তথ্য ডায়ালগ দেখানোর জন্য
BillingClient.showExternalOfferInformationDialog()যোগ করা হয়েছে। - বহিরাগত অফারের মাধ্যমে করা লেনদেন রিপোর্ট করার জন্য প্রয়োজনীয় একটি পেলোড তৈরি করতে
BillingClient.createExternalOfferReportingDetailsAsync()যোগ করা হয়েছে।
- বহিরাগত অফার প্রদানের ক্ষমতা সক্ষম করার জন্য
গুগল প্লে বিলিং লাইব্রেরি 6.1.0 রিলিজ (2023-11-14)
গুগল প্লে বিলিং লাইব্রেরির সংস্করণ 6.1.0 এবং কোটলিন এক্সটেনশন এখন উপলব্ধ।
পরিবর্তনের সারাংশ
- শুধুমাত্র বিকল্প বিলিং সমর্থন করার জন্য API যোগ করা হয়েছে (অর্থাৎ ব্যবহারকারীর পছন্দ ছাড়াই)
- শুধুমাত্র বিকল্প বিলিং অফার করার ক্ষমতা কার্যকরীভাবে সক্ষম করার জন্য
BillingClient.Builder.enableAlternativeBillingOnly()যোগ করা হয়েছে। - শুধুমাত্র বিকল্প বিলিং অফার করার উপলব্ধতা পরীক্ষা করার জন্য
BillingClient.isAlternativeBillingOnlyAvailableAsync()যোগ করা হয়েছে। - শুধুমাত্র বিকল্প বিলিং ব্যবহার করা হচ্ছে কিনা তা ব্যবহারকারীদের জানানোর জন্য একটি তথ্য ডায়ালগ দেখানোর জন্য
BillingClient.showAlternativeBillingOnlyInformationDialog()যোগ করা হয়েছে। - শুধুমাত্র বিকল্প বিলিংয়ের মাধ্যমে করা লেনদেন রিপোর্ট করার জন্য প্রয়োজনীয় একটি পেলোড তৈরি করতে
BillingClient.createAlternativeBillingOnlyReportingDetailsAsync()যোগ করা হয়েছে।
- শুধুমাত্র বিকল্প বিলিং অফার করার ক্ষমতা কার্যকরীভাবে সক্ষম করার জন্য
- ব্যবহারকারীর পছন্দের বিলিং API গুলি আপডেট করা হয়েছে
- অপ্রচলিত হিসেবে চিহ্নিত AlternativeBillingListener প্রতিস্থাপনের জন্য
UserChoiceBillingListenerযোগ করা হয়েছে। - অপ্রচলিত হিসেবে চিহ্নিত
AlternativeChoiceDetailsপ্রতিস্থাপনের জন্যUserChoiceDetailsযোগ করা হয়েছে। -
BillingClient.Builder.enableUserChoiceBilling()কে বাতিল হিসেবে চিহ্নিত করার জন্যBillingClient.Builder.enableAlternativeBilling()যোগ করা হয়েছে।
- অপ্রচলিত হিসেবে চিহ্নিত AlternativeBillingListener প্রতিস্থাপনের জন্য
- Google Play দেশ পুনরুদ্ধার করতে
BillingClient.getBillingConfigAsync()যোগ করা হয়েছে।
গুগল প্লে বিলিং লাইব্রেরি 6.0.1 রিলিজ (2023-06-22)
গুগল প্লে বিলিং লাইব্রেরির সংস্করণ 6.0.1 এবং কোটলিন এক্সটেনশন এখন উপলব্ধ।
পরিবর্তনের সারাংশ
Android 14 এর সাথে সামঞ্জস্যপূর্ণ করার জন্য Play Billing Library আপডেট করুন।
গুগল প্লে বিলিং লাইব্রেরি 6.0 রিলিজ (2023-05-10)
গুগল প্লে বিলিং লাইব্রেরির সংস্করণ 6.0.0 এবং কোটলিন এক্সটেনশন এখন উপলব্ধ।
পরিবর্তনের সারাংশ
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 এর পূর্ববর্তী সংস্করণগুলি এখনও এই কোডটি ফেরত দেবে।অতিরিক্ত লগিং যোগ করা হয়েছে।
প্লে বিলিং লাইব্রেরি ৬ রিলিজে অতিরিক্ত লগিং অন্তর্ভুক্ত রয়েছে, যা API ব্যবহার (যেমন সাফল্য এবং ব্যর্থতা) এবং পরিষেবা সংযোগ সমস্যা সম্পর্কে অন্তর্দৃষ্টি প্রদান করে। এই তথ্য প্লে বিলিং লাইব্রেরির কর্মক্ষমতা উন্নত করতে এবং ত্রুটির জন্য আরও ভাল সহায়তা প্রদান করতে ব্যবহার করা হবে।
গুগল প্লে বিলিং লাইব্রেরি ৫.২.১ রিলিজ (২০২৩-০৬-২২)
গুগল প্লে বিলিং লাইব্রেরির ৫.২.১ সংস্করণ এবং কোটলিন এক্সটেনশন এখন উপলব্ধ।
পরিবর্তনের সারাংশ
Android 14 এর সাথে সামঞ্জস্যপূর্ণ করার জন্য Play Billing Library আপডেট করুন।
গুগল প্লে বিলিং লাইব্রেরি ৫.২ রিলিজ (২০২৩-০৪-০৬)
গুগল প্লে বিলিং লাইব্রেরির ৫.২.০ সংস্করণ এবং কোটলিন এক্সটেনশন এখন উপলব্ধ।
পরিবর্তনের সারাংশ
- দক্ষিণ কোরিয়ার ব্যবহারকারীদের জন্য মোবাইল/ট্যাবলেটে বিকল্প বিলিং প্রবাহ সমর্থন করার জন্য ক্লাস যোগ করা হয়েছে:
- মূল সাবস্ক্রিপশনের বহিরাগত লেনদেন আইডি নির্দিষ্ট করার জন্য
BillingFlowParams.SubscriptionUpdateParams.Builder.setOriginalExternalTransactionId()পদ্ধতি যোগ করা হয়েছে। - দক্ষিণ কোরিয়ার ব্যবহারকারীদের বিকল্প বিলিং বিকল্প নির্বাচন করার অনুমতি দেওয়ার জন্য
BillingClient.Builder.enableAlternativeBilling()পদ্ধতি যোগ করা হয়েছে।
গুগল প্লে বিলিং লাইব্রেরি ৫.১ রিলিজ (২০২২-১০-৩১)
গুগল প্লে বিলিং লাইব্রেরির ৫.১.০ সংস্করণ এবং কোটলিন এক্সটেনশন এখন উপলব্ধ।
এই সংস্করণে নিম্নলিখিত পরিবর্তনগুলি রয়েছে।
পরিবর্তনের সারাংশ
- অফার আইডি পুনরুদ্ধারের জন্য
ProductDetails.SubscriptionOfferDetails.getOfferId()পদ্ধতি যোগ করা হয়েছে। - বেস প্ল্যান আইডি পুনরুদ্ধারের জন্য
ProductDetails.SubscriptionOfferDetails.getBasePlanId()পদ্ধতি যোগ করা হয়েছে। -
targetSdkVersion31 এ আপডেট করা হয়েছে।
গুগল প্লে বিলিং লাইব্রেরি ৫.০ রিলিজ (২০২২-০৫-১১)
গুগল প্লে বিলিং লাইব্রেরির ৫.০.০ সংস্করণ এবং কোটলিন এক্সটেনশন এখন উপলব্ধ।
এই সংস্করণে নিম্নলিখিত পরিবর্তনগুলি রয়েছে।
পরিবর্তনের সারাংশ
- সাবস্ক্রিপশনের জন্য একটি নতুন মডেল চালু করা হয়েছে, যার মধ্যে নতুন সত্তা অন্তর্ভুক্ত রয়েছে যা আপনাকে একটি একক সাবস্ক্রিপশন পণ্যের জন্য একাধিক অফার তৈরি করতে সক্ষম করে। আরও তথ্যের জন্য, মাইগ্রেশন গাইড দেখুন।
-
BillingClient.queryProductDetailsAsync()প্রতিস্থাপনের জন্যBillingClient.querySkuDetailsAsync()যোগ করা হয়েছে। - EU ব্যক্তিগতকৃত মূল্য প্রকাশের প্রয়োজনীয়তার জন্য
setIsOfferPersonalized()পদ্ধতি যোগ করা হয়েছে। এই পদ্ধতিটি কীভাবে ব্যবহার করবেন সে সম্পর্কে আরও জানতে, একটি ব্যক্তিগতকৃত মূল্য নির্দেশ করুন দেখুন। -
queryPurchases()সরানো হয়েছে, যা পূর্বে অবচিত ছিল এবং Google Play Billing Library 4.0.0-এ চালু করা queryPurchasesAsync দ্বারা প্রতিস্থাপিত হয়েছিল। -
launchPriceChangeFlowবন্ধ করা হয়েছে এবং ভবিষ্যতের রিলিজে এটি সরিয়ে ফেলা হবে। বিকল্পগুলি সম্পর্কে আরও জানতে, মূল্য পরিবর্তন নিশ্চিতকরণ প্রবাহ চালু করুন দেখুন। -
setVrPurchaseFlow()মুছে ফেলা হয়েছে, যা পূর্বে ক্রয় প্রবাহ তাৎক্ষণিক করার সময় ব্যবহৃত হত। পূর্ববর্তী সংস্করণগুলিতে, এই পদ্ধতিটি ব্যবহারকারীকে তাদের Android-চালিত ডিভাইসে ক্রয় সম্পূর্ণ করার জন্য পুনঃনির্দেশিত করত। একবার আপনি এই পদ্ধতিটি সরিয়ে ফেললে, ব্যবহারকারীরা স্ট্যান্ডার্ড ক্রয় প্রবাহের মাধ্যমে ক্রয় সম্পূর্ণ করবে।
গুগল প্লে বিলিং লাইব্রেরি ৪.১ রিলিজ (২০২২-০২-২৩)
গুগল প্লে বিলিং লাইব্রেরির সংস্করণ ৪.১.০ এবং কোটলিন এক্সটেনশন এখন উপলব্ধ।
এই সংস্করণে নিম্নলিখিত পরিবর্তনগুলি রয়েছে।
পরিবর্তনের সারাংশ
- সাবস্ক্রিপশন পেমেন্ট প্রত্যাখ্যান পরিচালনা করতে সাহায্য করার জন্য
BillingClient.showInAppMessages()যোগ করা হয়েছে। সাবস্ক্রিপশন পেমেন্ট প্রত্যাখ্যান পরিচালনা করার জন্য ইন-অ্যাপ মেসেজিং কীভাবে ব্যবহার করবেন সে সম্পর্কে আরও জানতে, পেমেন্ট প্রত্যাখ্যান পরিচালনা দেখুন।
গুগল প্লে বিলিং লাইব্রেরি ৪.০ রিলিজ (২০২১-০৫-১৮)
গুগল প্লে বিলিং লাইব্রেরির ৪.০.০ সংস্করণ এবং কোটলিন এক্সটেনশন এখন উপলব্ধ।
পরিবর্তনের সারাংশ
BillingClient.queryPurchasesAsync()এর পরিবর্তেBillingClient.queryPurchases()যোগ করা হয়েছে যা ভবিষ্যতের রিলিজে মুছে ফেলা হবে।নতুন সাবস্ক্রিপশন প্রতিস্থাপন মোড
IMMEDIATE_AND_CHARGE_FULL_PRICEযোগ করা হয়েছে।Play Billing Library এর সংযোগ অবস্থা পুনরুদ্ধার করতে
BillingClient.getConnectionState()পদ্ধতি যোগ করা হয়েছে।কোন থ্রেডে কোন পদ্ধতিতে কল করা যেতে পারে এবং কোন থ্রেডের ফলাফল পোস্ট করা হবে তা নির্দেশ করার জন্য জাভাডক এবং বাস্তবায়ন আপডেট করা হয়েছে।
সাবস্ক্রিপশন আপডেট শুরু করার জন্য
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সরানো হয়েছে।
গুগল প্লে বিলিং লাইব্রেরি ৩.০.৩ রিলিজ (২০২১-০৩-১২)
গুগল প্লে বিলিং লাইব্রেরির ৩.০.৩ সংস্করণ, কোটলিন এক্সটেনশন এবং ইউনিটি প্লাগইন এখন উপলব্ধ।
জাভা এবং কোটলিন বাগ সংশোধন
-
endConnection()কল করলে মেমরি লিক ঠিক করুন। - সিঙ্গেল টাস্ক লঞ্চ মোড ব্যবহারকারী অ্যাপগুলি যখন গুগল প্লে বিলিং লাইব্রেরি ব্যবহার করে তখন সমস্যার সমাধান করুন। অ্যান্ড্রয়েড লঞ্চার থেকে কোনও অ্যাপ পুনরায় চালু করা হলে এবং সাসপেন্ড করার আগে বিলিং ডায়ালগ দৃশ্যমান হলে একটি
onPurchasesUpdated()কলব্যাক ট্রিগার হবে।
ইউনিটি বাগ সংশোধন
- অ্যান্ড্রয়েড লঞ্চার থেকে অ্যাপটি পুনরায় চালু করার সময় এবং সাসপেন্ড করার আগে বিলিং ডায়ালগ দৃশ্যমান থাকাকালীন মেমরি লিক ঠিক করতে এবং কেনাকাটা প্রতিরোধের সমস্যা সমাধানের জন্য জাভা সংস্করণ 3.0.3 এ আপডেট করুন।
গুগল প্লে বিলিং লাইব্রেরি ৩.০.২ রিলিজ (২০২০-১১-২৪)
গুগল প্লে বিলিং লাইব্রেরির সংস্করণ 3.0.2 এবং কোটলিন এক্সটেনশন এখন উপলব্ধ।
বাগ সংশোধন
- কোটলিন এক্সটেনশনে "ইতিমধ্যেই পুনরায় শুরু হয়েছে" ত্রুটির কারণে কোরোটিন ব্যর্থ হওয়ার একটি বাগ সংশোধন করা হয়েছে।
- kotlinx.coroutines লাইব্রেরি সংস্করণ 1.4+ এর সাথে Kotlin এক্সটেনশন ব্যবহার করা হলে অমীমাংসিত রেফারেন্সগুলি ঠিক করা হয়েছে।
গুগল প্লে বিলিং লাইব্রেরি 3.0.1 রিলিজ (2020-09-30)
গুগল প্লে বিলিং লাইব্রেরির সংস্করণ 3.0.1 এবং কোটলিন এক্সটেনশন এখন উপলব্ধ।
বাগ সংশোধন
- বিলিং প্রবাহের সময় যদি অ্যাপটি বন্ধ করে পুনরুদ্ধার করা হয়, তাহলে ক্রয়ের ফলাফলের সাথে
PurchasesUpdatedListenerকল নাও করা যেতে পারে এমন একটি বাগ সংশোধন করা হয়েছে।
গুগল প্লে বিলিং লাইব্রেরি ৩.০ রিলিজ (২০২০-০৬-০৮)
গুগল প্লে বিলিং লাইব্রেরির ৩.০.০ সংস্করণ, কোটলিন এক্সটেনশন এবং ইউনিটি প্লাগইন এখন উপলব্ধ।
পরিবর্তনের সারাংশ
- পুরস্কৃত SKU সহায়তা সরানো হয়েছে।
-
ChildDirectedএবংUnderAgeOfConsentপ্যারামিটারগুলি সরিয়ে দেওয়া হয়েছে। - অবচিত ডেভেলপার পেলোড পদ্ধতিগুলি সরানো হয়েছে।
- অবচিত পদ্ধতি
BillingFlowParams.setAccountId()এবংBillingFlowParams.setDeveloperId()সরানো হয়েছে। - অবচিত পদ্ধতিগুলি সরানো হয়েছে
BillingFlowParams.setOldSkus(String oldSku)এবংBillingFlowParams.addOldSku(String oldSku)। - বাতিলযোগ্যতা টীকা যোগ করা হয়েছে।
বাগ সংশোধন
-
SkuDetails.getIntroductoryPriceCycles()এখনStringএর পরিবর্তেintপ্রদান করে। - একটি বাগ ঠিক করা হয়েছে যেখানে বিলিং ফ্লোকে অতিরিক্ত প্যারামিটার হিসেবে বিবেচনা করা হত, এমনকি যদি কোনও অতিরিক্ত প্যারামিটার সেট না করা থাকে।
গুগল প্লে বিলিং লাইব্রেরি ২.২.১ রিলিজ (২০২০-০৫-২০)
গুগল প্লে বিলিং লাইব্রেরির সংস্করণ ২.২.১ এখন উপলব্ধ।
বাগ সংশোধন
- কোটলিন এক্সটেনশন যে জাভা প্লে বিলিং লাইব্রেরির উপর নির্ভর করে তার ডিফল্ট সংস্করণ আপডেট করা হয়েছে।
গুগল প্লে বিলিং লাইব্রেরি ২.২.০ রিলিজ এবং ইউনিটি সাপোর্ট (২০২০-০৩-২৩)
গুগল প্লে বিলিং-এর সংস্করণ ২.২.০ এমন কার্যকারিতা প্রদান করে যা ডেভেলপারদের কেনাকাটা সঠিক ব্যবহারকারীর কাছেই নিশ্চিত করতে সাহায্য করে। এই পরিবর্তনগুলি ডেভেলপার পেলোডের উপর ভিত্তি করে কাস্টম সমাধান তৈরির প্রয়োজনীয়তা প্রতিস্থাপন করে। এই আপডেটের অংশ হিসাবে, ডেভেলপার পেলোড কার্যকারিতাটি অবচিত করা হয়েছে এবং ভবিষ্যতের রিলিজে এটি সরানো হবে। প্রস্তাবিত বিকল্পগুলি সহ আরও তথ্যের জন্য, ডেভেলপার পেলোড দেখুন।
গুগল প্লে বিলিং বিলিং লাইব্রেরি 2 ফর ইউনিটি
গুগল প্লে বিলিং লাইব্রেরি ২ এর বর্তমান জাভা এবং কোটলিন সংস্করণ ছাড়াও, আমরা ইউনিটির সাথে ব্যবহারের জন্য লাইব্রেরির একটি সংস্করণ প্রকাশ করেছি। ইউনিটি ইন-অ্যাপ ক্রয় API ব্যবহারকারী গেম ডেভেলপাররা এখনই আপগ্রেড করতে পারেন যাতে গুগল প্লে বিলিং লাইব্রেরি ২ এর সমস্ত বৈশিষ্ট্যের সুবিধা নেওয়া যায় এবং গুগল প্লে বিলিং লাইব্রেরির ভবিষ্যতের সংস্করণগুলিতে পরবর্তী আপগ্রেডগুলি সহজ করা যায়।
আরও জানতে, "ইউটি উইথ গুগল প্লে বিলিং" দেখুন।
পরিবর্তনের সারাংশ
- জাভা গুগল প্লে বিলিং লাইব্রেরি
-
AcknowledgePurchaseParamsএ,setDeveloperPayload()এবংgetDeveloperPayload()পদ্ধতিগুলি অবচিত করা হয়েছে। -
ConsumeParamsএ,setDeveloperPayload()এবংgetDeveloperPayload()পদ্ধতিগুলি অবচিত করা হয়েছে। -
BillingFlowParamsএ,setAccountId()এর নাম পরিবর্তন করেsetObfuscatedAccountId()করা হয়েছে, এবং 64 অক্ষরের দৈর্ঘ্য সীমাবদ্ধতা এবং এই ক্ষেত্রে ব্যক্তিগতভাবে সনাক্তকরণযোগ্য তথ্য (PII) অনুমোদন না করার সীমাবদ্ধতা নথিভুক্ত করা হয়েছে।setAccountId()কে অবচিত হিসেবে চিহ্নিত করা হয়েছে এবং ভবিষ্যতের লাইব্রেরি সংস্করণে এটি সরানো হবে। -
BillingFlowParamsএ,setObfuscatedProfileId()যোগ করা হয়েছে যাsetObfuscatedAccountId()এর মতোই কাজ করে। আরও তথ্যের জন্য, ডেভেলপার পেলোড আপডেট এবং বিকল্পগুলি দেখুন। -
Purchaseএ,BillingFlowParamsএ সেট করা অস্পষ্ট অ্যাকাউন্ট শনাক্তকারী ফেরত দেওয়ার জন্যgetAccountIdentifiers()পদ্ধতি যোগ করা হয়েছে। -
BillingClientএ,loadRewardedSku()পদ্ধতিটিকে পুরস্কৃত SKU-গুলিকে অবচয়মুক্ত করার অংশ হিসেবে অবচয়মুক্ত হিসেবে চিহ্নিত করা হয়েছে। আপনি Play Console সহায়তা কেন্দ্রে অবচয়মুক্তকরণ সম্পর্কে আরও তথ্য পেতে পারেন।
-
গুগল প্লে বিলিং লাইব্রেরি 2.1.0 রিলিজ এবং কোটলিন এক্সটেনশন 2.1.0 রিলিজ (2019-12-10)
গুগল প্লে বিলিং লাইব্রেরির সংস্করণ 2.1.0 এবং নতুন কোটলিন এক্সটেনশন এখন উপলব্ধ। প্লে বিলিং লাইব্রেরি কোটলিন এক্সটেনশন কোটলিন ব্যবহারের জন্য ইডিওম্যাটিক API বিকল্প প্রদান করে, যাতে আরও ভালো নাল-সেফটি এবং কোরোটিন রয়েছে। কোড উদাহরণের জন্য, গুগল প্লে বিলিং লাইব্রেরি ব্যবহার করুন দেখুন।
এই সংস্করণে নিম্নলিখিত পরিবর্তনগুলি রয়েছে।
পরিবর্তনের সারাংশ
-
BillingFlowParamsএ,setOldSku(String oldSku)অবচিত করেsetOldSku(String oldSku, String purchaseToken)দিয়ে প্রতিস্থাপিত করা হয়েছে, যাতে ডিভাইসে একাধিক অ্যাকাউন্ট একই sku এর মালিক হলে তা স্পষ্ট হয়।
গুগল প্লে বিলিং লাইব্রেরি 2.0.3 রিলিজ (2019-08-05)
গুগল প্লে বিলিং লাইব্রেরির সংস্করণ ২.০.৩ এখন উপলব্ধ।
বাগ সংশোধন
-
DEVELOPER_ERRORকোডের সাথেquerySkuDetailsAsync()মাঝে মাঝে ব্যর্থ হওয়ার একটি বাগ ঠিক করা হয়েছে, যেখানে সফল ফলাফল ফেরত দেওয়ার পরিবর্তে।
গুগল প্লে বিলিং লাইব্রেরি 2.0.2 রিলিজ (2019-07-08)
গুগল প্লে বিলিং লাইব্রেরির সংস্করণ ২.০.২ এখন উপলব্ধ। এই রিলিজে রেফারেন্স ডকুমেন্টেশনের আপডেট রয়েছে এবং লাইব্রেরির কার্যকারিতা পরিবর্তন করে না।
গুগল প্লে বিলিং লাইব্রেরি 2.0.1 রিলিজ (2019-06-06)
গুগল প্লে বিলিং লাইব্রেরির সংস্করণ ২.০.১ এখন উপলব্ধ। এই সংস্করণে নিম্নলিখিত পরিবর্তনগুলি রয়েছে।
বাগ সংশোধন
- কিছু ক্ষেত্রে ডিবাগ বার্তাগুলি
nullহিসেবে ফেরত পাঠানোর ক্ষেত্রে একটি বাগ সংশোধন করা হয়েছে। - একটি সম্ভাব্য মেমরি লিক সমস্যা সমাধান করা হয়েছে।
গুগল প্লে বিলিং লাইব্রেরি ২.০ রিলিজ (২০১৯-০৫-০৭)
গুগল প্লে বিলিং লাইব্রেরির সংস্করণ ২.০ এখন উপলব্ধ। এই সংস্করণে নিম্নলিখিত পরিবর্তনগুলি রয়েছে।
ক্রয়গুলি তিন দিনের মধ্যে স্বীকার করতে হবে
Google Play আপনার অ্যাপের ভেতর থেকে (অ্যাপের ভেতরে) অথবা অ্যাপের বাইরে থেকে (অ্যাপের বাইরে) পণ্য কেনাকাটা সমর্থন করে। ব্যবহারকারী আপনার পণ্য যেখান থেকেই কিনুক না কেন, Google Play-তে ধারাবাহিক ক্রয়ের অভিজ্ঞতা নিশ্চিত করার জন্য, ব্যবহারকারীকে এনটাইটেলমেন্ট দেওয়ার পর যত তাড়াতাড়ি সম্ভব Google Play বিলিং লাইব্রেরির মাধ্যমে প্রাপ্ত সমস্ত ক্রয় স্বীকার করতে হবে। আপনি যদি তিন দিনের মধ্যে কোনও ক্রয় স্বীকার না করেন, তাহলে ব্যবহারকারী স্বয়ংক্রিয়ভাবে অর্থ ফেরত পাবেন এবং Google Play ক্রয়টি প্রত্যাহার করে নেবে। মুলতুবি লেনদেনের জন্য (সংস্করণ 2.0-এ নতুন), ক্রয়টি ক্রয়কৃত অবস্থায় স্থানান্তরিত হলে তিন দিনের সময়সীমা শুরু হয় এবং ক্রয়টি PURCHASED অবস্থায় থাকাকালীন PENDING হয় না।
সাবস্ক্রিপশনের জন্য, আপনাকে অবশ্যই নতুন ক্রয় টোকেন সহ যেকোনো ক্রয়ের স্বীকৃতি দিতে হবে। এর অর্থ হল সমস্ত প্রাথমিক ক্রয়, পরিকল্পনা পরিবর্তন এবং পুনরায় সাইনআপের স্বীকৃতি দিতে হবে, তবে পরবর্তী পুনর্নবীকরণের স্বীকৃতি দেওয়ার প্রয়োজন নেই। কোনও ক্রয়ের স্বীকৃতি প্রয়োজন কিনা তা নির্ধারণ করতে, আপনি ক্রয়ের স্বীকৃতি ক্ষেত্রটি পরীক্ষা করতে পারেন।
Purchase অবজেক্টে এখন একটি isAcknowledged() পদ্ধতি অন্তর্ভুক্ত রয়েছে যা নির্দেশ করে যে কোনও ক্রয় স্বীকার করা হয়েছে কিনা। এছাড়াও, Google Play Developer API-তে Purchases.products এবং Purchases.subscriptions উভয়ের জন্য স্বীকৃতি বুলিয়ান মান অন্তর্ভুক্ত রয়েছে। কোনও ক্রয় স্বীকার করার আগে, ক্রয়টি ইতিমধ্যেই স্বীকার করা হয়েছে কিনা তা নির্ধারণ করতে এই পদ্ধতিগুলি ব্যবহার করতে ভুলবেন না।
আপনি নিম্নলিখিত পদ্ধতিগুলির মধ্যে একটি ব্যবহার করে একটি ক্রয় স্বীকার করতে পারেন:
- ব্যবহারযোগ্য পণ্যের জন্য, ক্লায়েন্ট API-তে পাওয়া
consumeAsync()ব্যবহার করুন। - যেসব পণ্য ব্যবহার করা হয় না, তাদের জন্য
acknowledgePurchase()ব্যবহার করুন, যা ক্লায়েন্ট API-তে পাওয়া যায়। - সার্ভার API-তে একটি নতুন
acknowledge()পদ্ধতিও উপলব্ধ।
BillingFlowParams.setSku() সরানো হয়েছে
এই রিলিজে পূর্বে বন্ধ করে দেওয়া BillingFlowParams#setSku() পদ্ধতিটি সরানো হয়েছে। ক্রয় প্রবাহে পণ্য রেন্ডার করার আগে, আপনাকে এখন BillingClient.querySkuDetailsAsync() কল করতে হবে, ফলে SkuDetails অবজেক্টটি BillingFlowParams.Builder.setSkuDetails() এ পাস করতে হবে।
কোডের উদাহরণের জন্য, Google Play বিলিং লাইব্রেরি ব্যবহার করুন দেখুন।
ডেভেলপার পেলোড সমর্থিত
গুগল প্লে বিলিং লাইব্রেরির সংস্করণ ২.০ ডেভেলপার পেলোডের জন্য সমর্থন যোগ করে — ক্রয়ের সাথে সংযুক্ত করা যেতে পারে এমন ইচ্ছামত স্ট্রিং। আপনি ক্রয়ের সাথে একটি ডেভেলপার পেলোড প্যারামিটার সংযুক্ত করতে পারেন, তবে কেবল তখনই যখন ক্রয়টি স্বীকার করা হয় বা ব্যবহার করা হয়। এটি AIDL-তে ডেভেলপার পেলোডের মতো নয়, যেখানে ক্রয় প্রবাহ চালু করার সময় পেলোড নির্দিষ্ট করা যেতে পারে। যেহেতু এখন আপনার অ্যাপের বাইরে থেকে কেনাকাটা শুরু করা যেতে পারে, এই পরিবর্তনটি নিশ্চিত করে যে আপনার কাছে সর্বদা ক্রয়ের সাথে একটি পেলোড যোগ করার সুযোগ থাকবে।
নতুন লাইব্রেরিতে পেলোড অ্যাক্সেস করার জন্য, Purchase অবজেক্টগুলিতে এখন একটি getDeveloperPayload() পদ্ধতি অন্তর্ভুক্ত রয়েছে।
ধারাবাহিক অফার
যখন আপনি ছাড়যুক্ত SKU অফার করেন, তখন Google Play এখন SKU-এর আসল মূল্য ফেরত দেয় যাতে আপনি ব্যবহারকারীদের দেখাতে পারেন যে তারা ছাড় পাচ্ছেন।
SkuDetails মূল SKU মূল্য পুনরুদ্ধারের জন্য দুটি নতুন পদ্ধতি রয়েছে:
-
getOriginalPriceAmountMicros()- ছাড়ের আগে SKU-এর অ-ফরম্যাট করা মূল মূল্য ফেরত দেয়।
-
getOriginalPrice()- অতিরিক্ত মুদ্রা বিন্যাস সহ মূল মূল্য ফেরত দেয়।
মুলতুবি লেনদেন
গুগল প্লে বিলিং লাইব্রেরির ২.০ সংস্করণের মাধ্যমে, আপনাকে অবশ্যই এমন কেনাকাটা সমর্থন করতে হবে যেখানে এনটাইটেলমেন্ট দেওয়ার আগে অতিরিক্ত পদক্ষেপ নেওয়ার প্রয়োজন হয়। উদাহরণস্বরূপ, একজন ব্যবহারকারী নগদ অর্থ ব্যবহার করে একটি ফিজিক্যাল স্টোর থেকে আপনার অ্যাপ-মধ্যস্থ পণ্য কিনতে পারেন। এর অর্থ হল লেনদেনটি আপনার অ্যাপের বাইরে সম্পন্ন হয়েছে। এই পরিস্থিতিতে, ব্যবহারকারী লেনদেন সম্পন্ন করার পরেই আপনার এনটাইটেলমেন্ট প্রদান করা উচিত।
মুলতুবি কেনাকাটা সক্ষম করতে, আপনার অ্যাপটি শুরু করার অংশ হিসেবে enablePendingPurchases() কল করুন।
ক্রয়ের অবস্থা PURCHASED নাকি PENDING তা নির্ধারণ করতে Purchase.getPurchaseState() ব্যবহার করুন। মনে রাখবেন যে, যখন অবস্থা 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 পরিবর্তনগুলি
গুগল প্লে বিলিং লাইব্রেরির সংস্করণ ২.০-এ নতুন বৈশিষ্ট্যগুলিকে সমর্থন করার জন্য এবং বিদ্যমান কার্যকারিতা স্পষ্ট করার জন্য বেশ কয়েকটি API পরিবর্তন রয়েছে।
কনজিউমারএসিঙ্ক
consumeAsync() এখন purchaseToken এর পরিবর্তে একটি ConsumeParams অবজেক্ট নেয়। ConsumeParams purchaseToken এবং একটি ঐচ্ছিক ডেভেলপার পেলোড থাকে।
এই রিলিজে consumeAsync() এর পূর্ববর্তী সংস্করণটি সরানো হয়েছে।
প্রশ্ন ক্রয় ইতিহাস অ্যাসিঙ্ক
বিভ্রান্তি কমাতে, queryPurchaseHistoryAsync() এখন Purchase অবজেক্টের পরিবর্তে PurchaseHistoryRecord অবজেক্ট ফেরত পাঠায়। PurchaseHistoryRecord অবজেক্টটি Purchase অবজেক্টের মতোই, তবে এটি কেবল queryPurchaseHistoryAsync() দ্বারা ফেরত আসা মানগুলি প্রতিফলিত করে এবং এতে autoRenewing , orderId এবং packageName ক্ষেত্রগুলি থাকে না। মনে রাখবেন যে ফেরত আসা ডেটাতে কিছুই পরিবর্তন হয়নি— queryPurchaseHistoryAsync() আগের মতো একই ডেটা ফেরত দেয়।
বিলিং ফলাফলের রিটার্ন মান
যেসব API আগে BillingResponse পূর্ণসংখ্যার মান প্রদান করত, এখন সেগুলো একটি BillingResult অবজেক্ট প্রদান করে। BillingResult BillingResponse পূর্ণসংখ্যার পাশাপাশি একটি ডিবাগ স্ট্রিং থাকে যা আপনি ত্রুটি নির্ণয়ের জন্য ব্যবহার করতে পারেন। ডিবাগ স্ট্রিংটি একটি en-US লোকেল ব্যবহার করে এবং এটি শেষ ব্যবহারকারীদের দেখানোর জন্য নয়।
বাগ সংশোধন
-
SkuDetails.getIntroductoryPriceAmountMicros()এখনStringএর পরিবর্তেlongরিটার্ন করে।
গুগল প্লে বিলিং লাইব্রেরি ১.২.২ রিলিজ (২০১৯-০৩-০৭)
গুগল প্লে বিলিং লাইব্রেরির ১.২.২ সংস্করণ এখন উপলব্ধ। এই সংস্করণে নিম্নলিখিত পরিবর্তনগুলি রয়েছে।
বাগ সংশোধন
- ১.২.১ সংস্করণে প্রবর্তিত থ্রেডিং সমস্যার সমাধান করা হয়েছে। ব্যাকগ্রাউন্ড কল আর মূল থ্রেডকে ব্লক করে না।
অন্যান্য পরিবর্তন
- যদিও মূল থ্রেড ব্যবহার করার পরামর্শ দেওয়া হচ্ছে, আপনি এখন একটি ব্যাকগ্রাউন্ড থ্রেড থেকে গুগল প্লে বিলিং লাইব্রেরি ইনস্ট্যান্টিয়েট করতে পারেন।
- ANR হওয়ার সম্ভাবনা কমাতে ইনস্ট্যান্টিয়েশন সম্পূর্ণরূপে ব্যাকগ্রাউন্ড থ্রেডে স্থানান্তরিত করা হয়েছে।
প্লে বিলিং লাইব্রেরি ১.২.১ রিলিজ (২০১৯-০৩-০৪)
গুগল প্লে বিলিং লাইব্রেরির ১.২.১ সংস্করণ এখন উপলব্ধ। এই সংস্করণে নিম্নলিখিত পরিবর্তনগুলি রয়েছে।
বড় পরিবর্তনগুলি
- পুরস্কৃত পণ্যের জন্য সমর্থন যোগ করা হয়েছে। নগদীকরণ বিকল্প সম্পর্কে আরও তথ্যের জন্য, পুরস্কৃত-পণ্য-নির্দিষ্ট বৈশিষ্ট্য যোগ করুন দেখুন।
অন্যান্য পরিবর্তন
- পরীক্ষা সহজ করার জন্য
PurchasesResultএবংSkuDetailsResultএর জন্য পাবলিক কনস্ট্রাক্টর যোগ করা হয়েছে। -
SkuDetailsঅবজেক্টগুলি একটি নতুন পদ্ধতি ব্যবহার করতে পারে,getOriginalJson()। - সমস্ত AIDL পরিষেবা কল এখন ব্যাকগ্রাউন্ড থ্রেড দ্বারা পরিচালিত হয়।
বাগ সংশোধন
- নাল কলব্যাক লিসেনার্স আর পাবলিক API-তে পাস করা হয় না।
গুগল প্লে বিলিং লাইব্রেরি ১.২ রিলিজ (২০১৮-১০-১৮)
গুগল প্লে বিলিং লাইব্রেরির সংস্করণ ১.২ এখন উপলব্ধ। এই সংস্করণে নিম্নলিখিত পরিবর্তনগুলি রয়েছে।
পরিবর্তনের সারাংশ
- গুগল প্লে বিলিং লাইব্রেরি এখন অ্যান্ড্রয়েড সফটওয়্যার ডেভেলপমেন্ট কিট লাইসেন্স চুক্তির অধীনে লাইসেন্সপ্রাপ্ত।
-
launchPriceChangeConfirmationFlowAPI যোগ করা হয়েছে, যা ব্যবহারকারীদের সাবস্ক্রিপশন মূল্যের মুলতুবি পরিবর্তন পর্যালোচনা করতে অনুরোধ করে। - ব্যবহারকারীর সাবস্ক্রিপশন আপগ্রেড বা ডাউনগ্রেড করার সময় একটি নতুন প্রোরেশন মোড,
DEFERREDএর জন্য সমর্থন যোগ করা হয়েছে। -
BillingFlowParamsক্লাসে,setSku()setSkuDetails()দিয়ে প্রতিস্থাপন করা হয়েছে। - ছোটখাটো বাগ সংশোধন এবং কোড অপ্টিমাইজেশন।
মূল্য পরিবর্তনের নিশ্চয়তা
আপনি এখন Google Play Console-এ সাবস্ক্রিপশনের দাম পরিবর্তন করতে পারবেন এবং ব্যবহারকারীরা আপনার অ্যাপে প্রবেশ করলে নতুন দাম পর্যালোচনা করে গ্রহণ করতে অনুরোধ করতে পারবেন।
এই API ব্যবহার করতে, সাবস্ক্রিপশন পণ্যের skuDetails ব্যবহার করে একটি PriceChangeFlowParams অবজেক্ট তৈরি করুন, এবং তারপর launchPriceChangeConfirmationFlow() কল করুন। মূল্য পরিবর্তন নিশ্চিতকরণ প্রবাহ শেষ হলে ফলাফল পরিচালনা করার জন্য PriceChangeConfirmationListener প্রয়োগ করুন, যেমনটি নিম্নলিখিত কোড স্নিপেটে দেখানো হয়েছে:
কোটলিন
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 বিলিং প্রবাহকে অপ্টিমাইজ করার জন্য কাজ করে।
আপনার ইন-অ্যাপ বিলিং ক্লায়েন্টে BillingFlowParams এর একটি নতুন ইনস্ট্যান্স তৈরি করার সময়, আমরা আপনাকে setSkuDetails() ব্যবহার করে সরাসরি JSON অবজেক্টের সাথে কাজ করার পরামর্শ দিচ্ছি, যেমনটি নিম্নলিখিত কোড স্নিপেটে দেখানো হয়েছে:
BillingFlowParams Builder ক্লাসে, setSku() পদ্ধতিটি অবচিত করা হয়েছে। পরিবর্তে, নিম্নলিখিত কোড স্নিপেটে দেখানো setSkuDetails() পদ্ধতিটি ব্যবহার করুন। setSkuDetails() অবজেক্টে পাস করা অবজেক্টটি querySkuDetailsAsync() পদ্ধতি থেকে আসে।
কোটলিন
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(); }
প্লে বিলিং লাইব্রেরি ১.১ রিলিজ (২০১৮-০৫-০৭)
গুগল প্লে বিলিং লাইব্রেরির ১.১ সংস্করণ এখন উপলব্ধ। এই সংস্করণে নিম্নলিখিত পরিবর্তনগুলি রয়েছে।
পরিবর্তনের সারাংশ
- বিদ্যমান সাবস্ক্রিপশন আপগ্রেড/ডাউনগ্রেড করার সময়
BillingFlowParamsএ একটি প্রোরেশন মোড নির্দিষ্ট করার জন্য সমর্থন যোগ করা হয়েছে। -
BillingFlowParamsএreplaceSkusProrationবুলিয়ান ফ্ল্যাগ আর সমর্থিত নয়। পরিবর্তেreplaceSkusProrationModeব্যবহার করুন। -
launchBillingFlow()এখন ব্যর্থ প্রতিক্রিয়াগুলির জন্য একটি কলব্যাক ট্রিগার করে।
আচরণগত পরিবর্তন
গুগল প্লে বিলিং লাইব্রেরির সংস্করণ ১.১-এ নিম্নলিখিত আচরণগত পরিবর্তনগুলি রয়েছে।
ডেভেলপাররা BillingFlowParams ক্লাসে replaceSkusProrationMode সেট করতে পারেন
একটি ProrationMode ব্যবহারকারীর সাবস্ক্রিপশন আপগ্রেড বা ডাউনগ্রেড করার সময় প্রোরেশনের ধরণ সম্পর্কে আরও বিশদ প্রদান করে।
কোটলিন
BillingFlowParams.newBuilder() .setSku(skuId) .setType(billingType) .setOldSku(oldSku) .setReplaceSkusProrationMode(replaceSkusProrationMode) .build()
জাভা
BillingFlowParams.newBuilder() .setSku(skuId) .setType(billingType) .setOldSku(oldSku) .setReplaceSkusProrationMode(replaceSkusProrationMode) .build();
গুগল প্লে নিম্নলিখিত প্রোরেশন মোডগুলি সমর্থন করে:
IMMEDIATE_WITH_TIME_PRORATION | প্রতিস্থাপন অবিলম্বে কার্যকর হবে, এবং নতুন মেয়াদ শেষ হওয়ার সময় আনুপাতিকভাবে নির্ধারণ করা হবে এবং ব্যবহারকারীর কাছে জমা বা চার্জ করা হবে। এটি বর্তমান ডিফল্ট আচরণ। |
IMMEDIATE_AND_CHARGE_PRORATED_PRICE | প্রতিস্থাপন অবিলম্বে কার্যকর হবে এবং বিলিং চক্র একই থাকবে। বাকি সময়ের জন্য মূল্য চার্জ করা হবে। দ্রষ্টব্য : এই বিকল্পটি শুধুমাত্র সাবস্ক্রিপশন আপগ্রেডের জন্য উপলব্ধ। |
IMMEDIATE_WITHOUT_PRORATION | প্রতিস্থাপন অবিলম্বে কার্যকর হবে এবং পরবর্তী পুনরাবৃত্তির সময় নতুন মূল্য চার্জ করা হবে। বিলিং চক্র একই থাকবে। |
BillingFlowParams ক্লাসে replaceSkusProration আর সমর্থিত নয়
ডেভেলপাররা আগে সাবস্ক্রিপশন আপগ্রেড অনুরোধের জন্য একটি প্রোরেটেড পরিমাণ চার্জ করার জন্য একটি বুলিয়ান ফ্ল্যাগ সেট করতে পারতেন। যেহেতু আমরা ProrationMode সমর্থন করছি, যাতে আরও বিস্তারিত প্রোরেশন নির্দেশাবলী রয়েছে, তাই এই বুলিয়ান ফ্ল্যাগটি আর সমর্থিত নয়।
launchBillingFlow() এখন ব্যর্থ প্রতিক্রিয়াগুলির জন্য একটি কলব্যাক ট্রিগার করে
বিলিং লাইব্রেরি সর্বদা PurhcasesUpdatedListener কলব্যাক ট্রিগার করবে এবং অ্যাসিঙ্ক্রোনাসভাবে একটি BillingResponse ফেরত দেবে। BillingResponse এর সিঙ্ক্রোনাস রিটার্ন মানও একইভাবে রাখা হবে।
বাগ সংশোধন
- পরিষেবা সংযোগ বিচ্ছিন্ন হলে অ্যাসিঙ্ক পদ্ধতিতে সঠিকভাবে প্রস্থান করে।
-
Builderপ্যারাম অবজেক্ট আর বিল্ট অবজেক্টকে মিউটেট করে না। - ইস্যু 68087141 :
launchBillingFlow()এখন ব্যর্থ প্রতিক্রিয়াগুলির জন্য কলব্যাক ট্রিগার করে।
গুগল প্লে বিলিং লাইব্রেরি ১.০ রিলিজ (২০১৭-০৯-১৯, ঘোষণা )
গুগল প্লে বিলিং লাইব্রেরির ১.০ সংস্করণ এখন উপলব্ধ। এই সংস্করণে নিম্নলিখিত পরিবর্তনগুলি রয়েছে।
গুরুত্বপূর্ণ পরিবর্তনগুলি
- লাইব্রেরির ম্যানিফেস্টে এমবেডেড বিলিং অনুমতি। অ্যান্ড্রয়েড ম্যানিফেস্টে আর
com.android.vending.BILLINGঅনুমতি যোগ করার প্রয়োজন নেই। -
BillingClient.Builderক্লাসে নতুন বিল্ডার যোগ করা হয়েছে। - SKU গুলি অনুসন্ধানের পদ্ধতিতে ব্যবহারের জন্য
SkuDetailsParamsক্লাসের জন্য বিল্ডার প্যাটার্ন চালু করা হয়েছে। - ধারাবাহিকতার জন্য বেশ কয়েকটি API পদ্ধতি আপডেট করা হয়েছে (একই রিটার্ন আর্গুমেন্টের নাম এবং ক্রম)।
আচরণগত পরিবর্তন
গুগল প্লে বিলিং লাইব্রেরির সংস্করণ ১.০-এ নিম্নলিখিত আচরণগত পরিবর্তনগুলি রয়েছে।
বিলিংক্লায়েন্ট.বিল্ডার ক্লাস
BillingClient.Builder এখন newBuilder প্যাটার্নের মাধ্যমে শুরু করা হয়েছে:
কোটলিন
billingClient = BillingClient.newBuilder(context).setListener(this).build()
জাভা
billingClient = BillingClient.newBuilder(context).setListener(this).build();
launchBillingFlow পদ্ধতি এখন BillingFlowParams ক্লাস ব্যবহার করে ডাকা হয়
কোনও ক্রয় বা সাবস্ক্রিপশনের জন্য বিলিং প্রবাহ শুরু করার জন্য, launchBillingFlow() পদ্ধতিটি অনুরোধের জন্য নির্দিষ্ট প্যারামিটার সহ একটি BillingFlowParams ইনস্ট্যান্স গ্রহণ করে:
কোটলিন
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() পদ্ধতির জন্য আর্গুমেন্টগুলি একটি বিল্ডার প্যাটার্নে মোড়ানো হয়েছিল:
কোটলিন
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 অবজেক্টের একটি তালিকার মাধ্যমে ফেরত পাঠানো হচ্ছে:
কোটলিন
fun onSkuDetailsResponse(@BillingResponse responseCode: Int, skuDetailsList: List<SkuDetails>)
জাভা
public void onSkuDetailsResponse(@BillingResponse int responseCode, List<SkuDetails> skuDetailsList)
onConsumeResponse() পদ্ধতিতে প্যারামিটারের ক্রম পরিবর্তন করা হয়েছে
ConsumeResponseListener ইন্টারফেস থেকে onConsumeResponse এর জন্য আর্গুমেন্টের ক্রম আমাদের API জুড়ে সামঞ্জস্যপূর্ণ হওয়ার জন্য পরিবর্তিত হয়েছে:
কোটলিন
fun onConsumeResponse(@BillingResponse responseCode: Int, outToken: String)
জাভা
public void onConsumeResponse(@BillingResponse int responseCode, String outToken)
খোলা PurchaseResult অবজেক্ট
আমাদের API জুড়ে সামঞ্জস্যপূর্ণ থাকার জন্য PurchaseResult খুলে দেওয়া হয়েছে:
কোটলিন
fun onPurchaseHistoryResponse(@BillingResponse responseCode: Int, purchasesList: List<Purchase>)
জাভা
void onPurchaseHistoryResponse(@BillingResponse int responseCode, List<Purchase> purchasesList)
বাগ সংশোধন
- PURCHASES_UPDATED বান্ডেলে কোনও প্রতিক্রিয়া কোড নেই
- ডিভাইস ঘোরানোর সময় ProxyBillingActivity এবং PurchasesUpdatedListener সমস্যাগুলি সমাধান করুন
ডেভেলপার প্রিভিউ ১ রিলিজ (২০১৭-০৬-১২, ঘোষণা )
ডেভেলপার প্রিভিউ চালু করা হয়েছে, যার লক্ষ্য বিলিংয়ের ক্ষেত্রে ডেভেলপমেন্ট প্রক্রিয়া সহজ করা, যাতে ডেভেলপাররা অ্যান্ড্রয়েড অ্যাপের জন্য নির্দিষ্ট লজিক, যেমন অ্যাপ্লিকেশন আর্কিটেকচার এবং নেভিগেশন স্ট্রাকচার বাস্তবায়নের উপর তাদের প্রচেষ্টাকে কেন্দ্রীভূত করতে পারেন।
আপনার অ্যান্ড্রয়েড অ্যাপগুলিকে গুগল প্লে বিলিং এপিআই-এর সাথে একীভূত করার সময় লাইব্রেরিতে বেশ কয়েকটি সুবিধাজনক ক্লাস এবং বৈশিষ্ট্য রয়েছে। লাইব্রেরিটি অ্যান্ড্রয়েড ইন্টারফেস ডেফিনিশন ল্যাঙ্গুয়েজ (AIDL) পরিষেবার উপরে একটি বিমূর্ত স্তরও প্রদান করে, যা ডেভেলপারদের জন্য অ্যাপ এবং গুগল প্লে বিলিং এপিআই-এর মধ্যে ইন্টারফেস সংজ্ঞায়িত করা সহজ করে তোলে।