इस दस्तावेज़ में, Google Play Billing Library (पीबीएल) 7 या 8 से पीबीएल 9 पर माइग्रेट करने का तरीका बताया गया है. साथ ही, नई सुविधाओं के साथ इंटिग्रेट करने का तरीका भी बताया गया है.
वर्शन 9.0.0 में हुए सभी बदलावों की पूरी सूची देखने के लिए, रिलीज़ नोट देखें.
Android से जुड़ी स्किल
GitHub पर देखेंPlay Billing Library को अपग्रेड करना
android skills add --skill play-billing-library-version-upgradeHelp me upgrade my Play Billing Library implementation.खास जानकारी
PBL 9 में, मौजूदा एपीआई को बेहतर बनाया गया है. साथ ही, इसमें पहले बंद किए जा चुके एपीआई को हटा दिया गया है. लाइब्रेरी के इस वर्शन में, नए सब-रिस्पॉन्स कोड के ज़रिए गड़बड़ी के बारे में ज़्यादा जानकारी भी मिलती है.
पीबीएल को अपग्रेड करने के लिए, पुराने सिस्टम के साथ काम करने की सुविधा
PBL 9 पर माइग्रेट करने के लिए, आपको अपने ऐप्लिकेशन से कुछ मौजूदा एपीआई रेफ़रंस अपडेट करने या हटाने होंगे. इसके बारे में रिलीज़ नोट में बताया गया है. इसके बाद, इस माइग्रेशन गाइड में भी बताया गया है.
PBL 7 या 8 से PBL 9 पर अपग्रेड करना
PBL 7 या 8 से PBL 9 पर अपग्रेड करने के लिए, यह तरीका अपनाएं:
अपने ऐप्लिकेशन की
build.gradleफ़ाइल में, Play Billing Library की डिपेंडेंसी के वर्शन को अपडेट करें.dependencies { def billing_version = "9.1.0" implementation "com.android.billingclient:billing:$billing_version" }अगर Kotlin का इस्तेमाल किया जा रहा है, तो Google Play Billing Library KTX मॉड्यूल में Kotlin एक्सटेंशन और कोराउटीन सपोर्ट शामिल होता है. इससे Google Play Billing Library का इस्तेमाल करते समय, Kotlin के स्टैंडर्ड के मुताबिक कोड लिखा जा सकता है. इन एक्सटेंशन को अपने प्रोजेक्ट में शामिल करने के लिए, अपने ऐप्लिकेशन की
build.gradleफ़ाइल में यहां दी गई डिपेंडेंसी जोड़ें:dependencies { val billing_version = "9.1.0" implementation("com.android.billingclient:billing-ktx:$billing_version") }(सिर्फ़ PBL 7 से PBL 9 पर अपग्रेड करने के लिए लागू होता है).
queryProductDetailsAsyncतरीके को लागू करने का तरीका अपडेट करें.ProductDetailsResponseListener.onProductDetailsResponseतरीके के सिग्नेचर में बदलाव हुआ है. इसलिए,queryProductDetailsAsyncको लागू करने के लिए, आपको अपने ऐप्लिकेशन में बदलाव करने होंगे. ज़्यादा जानकारी के लिए, खरीदने के लिए उपलब्ध प्रॉडक्ट दिखाना लेख पढ़ें.हटाए गए एपीआई को मैनेज करें.
यहां दी गई टेबल में, हटाए गए एपीआई और उनके बदले इस्तेमाल किए जाने वाले एपीआई की जानकारी दी गई है. आपको अपने ऐप्लिकेशन में इन एपीआई का इस्तेमाल करना होगा.
अपग्रेड करें
PBL 9 अब यहां दी गई टेबल में शामिल एपीआई के साथ काम नहीं करता. अगर आपके इंटिग्रेशन में हटाए गए इनमें से किसी एपीआई का इस्तेमाल किया जा रहा है, तो उनके बदले इस्तेमाल किए जा सकने वाले एपीआई के बारे में जानने के लिए, टेबल देखें.
पहले से बंद किए गए एपीआई को हटा दिया गया है इस्तेमाल करने के लिए दूसरा एपीआई queryPurchaseHistoryAsync API Query Purchase History देखें. अगर आपने queryPurchaseHistoryAsync का इस्तेमाल, बिना किसी शुल्क के आज़माने की सुविधा के लिए ज़रूरी शर्तें तय करने के लिए किया था, तो अब आपको ProductDetails.getSubscriptionOfferDetails() का इस्तेमाल करना चाहिए. इससे यह तय किया जा सकेगा कि कोई उपयोगकर्ता किन ऑफ़र के लिए ज़रूरी शर्तें पूरी करता है. BillingClient.SkuType BillingClient.ProductType. INAPP और SUBS प्रॉडक्ट टाइप के कॉन्स्टेंट, काम करने के तरीके के हिसाब से, बंद किए गए SKU टाइप के कॉन्स्टेंट के जैसे ही होते हैं. SkuDetails ProductDetails. यह नया डेटा मॉडल है, जो वन-टाइम प्रॉडक्ट के साथ काम करता है. SkuDetailsParams queryProductDetailsAsync के साथ QueryProductDetailsParams का इस्तेमाल करें. SkuDetailsResponseListener queryProductDetailsAsync के साथ ProductDetailsResponseListener का इस्तेमाल करें. QueryPurchaseHistoryParams - चालू या लंबित खरीदारी के लिए, queryPurchasesAsync का इस्तेमाल करें.
- बैकएंड सर्वर पर, इस्तेमाल की गई खरीदारी को ट्रैक करें.
- रद्द की गई या अमान्य की गई खरीदारी के लिए, सर्वर-साइड Voided Purchases API का इस्तेमाल करें.
getSkuDetailsList और setSkuDetailsList BillingFlowParams.Builder.setProductDetailsParamsList का इस्तेमाल करें querySkuDetailsAsync queryProductDetailsAsync enablePendingPurchases() (पैरामीटर के बिना एपीआई) enablePendingPurchases(PendingPurchasesParams params)
ध्यान दें कि बंद की जा चुकी enablePendingPurchases() सुविधा,enablePendingPurchases(PendingPurchasesParams.newBuilder().enableOneTimeProducts().build())के बराबर है.queryPurchasesAsync(String skuType, PurchasesResponseListener listener) queryPurchasesAsync अपग्रेड करें
यहां दी गई टेबल में, PBL 9 में हटाए गए एपीआई और उनके बदले इस्तेमाल किए जाने वाले एपीआई की जानकारी दी गई है. आपको अपने ऐप्लिकेशन में इन एपीआई का इस्तेमाल करना होगा.
पहले से बंद किए गए एपीआई को हटा दिया गया है इस्तेमाल करने के लिए दूसरा एपीआई BillingClient.SkuType BillingClient.ProductType. INAPP और SUBS प्रॉडक्ट टाइप के कॉन्स्टेंट, काम करने के तरीके के हिसाब से, बंद किए गए SKU टाइप के कॉन्स्टेंट के जैसे ही होते हैं. SkuDetails ProductDetails. यह नया डेटा मॉडल है, जो वन-टाइम प्रॉडक्ट के साथ काम करता है. SkuDetailsParams queryProductDetailsAsync के साथ QueryProductDetailsParams का इस्तेमाल करें. SkuDetailsResponseListener queryProductDetailsAsync के साथ ProductDetailsResponseListener का इस्तेमाल करें. QueryPurchaseHistoryParams - चालू या लंबित खरीदारी के लिए, queryProductDetailsAsync का इस्तेमाल करें.
- बैकएंड सर्वर पर, इस्तेमाल की गई खरीदारी को ट्रैक करें.
- रद्द की गई या अमान्य की गई खरीदारी के लिए, सर्वर-साइड Voided Purchases API का इस्तेमाल करें.
getSkuDetailsList और setSkuDetailsList BillingFlowParams.Builder.setProductDetailsParamsList का इस्तेमाल करें (सुझाया गया) सेवा के अपने-आप फिर से कनेक्ट होने की सुविधा चालू करें.
अगर सेवा के डिसकनेक्ट होने के दौरान कोई एपीआई कॉल किया जाता है, तो Play Billing Library सेवा कनेक्शन को अपने-आप फिर से चालू करने की कोशिश कर सकती है. ज़्यादा जानकारी के लिए, सेवा से अपने-आप फिर से कनेक्ट होने की सुविधा चालू करना लेख पढ़ें.
नए सब-रिस्पॉन्स कोड हैंडल किए जा सकते हैं.
launchBillingFlow()से मिला BillingResult अब सब-रिस्पॉन्स कोड फ़ील्ड को शामिल करेगा. यह फ़ील्ड सिर्फ़ कुछ मामलों में भरा जाएगा, ताकि अनुरोध पूरा न होने की वजह के बारे में ज़्यादा जानकारी दी जा सके. सब-रिस्पॉन्स फ़ील्ड में ये वैल्यू हो सकती हैं:PAYMENT_DECLINED_DUE_TO_INSUFFICIENT_FUNDS- यह तब दिखता है, जब उपयोगकर्ता के पास उतने पैसे नहीं होते जितने का आइटम वह खरीदने की कोशिश कर रहा है.USER_INELIGIBLE- यह तब दिखता है, जब उपयोगकर्ता सदस्यता के ऑफ़र के लिए कॉन्फ़िगर की गई ज़रूरी शर्तों को पूरा नहीं करता.NO_APPLICABLE_SUB_RESPONSE_CODE- यह डिफ़ॉल्ट वैल्यू है. यह तब दिखती है, जब कोई अन्य सब-रिस्पॉन्स कोड लागू नहीं होता.
माइग्रेशन का चरण: बेहतर उपयोगकर्ता अनुभव देने के लिए,
PurchasesUpdatedListenerया नतीजों को हैंडल करने के तरीके को अपडेट करें, ताकि इन खास सब-रिस्पॉन्स कोड को पहचाना जा सके और इनके हिसाब से जवाब दिया जा सके. उदाहरण के लिए, पेमेंट के तरीके ठीक करने के लिए प्रॉम्प्ट करना या गड़बड़ी का कोई मैसेज दिखाना.गड़बड़ी के कोड को फिर से क्लासिफ़ाई करने के बारे में जानकारी.
ऐसे मामलों में जहां सिस्टम ने Play Store ऐप्लिकेशन को ब्लॉक कर दिया है (उदाहरण के लिए, ओईएम के हिसाब से बनाए गए Kids Mode में), PBL से मिलने वाला रिस्पॉन्स कोड
ERRORसे बदलकरBILLING_UNAVAILABLEहो गया है.माइग्रेशन का चरण: पक्का करें कि गड़बड़ी ठीक करने का लॉजिक, इस बदलाव के मुताबिक हो. साथ ही, इन खास स्थितियों में सामान्य गड़बड़ी मिलने पर निर्भर न हो.
DeveloperProvidedBillingDetails.getLinkUri()की वैल्यू नल होने की स्थिति को हैंडल करता है.अगर आपने बाहरी बिलिंग सिस्टम के साथ इंटिग्रेट किए गए
DeveloperProvidedBillingDetailsका इस्तेमाल किया है, तो अबDeveloperProvidedBillingDetailsको@Nullableके तौर पर इस्तेमाल किया जा सकता है.getLinkUri()माइग्रेशन का चरण: इस बदलाव को सुरक्षित तरीके से लागू करने के लिए, पक्का करें कि आपका इंटिग्रेशन कोड,
DeveloperProvidedBillingDetails.getLinkUri()तरीके सेnullऔर खाली स्ट्रिंग ("") वैल्यू, दोनों को हैंडल करता हो. ऐसा ब्राउज़र इंटेंट को पार्स करने या लॉन्च करने से पहले करें. उदाहरण के लिए:Kotlin
val linkUri = details.linkUri if (!linkUri.isNullOrEmpty()) { val intent = Intent(Intent.ACTION_VIEW, linkUri.toUri()) context.startActivity(intent) }
Java
String linkUri = details.getLinkUri(); if (!android.text.TextUtils.isEmpty(linkUri)) { Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(linkUri)); context.startActivity(intent); }वैकल्पिक बदलाव.
प्रीपेड प्लान के लिए, लंबित खरीदारी की सुविधा उपलब्ध है. ज़्यादा जानकारी के लिए, सदस्यताओं और लंबित लेन-देन मैनेज करना लेख पढ़ें.
वर्चुअल तौर पर ली जाने वाली किस्त की सदस्यताएं. ज़्यादा जानकारी के लिए, किस्तों में सदस्यता लेने की सुविधा का इंटिग्रेशन लेख पढ़ें.