এই নথিতে Google Play বিলিং লাইব্রেরির জন্য রিলিজ নোট রয়েছে৷
Google Play বিলিং লাইব্রেরি 8.0.0 রিলিজ (2025-06-30)
Google Play বিলিং লাইব্রেরি এবং Kotlin এক্সটেনশনের সংস্করণ 8.0.0 এখন উপলব্ধ৷
পরিবর্তনের সারসংক্ষেপ
অ্যাপ-মধ্যস্থ আইটেমগুলিকে এখন এককালীন পণ্য হিসাবে উল্লেখ করা হবে৷
এককালীন পণ্যের জন্য একাধিক ক্রয়ের বিকল্প এবং অফার।
আপনি এখন আপনার এককালীন পণ্যগুলির জন্য একাধিক ক্রয়ের বিকল্প এবং অফার থাকতে পারেন৷ এটি আপনাকে আপনার পণ্যগুলি কীভাবে বিক্রি করে তাতে নমনীয়তা প্রদান করে এবং সেগুলি পরিচালনার জটিলতা হ্রাস করে।
queryProductDetailsAsync()পদ্ধতি উন্নত করা হয়েছে।PBL 8.0.0-এর আগে,
queryProductDetailsAsync()পদ্ধতিটি এমন পণ্য ফেরত দেয়নি যা আনা যায়নি। পণ্যটি খুঁজে না পাওয়া বা ব্যবহারকারীর কাছে কোনো অফার পাওয়া না যাওয়ার মতো কারণে এটি হতে পারে। PBL 8.0.0 এর সাথে, আনফেচড পণ্যগুলি একটি নতুন পণ্য-স্তরের স্ট্যাটাস কোড সহ ফেরত দেওয়া হয় যা আনফেচড পণ্য সম্পর্কে তথ্য প্রদান করে। মনে রাখবেন যেProductDetailsResponseListener.onProductDetailsResponse()এর স্বাক্ষরে একটি পরিবর্তন রয়েছে যার জন্য আপনার অ্যাপে পরিবর্তন প্রয়োজন। আরও তথ্যের জন্য, ফলাফল প্রক্রিয়া দেখুন।স্বয়ংক্রিয় পরিষেবা পুনঃসংযোগ।
নতুন
BillingClient.Builder.enableAutoServiceReconnection()বিল্ডার প্যারামিটার ডেভেলপারদের স্বয়ংক্রিয় পরিষেবা পুনঃসংযোগে অপ্ট-ইন করতে দেয়, যা স্বয়ংক্রিয়ভাবে Play বিলিং পরিষেবাতে পুনঃসংযোগ পরিচালনা করে এবং পরিষেবা বিচ্ছিন্ন হওয়ার ক্ষেত্রে ম্যানুয়ালিstartConnection()কল করার প্রয়োজনীয়তা দূর করে সংযোগ ব্যবস্থাপনাকে সহজ করে। আরও তথ্যের জন্য, স্বয়ংক্রিয়ভাবে একটি সংযোগ পুনঃস্থাপন দেখুন।launchBillingFlow()পদ্ধতির জন্য উপ-প্রতিক্রিয়া কোড।launchBillingFlow()থেকে ফিরে আসা BillingResult এখন একটি সাব-প্রতিক্রিয়া কোড ক্ষেত্র অন্তর্ভুক্ত করবে। এই ক্ষেত্রটি শুধুমাত্র কিছু ক্ষেত্রে ব্যর্থতার জন্য আরও নির্দিষ্ট কারণ প্রদান করার জন্য জনবহুল করা হবে। PBL 8.0.0 এর সাথে, একটি PAYMENT_DECLINED_DUE_TO_INSUFFICIENT_FUNDS উপ-কোড সেই ক্ষেত্রে ফেরত দেওয়া হয় যখন ব্যবহারকারীর তহবিল আইটেমের মূল্যের চেয়ে কম হয় যেটি তারা কেনার চেষ্টা করছে।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 বিলিং লাইব্রেরি 7.1.1 রিলিজ (2024-10-03)
Google Play বিলিং লাইব্রেরি এবং Kotlin এক্সটেনশনের সংস্করণ 7.1.1 এখন উপলব্ধ৷
বাগ ফিক্স
- Play Billing Library 7.1.0-এ
BillingResultপ্রতিক্রিয়া কোড পরীক্ষা করার সাথে সম্পর্কিত একটি বাগ সংশোধন করা হয়েছে।
Google Play বিলিং লাইব্রেরি 7.1.0 রিলিজ (2024-09-19)
Google Play বিলিং লাইব্রেরি এবং Kotlin এক্সটেনশনের সংস্করণ 7.1.0 এখন উপলব্ধ৷
পরিবর্তনের সারসংক্ষেপ
- সংযোগ স্থিতি এবং ব্যবস্থাপনা সম্পর্কিত উন্নত থ্রেড নিরাপত্তা.
- প্লে বিলিং লাইব্রেরি 7.1.1-এ সম্পূর্ণরূপে প্রকাশিত [
BillingResult[বিলিং-ফলাফল] প্রতিক্রিয়া কোডগুলি পরীক্ষার জন্য আংশিক পরিবর্তনগুলি প্রবর্তন করা হয়েছে৷ এই বৈশিষ্ট্যটি ব্যবহার করে আপনার ইন্টিগ্রেশন পরীক্ষা করতে, আপনাকে প্লে বিলিং লাইব্রেরি 7.1.1-এ আপগ্রেড করতে হবে। একটি বাগ বিদ্যমান যা শুধুমাত্র [বিলিং ওভাররাইড টেস্টিং সক্ষম [বিলিং-ওভাররাইড-টেস্টিং] সক্ষম করে এবং নিয়মিত ব্যবহারকে প্রভাবিত করে না। আরও তথ্যের জন্য, TestBillingResultপ্রতিক্রিয়া কোডগুলি দেখুন। [বিলিং-ফলাফল]: /reference/com/android/billingclient/api/BillingResult [enable-billing-overrides-testing]: /google/play/billing/test-response-codes#enable-billing-overrides-testing
Google Play বিলিং লাইব্রেরি 7.0.0 রিলিজ (2024-05-14)
Google Play বিলিং লাইব্রেরি এবং Kotlin এক্সটেনশনের সংস্করণ 7.0.0 এখন উপলব্ধ৷
পরিবর্তনের সারসংক্ষেপ
কিস্তি সাবস্ক্রিপশন সমর্থন করতে API যোগ করা হয়েছে।
- ব্যবহারকারীরা কেনার যোগ্য কিস্তির বেস প্ল্যানের জন্য [
ProductDetails.InstallmentPlanDetails[কিস্তির বিবরণ] যোগ করা হয়েছে। এই API আপনার অ্যাপটিকে কিস্তির পরিকল্পনা এবং ব্যবহারকারীকে সম্পর্কিত তথ্য প্রদানের জন্য এর প্রতিশ্রুতি সেটআপ সনাক্ত করতে সহায়তা করে। আরও জানতে, আমাদের [সাবস্ক্রিপশন কিস্তির নির্দেশিকা] [কিস্তি] দেখুন। [কিস্তির বিবরণ]: /reference/com/android/billingclient/api/ProductDetails.InstallmentPlanDetails [কিস্তি]: /google/play/billing/subscriptions#installments
- ব্যবহারকারীরা কেনার যোগ্য কিস্তির বেস প্ল্যানের জন্য [
BillingClient.Builder.enablePendingPurchases(PendingPurchaseParams)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()ব্যবহার করুন। - গ্রাসকৃত ক্রয়: ডেভেলপারদের উচিত তাদের নিজস্ব সার্ভারে ব্যবহূত কেনাকাটার ট্র্যাক রাখা।
- বাতিল করা কেনাকাটা: অকার্যকর-ক্রয় বিকাশকারী API ব্যবহার করুন।
- আরও বিশদ বিবরণের জন্য, ক্যোয়ারী ক্রয়ের ইতিহাস দেখুন
- স্বীকৃত এবং মুলতুবি ক্রয়: সক্রিয় ক্রয়গুলি আনতে
BillingFlowParams.ProductDetailsParams.setOfferToken()এখন একটি ব্যতিক্রম ছুঁড়ে দেয় যখন ডেভেলপাররা একটি খালিofferTokenনির্দিষ্ট করে।minSdkVersion21 এবংtargetSdkVersion34-এ আপডেট করা হয়েছে।
Google Play বিলিং লাইব্রেরি 6.2.1 রিলিজ (2024-04-16)
Google Play বিলিং লাইব্রেরি এবং Kotlin এক্সটেনশনের সংস্করণ 6.2.1 এখন উপলব্ধ৷
পরিবর্তনের সারসংক্ষেপ
-
BillingClient.showAlternativeBillingOnlyInformationDialog()-এ একটি বাগ সংশোধন করা হয়েছে যেখানে ডায়ালগটি সম্পূর্ণ হলে কিছু ক্ষেত্রেAlternativeBillingOnlyInformationDialogListenerকল করা যাবে না।
Google Play বিলিং লাইব্রেরি 6.2.0 রিলিজ (2024-03-06)
Google Play বিলিং লাইব্রেরি এবং Kotlin এক্সটেনশনের সংস্করণ 6.2.0 এখন উপলব্ধ৷
পরিবর্তনের সারসংক্ষেপ
- বাহ্যিক অফার সমর্থন করার জন্য API যোগ করা হয়েছে
- বাহ্যিক অফার প্রদান করার ক্ষমতা সক্ষম করতে
BillingClient.Builder.enableExternalOffer()যোগ করা হয়েছে। - বাহ্যিক অফার কার্যকারিতা প্রদানের উপলব্ধতা পরীক্ষা করতে
BillingClient.isExternalOfferAvailableAsync()যোগ করা হয়েছে। - যোগ করা হয়েছে
BillingClient.showExternalOfferInformationDialog()অ্যাপের বাইরে ব্যবহারকারীদের নেতৃত্ব দেওয়ার আগে ব্যবহারকারীদের একটি তথ্য ডায়ালগ দেখানোর জন্য। -
BillingClient.createExternalOfferReportingDetailsAsync()যোগ করা হয়েছে বহিরাগত অফারগুলির মাধ্যমে করা লেনদেনের রিপোর্ট করার জন্য একটি পেলোড তৈরি করতে।
- বাহ্যিক অফার প্রদান করার ক্ষমতা সক্ষম করতে
Google Play বিলিং লাইব্রেরি 6.1.0 রিলিজ (2023-11-14)
Google Play বিলিং লাইব্রেরি এবং Kotlin এক্সটেনশনের সংস্করণ 6.1.0 এখন উপলব্ধ৷
পরিবর্তনের সারসংক্ষেপ
- শুধুমাত্র বিকল্প বিলিং সমর্থন করার জন্য API যোগ করা হয়েছে (যেমন ব্যবহারকারীর পছন্দ ছাড়া)
- শুধুমাত্র বিকল্প বিলিং অফার করার ক্ষমতা কার্যকরীভাবে সক্ষম করতে
BillingClient.Builder.enableAlternativeBillingOnly()যোগ করা হয়েছে। - শুধুমাত্র বিকল্প বিলিং অফার করার উপলব্ধতা পরীক্ষা করতে
BillingClient.isAlternativeBillingOnlyAvailableAsync()যোগ করা হয়েছে। - যোগ করা হয়েছে
BillingClient.showAlternativeBillingOnlyInformationDialog()একটি তথ্য ডায়ালগ দেখানোর জন্য ব্যবহারকারীদের জানানোর জন্য যখন শুধুমাত্র বিকল্প বিলিং ব্যবহার করা হচ্ছে। - যোগ করা হয়েছে
BillingClient.createAlternativeBillingOnlyReportingDetailsAsync()শুধুমাত্র বিকল্প বিলিং এর মাধ্যমে করা লেনদেনের রিপোর্ট করার জন্য একটি পেলোড তৈরি করতে।
- শুধুমাত্র বিকল্প বিলিং অফার করার ক্ষমতা কার্যকরীভাবে সক্ষম করতে
- ব্যবহারকারী পছন্দ বিলিং API আপডেট করা হয়েছে
- অল্টারনেটিভবিলিংলিস্টেনারকে প্রতিস্থাপন করতে
UserChoiceBillingListenerযোগ করা হয়েছে যা অবচয় হিসাবে চিহ্নিত করা হয়েছে। -
AlternativeChoiceDetailsপ্রতিস্থাপন করতেUserChoiceDetailsযোগ করা হয়েছে যা অবচয় হিসাবে চিহ্নিত করা হয়েছে। -
BillingClient.Builder.enableUserChoiceBilling()প্রতিস্থাপন করতেBillingClient.Builder.enableAlternativeBilling()যোগ করা হয়েছে যা অবচয় হিসাবে চিহ্নিত করা হয়েছে।
- অল্টারনেটিভবিলিংলিস্টেনারকে প্রতিস্থাপন করতে
- Google Play দেশ পুনরুদ্ধার করতে
BillingClient.getBillingConfigAsync()যোগ করা হয়েছে।
Google Play বিলিং লাইব্রেরি 6.0.1 রিলিজ (2023-06-22)
Google Play বিলিং লাইব্রেরি এবং Kotlin এক্সটেনশনের সংস্করণ 6.0.1 এখন উপলব্ধ৷
পরিবর্তনের সারসংক্ষেপ
Android 14 এর সাথে সামঞ্জস্যপূর্ণ হতে Play বিলিং লাইব্রেরি আপডেট করুন।
Google Play বিলিং লাইব্রেরি 6.0 রিলিজ (2023-05-10)
Google Play বিলিং লাইব্রেরি এবং Kotlin এক্সটেনশনের সংস্করণ 6.0.0 এখন উপলব্ধ৷
পরিবর্তনের সারসংক্ষেপ
ProrationModeপ্রতিস্থাপন করতে নতুনReplacementModeenum যোগ করা হয়েছে।উল্লেখ্য যে
ProrationModeএখনও পশ্চাদগামী সামঞ্জস্যতার কারণে উপলব্ধ।PENDINGক্রয়ের জন্য অর্ডার আইডি সরানো হয়েছে।আগে, ক্রয় মুলতুবি থাকলেও অর্ডার আইডি সবসময় তৈরি করা হতো। সংস্করণ 6.0.0 থেকে শুরু করে, মুলতুবি কেনাকাটার জন্য একটি অর্ডার আইডি তৈরি করা হবে না এবং এই ক্রয়ের জন্য, ক্রয়টি
PURCHASEDঅবস্থায় স্থানান্তরিত হওয়ার পরে অর্ডার আইডি তৈরি করা হবে।সরানো হয়েছে
queryPurchasesএবংlaunchPriceConfirmationFlowপদ্ধতি।queryPurchasesএবংlaunchPriceConfirmationFlowপদ্ধতিগুলি যেগুলি পূর্বে অপ্রত্যাশিত হিসাবে চিহ্নিত করা হয়েছিল সেগুলি এখন প্লে বিলিং লাইব্রেরি 6.0.0 থেকে সরানো হয়েছে৷ ডেভেলপারদেরqueryPurchasesএর পরিবর্তেqueryPurchasesAsyncব্যবহার করা উচিত।launchPriceConfirmationFlowবিকল্পের জন্য, মূল্য পরিবর্তনগুলি দেখুন।নতুন নেটওয়ার্ক ত্রুটি প্রতিক্রিয়া কোড যোগ করা হয়েছে.
একটি নতুন নেটওয়ার্ক ত্রুটি প্রতিক্রিয়া কোড,
NETWORK_ERROR, PBL সংস্করণ 6.0.0 দিয়ে শুরু করে যোগ করা হয়েছে। নেটওয়ার্ক সংযোগ সমস্যার কারণে একটি ত্রুটি ঘটলে এই কোডটি ফেরত দেওয়া হয়। এই নেটওয়ার্ক সংযোগ ত্রুটিগুলি পূর্বেSERVICE_UNAVAILABLEহিসাবে রিপোর্ট করা হয়েছিল৷SERVICE_UNAVAILABLEএবংSERVICE_TIMEOUTআপডেট করা হয়েছে।PBL সংস্করণ 6.0.0 থেকে শুরু করে, প্রক্রিয়াকরণের সময়সীমার কারণে ত্রুটিগুলি বর্তমান
SERVICE_TIMEOUTপরিবর্তেSERVICE_UNAVAILABLEহিসাবে ফেরত দেওয়া হবে৷PBL এর আগের সংস্করণে আচরণ পরিবর্তন হয় না।
SERVICE_TIMEOUTসরানো হয়েছে।PBL সংস্করণ 6.0.0 দিয়ে শুরু করে,
SERVICE_TIMEOUTআর ফেরত দেওয়া হবে না। PBL এর পূর্ববর্তী সংস্করণগুলি এখনও এই কোডটি ফেরত দেবে।অতিরিক্ত লগিং যোগ করা হয়েছে.
প্লে বিলিং লাইব্রেরি 6 রিলিজে অতিরিক্ত লগিং অন্তর্ভুক্ত রয়েছে, যা API ব্যবহার (যেমন সাফল্য এবং ব্যর্থতা) এবং পরিষেবা সংযোগ সংক্রান্ত সমস্যাগুলির অন্তর্দৃষ্টি প্রদান করে৷ এই তথ্যটি প্লে বিলিং লাইব্রেরির পারফরম্যান্স উন্নত করতে এবং ত্রুটিগুলির জন্য আরও ভাল সমর্থন প্রদান করতে ব্যবহার করা হবে৷
Google Play বিলিং লাইব্রেরি 5.2.1 রিলিজ (2023-06-22)
Google Play বিলিং লাইব্রেরি এবং Kotlin এক্সটেনশনের সংস্করণ 5.2.1 এখন উপলব্ধ৷
পরিবর্তনের সারসংক্ষেপ
Android 14 এর সাথে সামঞ্জস্যপূর্ণ হতে Play বিলিং লাইব্রেরি আপডেট করুন।
Google Play বিলিং লাইব্রেরি 5.2 রিলিজ (2023-04-06)
Google Play বিলিং লাইব্রেরি এবং Kotlin এক্সটেনশনের সংস্করণ 5.2.0 এখন উপলব্ধ৷
পরিবর্তনের সারসংক্ষেপ
- দক্ষিণ কোরিয়ার ব্যবহারকারীদের জন্য মোবাইল/ট্যাবলেটে বিকল্প বিলিং প্রবাহ সমর্থন করার জন্য ক্লাস যোগ করা হয়েছে:
- মূল সদস্যতার বাহ্যিক লেনদেন আইডি নির্দিষ্ট করতে
BillingFlowParams.SubscriptionUpdateParams.Builder.setOriginalExternalTransactionId()পদ্ধতি যোগ করা হয়েছে। - দক্ষিণ কোরিয়ার ব্যবহারকারীদের একটি বিকল্প বিলিং বিকল্প নির্বাচন করার অনুমতি দিতে
BillingClient.Builder.enableAlternativeBilling()পদ্ধতি যোগ করা হয়েছে।
Google Play বিলিং লাইব্রেরি 5.1 রিলিজ (2022-10-31)
Google Play বিলিং লাইব্রেরি এবং Kotlin এক্সটেনশনের সংস্করণ 5.1.0 এখন উপলব্ধ৷
এই সংস্করণে নিম্নলিখিত পরিবর্তনগুলি রয়েছে৷
পরিবর্তনের সারসংক্ষেপ
- অফার আইডি পুনরুদ্ধার করতে
ProductDetails.SubscriptionOfferDetails.getOfferId()পদ্ধতি যোগ করা হয়েছে। - বেস প্ল্যান আইডি পুনরুদ্ধার করতে
ProductDetails.SubscriptionOfferDetails.getBasePlanId()পদ্ধতি যোগ করা হয়েছে। -
targetSdkVersion31-এ আপডেট করা হয়েছে।
Google Play বিলিং লাইব্রেরি 5.0 রিলিজ (2022-05-11)
Google Play বিলিং লাইব্রেরি এবং Kotlin এক্সটেনশনের সংস্করণ 5.0.0 এখন উপলব্ধ৷
এই সংস্করণে নিম্নলিখিত পরিবর্তনগুলি রয়েছে৷
পরিবর্তনের সারসংক্ষেপ
- সাবস্ক্রিপশনের জন্য একটি নতুন মডেল প্রবর্তন করেছে, নতুন সত্তা সহ যা আপনাকে একটি সাবস্ক্রিপশন পণ্যের জন্য একাধিক অফার তৈরি করতে সক্ষম করে। আরও তথ্যের জন্য, মাইগ্রেশন গাইড দেখুন।
-
BillingClient.queryProductDetailsAsync()প্রতিস্থাপন করতেBillingClient.querySkuDetailsAsync()যোগ করা হয়েছে। - EU ব্যক্তিগতকৃত মূল্য প্রকাশের প্রয়োজনীয়তার জন্য
setIsOfferPersonalized()পদ্ধতি যোগ করা হয়েছে। এই পদ্ধতিটি কীভাবে ব্যবহার করবেন সে সম্পর্কে আরও জানতে, একটি ব্যক্তিগতকৃত মূল্য নির্দেশ করুন দেখুন। - সরানো হয়েছে
queryPurchases(), যেটি আগে অবচ্যুত হয়েছিল এবং Google Play বিলিং লাইব্রেরি 4.0.0-এ চালু করা queryPurchasesAsync দ্বারা প্রতিস্থাপিত হয়েছিল৷ -
launchPriceChangeFlowবাতিল করা হয়েছে এবং ভবিষ্যতের রিলিজে সরিয়ে দেওয়া হবে। বিকল্প সম্পর্কে আরও জানতে, একটি মূল্য পরিবর্তন নিশ্চিতকরণ প্রবাহ চালু করুন দেখুন। - সরানো হয়েছে
setVrPurchaseFlow(), যা পূর্বে একটি ক্রয় প্রবাহকে সূচনা করার সময় ব্যবহৃত হত। পূর্ববর্তী সংস্করণগুলিতে, এই পদ্ধতিটি ব্যবহারকারীকে তাদের Android-চালিত ডিভাইসে কেনাকাটা সম্পূর্ণ করার জন্য পুনঃনির্দেশিত করেছে। একবার আপনি এই পদ্ধতিটি সরিয়ে ফেললে, ব্যবহারকারীরা স্ট্যান্ডার্ড ক্রয় প্রবাহের মাধ্যমে ক্রয়টি সম্পূর্ণ করবে।
Google Play বিলিং লাইব্রেরি 4.1 রিলিজ (2022-02-23)
Google Play বিলিং লাইব্রেরি এবং Kotlin এক্সটেনশনের সংস্করণ 4.1.0 এখন উপলব্ধ৷
এই সংস্করণে নিম্নলিখিত পরিবর্তনগুলি রয়েছে৷
পরিবর্তনের সারসংক্ষেপ
- সাবস্ক্রিপশন পেমেন্ট অস্বীকৃতি সামলাতে সাহায্য করতে
BillingClient.showInAppMessages()যোগ করা হয়েছে। সাবস্ক্রিপশন পেমেন্ট ডিকলাইন্স হ্যান্ডলিং করার জন্য অ্যাপ-মধ্যস্থ মেসেজিং কীভাবে ব্যবহার করবেন সে সম্পর্কে আরও জানতে, পেমেন্ট ডিকলাইন্স হ্যান্ডলিং দেখুন।
Google Play বিলিং লাইব্রেরি 4.0 রিলিজ (2021-05-18)
Google Play বিলিং লাইব্রেরি এবং Kotlin এক্সটেনশনের সংস্করণ 4.0.0 এখন উপলব্ধ৷
পরিবর্তনের সারসংক্ষেপ
BillingClient.queryPurchasesAsync()প্রতিস্থাপন করতেBillingClient.queryPurchases()যোগ করা হয়েছে যা ভবিষ্যতে রিলিজে সরানো হবে।নতুন সদস্যতা প্রতিস্থাপন মোড
IMMEDIATE_AND_CHARGE_FULL_PRICEযোগ করা হয়েছে।Play বিলিং লাইব্রেরির সংযোগ অবস্থা পুনরুদ্ধার করতে
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 বিলিং লাইব্রেরি 3.0.3 রিলিজ (2021-03-12)
Google Play বিলিং লাইব্রেরির সংস্করণ 3.0.3, Kotlin এক্সটেনশন এবং ইউনিটি প্লাগইন এখন উপলব্ধ৷
জাভা এবং কোটলিন বাগ ফিক্স
-
endConnection()কল করা হলে মেমরি লিক ঠিক করুন। - Google Play বিলিং লাইব্রেরি যখন একক টাস্ক লঞ্চ মোড ব্যবহার করে এমন অ্যাপ্লিকেশানগুলি দ্বারা ব্যবহার করা হয় তখন সমস্যার সমাধান করুন৷ একটি
onPurchasesUpdated()কলব্যাক ট্রিগার হবে যখন Android লঞ্চার থেকে একটি অ্যাপ পুনরায় চালু করা হবে এবং স্থগিত হওয়ার আগে বিলিং ডায়ালগটি দৃশ্যমান ছিল৷
ইউনিটি বাগ ফিক্স
- অ্যান্ড্রয়েড লঞ্চার থেকে একটি অ্যাপ পুনরায় চালু হলে মেমরি লিক ঠিক করতে জাভা সংস্করণ 3.0.3 আপডেট করুন এবং ক্রয় প্রতিরোধের সমস্যা সমাধান করুন এবং স্থগিত হওয়ার আগে বিলিং ডায়ালগটি দৃশ্যমান ছিল৷
Google Play বিলিং লাইব্রেরি 3.0.2 রিলিজ (2020-11-24)
Google Play বিলিং লাইব্রেরি এবং Kotlin এক্সটেনশনের সংস্করণ 3.0.2 এখন উপলব্ধ৷
বাগ ফিক্স
- কোটলিন এক্সটেনশনে একটি বাগ সংশোধন করা হয়েছে যেখানে "ইতিমধ্যে পুনরায় শুরু হয়েছে" ত্রুটির সাথে করটিন ব্যর্থ হয়৷
- kotlinx.coroutines লাইব্রেরি সংস্করণ 1.4+ এর সাথে Kotlin এক্সটেনশন ব্যবহার করা হলে অমীমাংসিত রেফারেন্স স্থির করা হয়েছে।
Google Play বিলিং লাইব্রেরি 3.0.1 রিলিজ (2020-09-30)
Google Play বিলিং লাইব্রেরি এবং Kotlin এক্সটেনশনের সংস্করণ 3.0.1 এখন উপলব্ধ৷
বাগ ফিক্স
- একটি বাগ সংশোধন করা হয়েছে যেখানে যদি অ্যাপটি বিলিং ফ্লো চলাকালীন মেরে ফেলা হয় এবং পুনরুদ্ধার করা হয় তবে ক্রয় ফলাফলের সাথে
PurchasesUpdatedListenerকল করা যাবে না।
Google Play বিলিং লাইব্রেরি 3.0 রিলিজ (2020-06-08)
Google Play বিলিং লাইব্রেরির সংস্করণ 3.0.0, Kotlin এক্সটেনশন, এবং ইউনিটি প্লাগইন এখন উপলব্ধ৷
পরিবর্তনের সারসংক্ষেপ
- পুরস্কৃত SKU সমর্থন সরানো হয়েছে।
-
ChildDirectedএবংUnderAgeOfConsentপ্যারামিটারগুলি সরানো হয়েছে৷ - অপসারিত বিকাশকারী পেলোড পদ্ধতিগুলি সরানো হয়েছে৷
- অপসারিত পদ্ধতি
BillingFlowParams.setAccountId()এবংBillingFlowParams.setDeveloperId()। - অপসারিত পদ্ধতি
BillingFlowParams.setOldSkus(String oldSku)এবংBillingFlowParams.addOldSku(String oldSku)। - শূন্যতা টীকা যোগ করা হয়েছে।
বাগ ফিক্স
-
SkuDetails.getIntroductoryPriceCycles()এখনStringএর পরিবর্তেintপ্রদান করে। - একটি বাগ সংশোধন করা হয়েছে যেখানে বিলিং ফ্লোকে অতিরিক্ত প্যারাম হিসেবে গণ্য করা হবে এমনকি কোনো অতিরিক্ত প্যারাম সেট না থাকলেও।
Google Play বিলিং লাইব্রেরি 2.2.1 রিলিজ (2020-05-20)
Google Play বিলিং লাইব্রেরির সংস্করণ 2.2.1 এখন উপলব্ধ৷
বাগ ফিক্স
- জাভা প্লে বিলিং লাইব্রেরির ডিফল্ট সংস্করণ আপডেট করা হয়েছে যার উপর কোটলিন এক্সটেনশন নির্ভর করে।
Google Play বিলিং লাইব্রেরি 2.2.0 রিলিজ এবং ইউনিটি সমর্থন (2020-03-23)
Google Play বিলিং-এর সংস্করণ 2.2.0 কার্যকারিতা প্রদান করে যা ডেভেলপারদের নিশ্চিত করতে সাহায্য করে যে কেনাকাটা সঠিক ব্যবহারকারীর জন্য দায়ী করা হয়েছে। এই পরিবর্তনগুলি ডেভেলপার পেলোডের উপর ভিত্তি করে কাস্টম সমাধান তৈরি করার প্রয়োজনীয়তা প্রতিস্থাপন করে। এই আপডেটের অংশ হিসেবে, ডেভেলপার পেলোড কার্যকারিতা বাতিল করা হয়েছে এবং ভবিষ্যতের রিলিজে সরিয়ে দেওয়া হবে। প্রস্তাবিত বিকল্প সহ আরও তথ্যের জন্য, বিকাশকারী পেলোড দেখুন।
একতার জন্য গুগল প্লে বিলিং বিলিং লাইব্রেরি 2
Google Play বিলিং লাইব্রেরি 2 এর বর্তমান জাভা এবং কোটলিন সংস্করণগুলি ছাড়াও, আমরা ইউনিটির সাথে ব্যবহারের জন্য লাইব্রেরির একটি সংস্করণ প্রকাশ করেছি৷ Unity ইন-অ্যাপ ক্রয় API ব্যবহার করে গেম ডেভেলপাররা Google Play বিলিং লাইব্রেরি 2 বৈশিষ্ট্যগুলির সুবিধা নিতে এবং Google Play বিলিং লাইব্রেরির ভবিষ্যত সংস্করণগুলিতে পরবর্তী আপগ্রেডগুলিকে আরও সহজ করতে এখনই আপগ্রেড করতে পারেন৷
আরও জানতে, ইউনিটির সাথে Google Play বিলিং ব্যবহার করুন দেখুন।
পরিবর্তনের সারসংক্ষেপ
- জাভা গুগল প্লে বিলিং লাইব্রেরি
-
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)
Google Play বিলিং লাইব্রেরির সংস্করণ 2.1.0 এবং নতুন Kotlin এক্সটেনশন এখন উপলব্ধ৷ প্লে বিলিং লাইব্রেরি কোটলিন এক্সটেনশনটি কোটলিন ব্যবহারের জন্য বাহাদুরী API বিকল্পগুলি প্রদান করে, যেখানে আরও ভাল নাল-নিরাপত্তা এবং কোরোটিনগুলি রয়েছে৷ কোড উদাহরণের জন্য, Google Play বিলিং লাইব্রেরি ব্যবহার করুন দেখুন।
এই সংস্করণে নিম্নলিখিত পরিবর্তনগুলি রয়েছে৷
পরিবর্তনের সারসংক্ষেপ
-
BillingFlowParamsএ,setOldSku(String oldSku)অবমূল্যায়িত করা হয়েছে এবংsetOldSku(String oldSku, String purchaseToken)দিয়ে প্রতিস্থাপিত হয়েছে, যখন ডিভাইসে একাধিক অ্যাকাউন্ট একই স্কুর মালিক হয় তখন দ্ব্যর্থতা নিরসন করতে।
Google Play বিলিং লাইব্রেরি 2.0.3 রিলিজ (2019-08-05)
Google Play বিলিং লাইব্রেরির সংস্করণ 2.0.3 এখন উপলব্ধ৷
বাগ ফিক্স
- একটি বাগ সংশোধন করা হয়েছে যেখানে
querySkuDetailsAsync()মাঝে মাঝে একটি সফল ফলাফল ফেরত দেওয়ার পরিবর্তেDEVELOPER_ERRORকোডের সাথে ব্যর্থ হবে৷
Google Play বিলিং লাইব্রেরি 2.0.2 রিলিজ (2019-07-08)
Google Play বিলিং লাইব্রেরির সংস্করণ 2.0.2 এখন উপলব্ধ৷ এই রিলিজে রেফারেন্স ডকুমেন্টেশনের আপডেট রয়েছে এবং লাইব্রেরির কার্যকারিতা পরিবর্তন করে না।
Google Play বিলিং লাইব্রেরি 2.0.1 রিলিজ (2019-06-06)
Google Play বিলিং লাইব্রেরির সংস্করণ 2.0.1 এখন উপলব্ধ৷ এই সংস্করণে নিম্নলিখিত পরিবর্তনগুলি রয়েছে৷
বাগ ফিক্স
- একটি বাগ সংশোধন করা হয়েছে যেখানে কিছু ক্ষেত্রে ডিবাগ বার্তা
nullহিসাবে ফেরত দেওয়া হচ্ছে। - একটি সম্ভাব্য মেমরি লিক সমস্যা সংশোধন করা হয়েছে.
Google Play বিলিং লাইব্রেরি 2.0 রিলিজ (2019-05-07)
Google Play বিলিং লাইব্রেরির সংস্করণ 2.0 এখন উপলব্ধ৷ এই সংস্করণে নিম্নলিখিত পরিবর্তনগুলি রয়েছে৷
ক্রয় তিন দিনের মধ্যে স্বীকার করতে হবে
Google Play আপনার অ্যাপের ভিতর থেকে (অ্যাপ-এর মধ্যে) বা আপনার অ্যাপের বাইরে (অ্যাপ-এর বাইরে) পণ্য কেনাকে সমর্থন করে। ব্যবহারকারী আপনার পণ্য যেখানেই ক্রয় করুক না কেন Google Play একটি ধারাবাহিক ক্রয়ের অভিজ্ঞতা নিশ্চিত করার জন্য, ব্যবহারকারীকে এনটাইটেলমেন্ট দেওয়ার পরে যত তাড়াতাড়ি সম্ভব Google Play বিলিং লাইব্রেরির মাধ্যমে প্রাপ্ত সমস্ত কেনাকাটা স্বীকার করতে হবে। আপনি যদি তিন দিনের মধ্যে একটি ক্রয় স্বীকার না করেন, তাহলে ব্যবহারকারী স্বয়ংক্রিয়ভাবে একটি অর্থ ফেরত পাবেন এবং Google Play ক্রয়টি প্রত্যাহার করে। মুলতুবি লেনদেনের জন্য (সংস্করণ 2.0 এ নতুন), তিন দিনের উইন্ডো শুরু হয় যখন ক্রয়টি PURCHASED অবস্থায় চলে যায় এবং ক্রয়টি PENDING থাকা অবস্থায় প্রযোজ্য হয় না।
সাবস্ক্রিপশনের জন্য, আপনাকে অবশ্যই নতুন ক্রয়ের টোকেন আছে এমন যেকোনো ক্রয় স্বীকার করতে হবে। এর মানে হল যে সমস্ত প্রাথমিক কেনাকাটা, পরিকল্পনা পরিবর্তন এবং পুনরায় সাইনআপগুলি স্বীকার করতে হবে, তবে আপনাকে পরবর্তী পুনর্নবীকরণগুলি স্বীকার করতে হবে না৷ একটি ক্রয়ের স্বীকৃতির প্রয়োজন কিনা তা নির্ধারণ করতে, আপনি ক্রয়ের স্বীকৃতি ক্ষেত্রটি পরীক্ষা করতে পারেন।
Purchase বস্তুতে এখন একটি isAcknowledged() পদ্ধতি রয়েছে যা নির্দেশ করে যে একটি ক্রয় স্বীকার করা হয়েছে কিনা। এছাড়াও, Google Play বিকাশকারী API-এ Purchases.products এবং Purchases.subscriptions উভয়ের জন্য স্বীকৃতি বুলিয়ান মান অন্তর্ভুক্ত রয়েছে। ক্রয় স্বীকার করার আগে, ক্রয়টি ইতিমধ্যেই স্বীকার করা হয়েছে কিনা তা নির্ধারণ করতে এই পদ্ধতিগুলি ব্যবহার করতে ভুলবেন না।
আপনি নিম্নলিখিত পদ্ধতিগুলির মধ্যে একটি ব্যবহার করে একটি ক্রয় স্বীকার করতে পারেন:
- ভোগ্য পণ্যের জন্য, ক্লায়েন্ট এপিআই-তে পাওয়া
consumeAsync()ব্যবহার করুন। - যে পণ্যগুলি ব্যবহার করা হয় না তাদের জন্য, ক্লায়েন্ট API-এ পাওয়া
acknowledgePurchase()ব্যবহার করুন। - সার্ভার API-এ একটি নতুন
acknowledge()পদ্ধতিও উপলব্ধ।
BillingFlowParams.setSku() সরানো হয়েছে
এই রিলিজে পূর্বে-বঞ্চিত BillingFlowParams#setSku() পদ্ধতিটি সরানো হয়েছে। একটি ক্রয় প্রবাহে পণ্য রেন্ডার করার আগে, আপনাকে এখন BillingClient.querySkuDetailsAsync() কল করতে হবে, ফলে SkuDetails অবজেক্টটি BillingFlowParams.Builder.setSkuDetails() এ পাস করতে হবে।
কোড উদাহরণের জন্য, Google Play বিলিং লাইব্রেরি ব্যবহার করুন দেখুন।
বিকাশকারী পেলোড সমর্থিত
Google Play বিলিং লাইব্রেরির সংস্করণ 2.0 ডেভেলপার পেলোডের জন্য সমর্থন যোগ করে — ইচ্ছামত স্ট্রিং যা ক্রয়ের সাথে সংযুক্ত করা যেতে পারে। আপনি একটি ক্রয়ের সাথে একটি বিকাশকারী পেলোড প্যারামিটার সংযুক্ত করতে পারেন, কিন্তু শুধুমাত্র যখন ক্রয় স্বীকার করা হয় বা ব্যবহার করা হয়। এটি AIDL-এ ডেভেলপার পেলোডের বিপরীতে, যেখানে ক্রয় প্রবাহ চালু করার সময় পেলোড নির্দিষ্ট করা যেতে পারে। যেহেতু কেনাকাটাগুলি এখন আপনার অ্যাপের বাইরে থেকে শুরু করা যেতে পারে, এই পরিবর্তনটি নিশ্চিত করে যে আপনার কাছে সর্বদা কেনাকাটায় একটি পেলোড যোগ করার সুযোগ রয়েছে৷
নতুন লাইব্রেরিতে পেলোড অ্যাক্সেস করতে, Purchase বস্তুতে এখন একটি getDeveloperPayload() পদ্ধতি অন্তর্ভুক্ত রয়েছে।
ধারাবাহিক অফার
আপনি যখন একটি ছাড়যুক্ত SKU অফার করেন, তখন Google Play এখন SKU-এর আসল মূল্য ফেরত দেয় যাতে আপনি ব্যবহারকারীদের দেখাতে পারেন যে তারা একটি ছাড় পাচ্ছেন।
SkuDetails মূল SKU মূল্য পুনরুদ্ধার করার জন্য দুটি নতুন পদ্ধতি রয়েছে:
-
getOriginalPriceAmountMicros()- ডিসকাউন্টের আগে SKU-এর বিন্যাসহীন মূল মূল্য ফেরত দেয়।
-
getOriginalPrice()- অতিরিক্ত মুদ্রা বিন্যাস সহ মূল মূল্য প্রদান করে।
মুলতুবি লেনদেন
Google Play বিলিং লাইব্রেরির সংস্করণ 2.0 সহ, আপনাকে অবশ্যই ক্রয় সমর্থন করতে হবে যেখানে এনটাইটেলমেন্ট দেওয়ার আগে অতিরিক্ত পদক্ষেপের প্রয়োজন হয়৷ উদাহরণ স্বরূপ, একজন ব্যবহারকারী নগদ ব্যবহার করে আপনার অ্যাপ-মধ্যস্থ পণ্য একটি ফিজিক্যাল স্টোর থেকে কেনার জন্য বেছে নিতে পারেন। এর মানে হল আপনার অ্যাপের বাইরে লেনদেন সম্পন্ন হয়েছে। এই পরিস্থিতিতে, ব্যবহারকারীর লেনদেন সম্পূর্ণ করার পরেই আপনার এনটাইটেলমেন্ট দেওয়া উচিত।
মুলতুবি কেনাকাটা সক্ষম করতে, আপনার অ্যাপ শুরু করার অংশ হিসাবে 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 না হয় তখনই স্বীকার করতে ভুলবেন না।
এপিআই পরিবর্তন
Google Play বিলিং লাইব্রেরির সংস্করণ 2.0-এ নতুন বৈশিষ্ট্য সমর্থন করতে এবং বিদ্যমান কার্যকারিতা স্পষ্ট করতে বেশ কয়েকটি 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 বিলিং লাইব্রেরি 1.2.2 রিলিজ (2019-03-07)
Google Play বিলিং লাইব্রেরির সংস্করণ 1.2.2 এখন উপলব্ধ৷ এই সংস্করণে নিম্নলিখিত পরিবর্তনগুলি রয়েছে৷
বাগ ফিক্স
- v1.2.1 এ প্রবর্তিত একটি থ্রেডিং সমস্যা সমাধান করা হয়েছে। ব্যাকগ্রাউন্ড কল আর মূল থ্রেড ব্লক করে না।
অন্যান্য পরিবর্তন
- যদিও মূল থ্রেড ব্যবহার করার জন্য এখনও সুপারিশ করা হয়, আপনি এখন একটি ব্যাকগ্রাউন্ড থ্রেড থেকে Google Play বিলিং লাইব্রেরি চালু করতে পারেন।
- ANR হওয়ার সম্ভাবনা কমাতে ইনস্ট্যান্টেশন সম্পূর্ণরূপে পটভূমির থ্রেডে স্থানান্তরিত হয়েছে।
প্লে বিলিং লাইব্রেরি 1.2.1 রিলিজ (2019-03-04)
Google Play বিলিং লাইব্রেরির সংস্করণ 1.2.1 এখন উপলব্ধ৷ এই সংস্করণে নিম্নলিখিত পরিবর্তনগুলি রয়েছে৷
প্রধান পরিবর্তন
- পুরস্কৃত পণ্যের জন্য সমর্থন যোগ করা হয়েছে। নগদীকরণ বিকল্প সম্পর্কে আরও তথ্যের জন্য, পুরস্কৃত-পণ্য-নির্দিষ্ট বৈশিষ্ট্য যুক্ত করুন দেখুন।
অন্যান্য পরিবর্তন
- পরীক্ষাকে সহজ করার জন্য
PurchasesResultএবংSkuDetailsResultজন্য পাবলিক কনস্ট্রাক্টর যোগ করা হয়েছে। -
SkuDetailsঅবজেক্ট একটি নতুন পদ্ধতি ব্যবহার করতে পারে,getOriginalJson()। - সমস্ত AIDL পরিষেবা কল এখন ব্যাকগ্রাউন্ড থ্রেড দ্বারা পরিচালিত হয়৷
বাগ ফিক্স
- নাল কলব্যাক শ্রোতাদের আর পাবলিক API-এ পাস করা হয় না।
Google Play বিলিং লাইব্রেরি 1.2 রিলিজ (2018-10-18)
Google Play বিলিং লাইব্রেরির সংস্করণ 1.2 এখন উপলব্ধ৷ এই সংস্করণে নিম্নলিখিত পরিবর্তনগুলি রয়েছে৷
পরিবর্তনের সারসংক্ষেপ
- Google Play বিলিং লাইব্রেরি এখন Android সফটওয়্যার ডেভেলপমেন্ট কিট লাইসেন্স চুক্তির অধীনে লাইসেন্সপ্রাপ্ত।
-
launchPriceChangeConfirmationFlowএপিআই যুক্ত করেছে, যা ব্যবহারকারীদের সাবস্ক্রিপশন মূল্যে মুলতুবি পরিবর্তন পর্যালোচনা করতে অনুরোধ করে। - কোনও ব্যবহারকারীর সাবস্ক্রিপশন আপগ্রেড বা ডাউনগ্রেড করার সময় একটি নতুন প্রেশন মোডের জন্য সমর্থন যুক্ত করা হয়েছে
DEFERRED -
BillingFlowParamsক্লাসেsetSku()প্রতিস্থাপন করেsetSkuDetails()। - মাইনর বাগ ফিক্স এবং কোড অপ্টিমাইজেশন।
মূল্য পরিবর্তন নিশ্চিতকরণ
আপনি এখন গুগল প্লে কনসোলে সাবস্ক্রিপশনের দাম পরিবর্তন করতে পারেন এবং ব্যবহারকারীদের আপনার অ্যাপ্লিকেশনটিতে প্রবেশ করার সময় নতুন মূল্য পর্যালোচনা এবং গ্রহণ করতে অনুরোধ করতে পারেন।
এই এপিআই ব্যবহার করতে, সাবস্ক্রিপশন পণ্যের 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 । এই মোডটি ব্যবহারকারীর সাবস্ক্রিপশন আপডেট করে যখন এটি পরবর্তী পুনর্নবীকরণ হয়। এই প্রেশন মোডটি কীভাবে সেট করবেন সে সম্পর্কে আরও জানতে, সেট প্রেশন মোড দেখুন।
এসকেইউ বিশদ সেট করার জন্য নতুন পদ্ধতি
BillingFlowParams ক্লাসে, setSku() পদ্ধতিটি হ্রাস করা হয়েছে। এই পরিবর্তনটি গুগল প্লে বিলিং প্রবাহকে অনুকূল করতে কাজ করে।
আপনার অ্যাপ্লিকেশন বিলিং ক্লায়েন্টে BillingFlowParams নতুন উদাহরণ তৈরি করার সময়, আমরা আপনাকে সুপারিশ করি যে আপনি পরিবর্তে জেএসএন অবজেক্টের সাথে সরাসরি setSkuDetails() ব্যবহার করে সরাসরি কাজ করুন, যেমনটি নিম্নলিখিত কোড স্নিপেটে দেখানো হয়েছে:
BillingFlowParams বিল্ডার ক্লাসে 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(); }
বিলিং লাইব্রেরি 1.1 রিলিজ খেলুন (2018-05-07)
গুগল প্লে বিলিং লাইব্রেরির সংস্করণ 1.1 এখন উপলব্ধ। এই সংস্করণে নিম্নলিখিত পরিবর্তনগুলি রয়েছে।
পরিবর্তনের সারসংক্ষেপ
- একটি বিদ্যমান সাবস্ক্রিপশন আপগ্রেড/ডাউনগ্রেড করার সময়
BillingFlowParamsএকটি প্রেশন মোড নির্দিষ্ট করতে সমর্থন যুক্ত করা হয়েছে। -
BillingFlowParamsreplaceSkusProrationবুলিয়ান পতাকাটি আর সমর্থিত নয়। পরিবর্তেreplaceSkusProrationModeব্যবহার করুন। -
launchBillingFlow()এখন ব্যর্থ প্রতিক্রিয়ার জন্য একটি কলব্যাক ট্রিগার করে।
আচরণ পরিবর্তন
গুগল প্লে বিলিং লাইব্রেরির 1.1 সংস্করণে নিম্নলিখিত আচরণ পরিবর্তন রয়েছে।
বিকাশকারীরা 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 | প্রতিস্থাপনটি অবিলম্বে কার্যকর হয়, এবং নতুন মূল্য পরবর্তী পুনরাবৃত্তির সময় চার্জ করা হবে। বিলিং চক্র একই থাকে। |
replaceSkusProration BillingFlowParams ক্লাসে সমর্থিত নয়
বিকাশকারীরা সাবস্ক্রিপশন আপগ্রেড অনুরোধের জন্য প্ররেটেড পরিমাণ চার্জ করতে একটি বুলিয়ান পতাকা সেট করতে সক্ষম হত। প্রদত্ত যে আমরা ProrationMode সমর্থন করছি, এতে আরও বিশদ প্রোরেশন নির্দেশ রয়েছে, এই বুলিয়ান পতাকাটি আর সমর্থিত নয়।
launchBillingFlow() এখন ব্যর্থ প্রতিক্রিয়ার জন্য একটি কলব্যাক ট্রিগার করে
বিলিং লাইব্রেরিটি সর্বদা PurhcasesUpdatedListener কলব্যাককে ট্রিগার করবে এবং একটি BillingResponse অ্যাসিঙ্ক্রোনালি ফিরিয়ে দেবে। BillingResponse সিঙ্ক্রোনাস রিটার্ন মানটি পাশাপাশি রাখা হয়।
বাগ ফিক্স
- পরিষেবাটি সংযোগ বিচ্ছিন্ন হয়ে গেলে যথাযথভাবে ASYNC পদ্ধতিতে প্রস্থান করে।
-
Builderপ্যারাম অবজেক্টগুলি আর নির্মিত অবজেক্টগুলিকে পরিবর্তন করে না। - 68087141 ইস্যু:
launchBillingFlow()এখন ব্যর্থ প্রতিক্রিয়াগুলির জন্য কলব্যাক ট্রিগার করুন।
গুগল প্লে বিলিং লাইব্রেরি 1.0 রিলিজ (2017-09-19, ঘোষণা )
গুগল প্লে বিলিং লাইব্রেরির সংস্করণ 1.0 এখন উপলব্ধ। এই সংস্করণে নিম্নলিখিত পরিবর্তনগুলি রয়েছে।
গুরুত্বপূর্ণ পরিবর্তন
- লাইব্রেরির ম্যানিফেস্টের ভিতরে এম্বেড করা বিলিংয়ের অনুমতি। অ্যান্ড্রয়েড ম্যানিফেস্টের ভিতরে
com.android.vending.BILLINGঅনুমতি যুক্ত করার প্রয়োজন নেই। - নতুন বিল্ডার
BillingClient.Builderক্লাসে যুক্ত হয়েছে। - এসকিউএসকে জিজ্ঞাসা করার পদ্ধতিগুলিতে ব্যবহার করার জন্য
SkuDetailsParamsক্লাসের জন্য বিল্ডার প্যাটার্ন প্রবর্তিত। - ধারাবাহিকতার জন্য বেশ কয়েকটি এপিআই পদ্ধতি আপডেট করা হয়েছিল (একই রিটার্ন আর্গুমেন্টের নাম এবং ক্রম)।
আচরণ পরিবর্তন
গুগল প্লে বিলিং লাইব্রেরির সংস্করণ 1.0 এ নিম্নলিখিত আচরণের পরিবর্তনগুলি রয়েছে।
বিলিংক্লিয়েন্ট.বিল্ডার ক্লাস
BillingClient.Builder এখন নতুন বিল্ডার প্যাটার্নের মাধ্যমে শুরু করা হয়েছে:
কোটলিন
billingClient = BillingClient.newBuilder(context).setListener(this).build()
জাভা
billingClient = BillingClient.newBuilder(context).setListener(this).build();
লঞ্চবিলিংফ্লো পদ্ধতিটি এখন একটি বিলিংফ্লোপ্রামস ক্লাস ব্যবহার করে বলা হয়
কোনও ক্রয় বা সাবস্ক্রিপশনের জন্য বিলিং প্রবাহ শুরু করার জন্য, 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() {...})
ফলাফলটি এখন আপনার সুবিধার জন্য পূর্ববর্তী মোড়ক শ্রেণীর পরিবর্তে এবং আমাদের এপিআই জুড়ে সামঞ্জস্যপূর্ণ হওয়ার পরিবর্তে ফলাফল কোড এবং SkuDetails অবজেক্টগুলির একটি তালিকা দিয়ে ফিরে আসে:
কোটলিন
fun onSkuDetailsResponse(@BillingResponse responseCode: Int, skuDetailsList: List<SkuDetails>)
জাভা
public void onSkuDetailsResponse(@BillingResponse int responseCode, List<SkuDetails> skuDetailsList)
প্যারামিটার অর্ডার onConsumeResponse() পদ্ধতিতে পরিবর্তিত হয়েছে
ConsumeResponseListener ইন্টারফেস থেকে onConsumeResponse জন্য যুক্তিগুলির ক্রমটি আমাদের এপিআই জুড়ে সামঞ্জস্যপূর্ণ হতে পরিবর্তিত হয়েছে:
কোটলিন
fun onConsumeResponse(@BillingResponse responseCode: Int, outToken: String)
জাভা
public void onConsumeResponse(@BillingResponse int responseCode, String outToken)
আবদ্ধ ক্রেতারসাল্ট অবজেক্ট
আমাদের এপিআই জুড়ে সামঞ্জস্যপূর্ণ হওয়ার জন্য PurchaseResult মুছে ফেলা হয়েছে:
কোটলিন
fun onPurchaseHistoryResponse(@BillingResponse responseCode: Int, purchasesList: List<Purchase>)
জাভা
void onPurchaseHistoryResponse(@BillingResponse int responseCode, List<Purchase> purchasesList)
বাগ ফিক্স
- ক্রয়_আপডেটেড বান্ডিলটিতে কোনও প্রতিক্রিয়া কোড নেই
- ডিভাইস ঘূর্ণনের সময় প্রক্সিবিলিং্যাকটিভিটি এবং ক্রয়সআপডেটেডলিস্টনার ইস্যুগুলি ঠিক করুন
বিকাশকারী পূর্বরূপ 1 প্রকাশ (2017-06-12, ঘোষণা )
বিকাশকারী পূর্বরূপ চালু করা হয়েছিল, যখন বিলিংয়ের ক্ষেত্রে এটি বিকাশের প্রক্রিয়াটি সহজ করার লক্ষ্যে বিকাশকারীদের অ্যান্ড্রয়েড অ্যাপ্লিকেশন যেমন অ্যাপ্লিকেশন আর্কিটেকচার এবং নেভিগেশন কাঠামোর মতো নির্দিষ্ট যুক্তি প্রয়োগের ক্ষেত্রে তাদের প্রচেষ্টা ফোকাস করার অনুমতি দেয়।
গুগল প্লে বিলিং এপিআইয়ের সাথে আপনার অ্যান্ড্রয়েড অ্যাপ্লিকেশনগুলিকে সংহত করার সময় লাইব্রেরিতে আপনার ব্যবহারের জন্য বেশ কয়েকটি সুবিধাজনক ক্লাস এবং বৈশিষ্ট্য অন্তর্ভুক্ত রয়েছে। লাইব্রেরিটি অ্যান্ড্রয়েড ইন্টারফেস সংজ্ঞা ভাষা (এইডএল) পরিষেবার শীর্ষে একটি বিমূর্ত স্তরও সরবরাহ করে, যা বিকাশকারীদের অ্যাপ্লিকেশন এবং গুগল প্লে বিলিং এপিআইয়ের মধ্যে ইন্টারফেসটি সংজ্ঞায়িত করা সহজ করে তোলে।