Google Play Billing Library 7 या 8 से Google Play Billing Library 9 पर माइग्रेट करना

इस दस्तावेज़ में, Google Play Billing Library (पीबीएल) 7 या 8 से पीबीएल 9 पर माइग्रेट करने और नई सुविधाओं को इंटिग्रेट करने का तरीका बताया गया है.

वर्शन 9.0.0 में हुए बदलावों की पूरी सूची देखने के लिए, रिलीज़ नोट पढ़ें.

खास जानकारी

PBL 9 में, मौजूदा एपीआई में सुधार किए गए हैं. साथ ही, पहले से बंद किए गए एपीआई हटा दिए गए हैं. लाइब्रेरी के इस वर्शन में, नए सब-रिस्पॉन्स कोड की मदद से गड़बड़ी के बारे में ज़्यादा जानकारी मिलती है.

पीबीएल अपग्रेड के लिए, पुराने सिस्टम के साथ काम करने की सुविधा

PBL 9 पर माइग्रेट करने के लिए, आपको अपने ऐप्लिकेशन से कुछ मौजूदा एपीआई रेफ़रंस हटाने होंगे या उन्हें अपडेट करना होगा. इसके बारे में रिलीज़ नोट और इस माइग्रेट करने से जुड़ी गाइड में आगे बताया गया है.

PBL 7 या 8 से PBL 9 पर अपग्रेड करना

पीबीएल 7 या 8 से पीबीएल 9 पर अपग्रेड करने के लिए, यह तरीका अपनाएं:

  1. अपने ऐप्लिकेशन की 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")
    }
    
  2. (यह सिर्फ़ पीबीएल 7 से पीबीएल 9 पर अपग्रेड करने पर लागू होता है). queryProductDetailsAsync तरीके को लागू करने की प्रोसेस को अपडेट करें.

    ProductDetailsResponseListener.onProductDetailsResponse तरीके के सिग्नेचर में बदलाव किया गया है. इसके लिए, आपको queryProductDetailsAsync को लागू करने के लिए अपने ऐप्लिकेशन में बदलाव करने होंगे. ज़्यादा जानकारी के लिए, खरीदने के लिए उपलब्ध प्रॉडक्ट दिखाएं पर जाएं.

  3. हटाए गए एपीआई को मैनेज करना.

    यहां दी गई टेबल में, हटाए गए एपीआई और उनके बदले इस्तेमाल किए जाने वाले एपीआई की सूची दी गई है. आपको अपने ऐप्लिकेशन में इन एपीआई का इस्तेमाल करना चाहिए.

    इनसे अपग्रेड करें

    PBL 9 में, यहां दी गई टेबल में मौजूद एपीआई अब काम नहीं करते. अगर आपके इंटिग्रेशन में, हटाए गए इन एपीआई में से किसी का इस्तेमाल किया जाता है, तो उनके बदले इस्तेमाल किए जा सकने वाले एपीआई के लिए टेबल देखें.

    पहले से बंद किया गया एपीआई हटाया गया इस्तेमाल करने के लिए वैकल्पिक एपीआई
    queryPurchaseHistoryAsync एपीआई खरीदारी के इतिहास के बारे में क्वेरी करना देखें. अगर आपने मुफ़्त में आज़माने की सुविधा पाने की ज़रूरी शर्तें तय करने के लिए, 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 का इस्तेमाल करें

  4. (सुझाया गया) सेवा के अपने-आप फिर से कनेक्ट होने की सुविधा चालू करें.

    अगर सेवा डिसकनेक्ट होने के दौरान कोई एपीआई कॉल किया जाता है, तो Play Billing Library, सेवा कनेक्शन को अपने-आप फिर से चालू करने की कोशिश कर सकती है. ज़्यादा जानकारी के लिए, सेवा के अपने-आप फिर से कनेक्ट होने की सुविधा चालू करना लेख पढ़ें.

  5. नए सब-रिस्पॉन्स कोड मैनेज करना.

    launchBillingFlow() से मिले BillingResult में अब सब-रिस्पॉन्स कोड फ़ील्ड शामिल होगा. यह फ़ील्ड सिर्फ़ कुछ मामलों में भरा जाएगा, ताकि गड़बड़ी की ज़्यादा सटीक वजह बताई जा सके. सब-रिस्पॉन्स फ़ील्ड में ये वैल्यू हो सकती हैं:

    • PAYMENT_DECLINED_DUE_TO_INSUFFICIENT_FUNDS - यह तब दिखता है, जब उपयोगकर्ता के पास उस आइटम की कीमत से कम पैसे हों जिसे वह खरीदने की कोशिश कर रहा है.
    • USER_INELIGIBLE - यह तब दिखता है, जब उपयोगकर्ता सदस्यता के किसी ऑफ़र के लिए तय की गई ज़रूरी शर्तें पूरी नहीं करता.
    • NO_APPLICABLE_SUB_RESPONSE_CODE - यह डिफ़ॉल्ट वैल्यू है. यह तब दिखती है, जब कोई दूसरा सब-रिस्पॉन्स कोड लागू न हो.

    माइग्रेशन का चरण: अपने PurchasesUpdatedListener या इसके बराबर के रिज़ल्ट हैंडलिंग को अपडेट करें, ताकि इन खास सब-रिस्पॉन्स कोड को पहचाना जा सके और उनका जवाब दिया जा सके. इससे उपयोगकर्ताओं को बेहतर अनुभव मिलेगा. उदाहरण के लिए, उपयोगकर्ता को पेमेंट के तरीके ठीक करने के लिए कहें या गड़बड़ी का मैसेज दिखाएं.

  6. गड़बड़ी के कोड को फिर से कैटगरी में बांटने के बारे में जानकारी.

    ऐसे मामलों में जहां सिस्टम ने Play Store ऐप्लिकेशन को ब्लॉक किया है (उदाहरण के लिए, ओईएम के हिसाब से बनाए गए बच्चों वाले मोड में), पीबीएल से मिलने वाला रिस्पॉन्स कोड ERROR से बदलकर BILLING_UNAVAILABLE हो गया है.

    माइग्रेशन का चरण: पक्का करें कि गड़बड़ी को ठीक करने का आपका लॉजिक, इस बदलाव के हिसाब से काम करता हो. साथ ही, इन खास स्थितियों में गड़बड़ी का सामान्य मैसेज मिलने पर निर्भर न हो.

  7. DeveloperProvidedBillingDetails.getLinkUri() की शून्यता को मैनेज करना.

    अगर बाहरी बिलिंग सिस्टम के इंटिग्रेशन के तहत DeveloperProvidedBillingDetails का इस्तेमाल किया जाता है, तो getLinkUri() अब @Nullable है.

    माइग्रेशन का चरण: इस बदलाव को सुरक्षित तरीके से मैनेज करने के लिए, पक्का करें कि आपका इंटिग्रेशन कोड, ब्राउज़र इंटेंट को पार्स या लॉन्च करने से पहले, DeveloperProvidedBillingDetails.getLinkUri() तरीके से null और खाली स्ट्रिंग ("") दोनों वैल्यू को मैनेज करता हो. उदाहरण के लिए:

    Kotlin

    Java

    String linkUri = details.getLinkUri();
    if (!android.text.TextUtils.isEmpty(linkUri)) {
      Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(linkUri));
      context.startActivity(intent);
    }
    
  8. वैकल्पिक बदलाव.