Google Play Billing Library के प्रॉडक्ट की जानकारी

इस दस्तावेज़ में, Google Play Billing Library के लिए रिलीज़ नोट दिए गए हैं.

Google Play Billing Library 8.1.0 रिलीज़ (06-11-2025)

Google Play Billing Library का वर्शन 8.1.0 और Kotlin एक्सटेंशन अब उपलब्ध हैं.

परिवर्तनों का सारांश

  • निलंबित की गई सदस्यताएं

    सदस्यताओं के लिए क्वेरी करते समय, निलंबित की गई सदस्यताओं को शामिल करने के लिए, BillingClient.queryPurchasesAsync() तरीके में एक नया पैरामीटर जोड़ा गया है. निलंबित की गई सदस्यताएं अब भी उपयोगकर्ता के खाते से जुड़ी रहती हैं, लेकिन वे चालू नहीं होतीं. ऐसा इसलिए होता है, क्योंकि उपयोगकर्ता ने सदस्यता रोकी होती है या सदस्यता के नवीनीकरण के लिए इस्तेमाल किए गए पेमेंट के तरीके को अस्वीकार कर दिया गया होता है.

    लिसनर में वापस भेजा गया Purchase ऑब्जेक्ट, निलंबित की गई सभी सदस्यताओं के लिए isSuspended() = true दिखाएगा. ऐसे में, आपको खरीदी गई सदस्यता का ऐक्सेस नहीं देना चाहिए. इसके बजाय, उपयोगकर्ता को सदस्यता केंद्र पर जाने के लिए कहें. यहां उपयोगकर्ता, पेमेंट के तरीकों को मैनेज कर सकता है या सदस्यता को फिर से चालू करने के लिए, उसे रोके जाने की स्थिति से हटा सकता है.

  • सदस्यताओं से जुड़े अपडेट:

    • BillingFlowParams.ProductDetailsParams ऑब्जेक्ट में अब setSubscriptionProductReplacementParams() तरीका उपलब्ध है. इसमें प्रॉडक्ट लेवल पर, बदलने के लिए जानकारी दी जा सकती है.

    • SubscriptionProductReplacementParams ऑब्जेक्ट में दो सेटर तरीके होते हैं:

      • setOldProductId: वह पुराना प्रॉडक्ट जिसे मौजूदा ProductDetails में मौजूद प्रॉडक्ट से बदलना है.
      • setReplacementMode: यह आइटम लेवल पर सामान बदलने का तरीका है. ये मोड, SubscriptionUpdateParams के जैसे ही होते हैं. हालांकि, वैल्यू मैपिंग को अपडेट कर दिया गया है. बदलाव करने का नया मोड KEEP_EXISTING पेश किया गया है. इसकी मदद से, किसी आइटम के लिए पेमेंट के मौजूदा शेड्यूल में बदलाव नहीं किया जा सकता.
    • SubscriptionUpdateParams setSubscriptionReplacementMode को बंद कर दिया जाएगा. इसके बजाय, आपको SubscriptionProductReplacementParams.setReplacementMode का इस्तेमाल करना चाहिए.

  • minSdkVersion को 23 पर अपडेट किया गया.

  • वन-टाइम प्रॉडक्ट के लिए, पहले से ऑर्डर करने की सुविधा देने वाले एपीआई चालू किए गए

    ProductDetails.oneTimePurchaseOfferDetails.getPreorderDetails() एपीआई, पहले से किए गए ऑर्डर की जानकारी पाने के लिए अब इस्तेमाल किया जा सकता है.

  • Google Play Billing Library अब Kotlin वर्शन 2.2.0 के साथ काम करती है.

Google Play Billing Library 8.0.0 रिलीज़ (30-06-2025)

Google Play Billing Library और Kotlin एक्सटेंशन का 8.0.0 वर्शन अब उपलब्ध है.

परिवर्तनों का सारांश

  • ऐप्लिकेशन में मौजूद आइटम को अब वन-टाइम प्रॉडक्ट कहा जाएगा.

  • वन-टाइम प्रॉडक्ट के लिए, खरीदारी के कई विकल्प और ऑफ़र.

    अब वन-टाइम प्रॉडक्ट के लिए, खरीदारी के कई विकल्प और ऑफ़र उपलब्ध कराए जा सकते हैं. इससे आपको अपने प्रॉडक्ट बेचने के तरीके में ज़्यादा सहूलियत मिलती है. साथ ही, उन्हें मैनेज करते समय आने वाली समस्याएं कम होती हैं.

  • queryProductDetailsAsync() तरीके को बेहतर बनाया गया है.

    PBL 8.0.0 से पहले, queryProductDetailsAsync() तरीके से ऐसे प्रॉडक्ट नहीं मिलते थे जिन्हें फ़ेच नहीं किया जा सकता. ऐसा इन वजहों से हो सकता है: प्रॉडक्ट नहीं मिला या उपयोगकर्ता के लिए कोई ऑफ़र उपलब्ध नहीं है. PBL 8.0.0 के साथ, फ़ेच नहीं किए गए प्रॉडक्ट को प्रॉडक्ट-लेवल के नए स्टेटस कोड के साथ दिखाया जाता है. इससे फ़ेच नहीं किए गए प्रॉडक्ट के बारे में जानकारी मिलती है. ध्यान दें कि ProductDetailsResponseListener.onProductDetailsResponse() के हस्ताक्षर में बदलाव हुआ है. इसलिए, आपको अपने ऐप्लिकेशन में बदलाव करने होंगे. ज़्यादा जानकारी के लिए, नतीजे को प्रोसेस करना लेख पढ़ें.

  • सेवा से अपने-आप फिर से कनेक्ट होने की सुविधा.

    नए BillingClient.Builder.enableAutoServiceReconnection() बिल्डर पैरामीटर की मदद से, डेवलपर सेवा से अपने-आप फिर से कनेक्ट होने की सुविधा के लिए ऑप्ट-इन कर सकते हैं. इससे कनेक्शन मैनेजमेंट आसान हो जाता है. ऐसा इसलिए, क्योंकि यह Play Billing Service से अपने-आप फिर से कनेक्ट हो जाता है. साथ ही, सेवा के डिसकनेक्ट होने पर, startConnection() को मैन्युअल तरीके से कॉल करने की ज़रूरत नहीं होती. ज़्यादा जानकारी के लिए, कनेक्शन अपने-आप फिर से चालू होने की सुविधा लेख पढ़ें.

  • launchBillingFlow() तरीके के लिए सब-रिस्पॉन्स कोड.

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

  • queryPurchaseHistory() तरीका हटा दिया गया है.

    queryPurchaseHistory() तरीके को पहले सेवा से बाहर के तौर पर मार्क किया गया था. अब इसे हटा दिया गया है. इसके बजाय, कौनसे एपीआई इस्तेमाल किए जा सकते हैं, इस बारे में जानने के लिए खरीदारी के इतिहास के बारे में क्वेरी करना लेख पढ़ें.

  • querySkuDetailsAsync() तरीका हटा दिया गया है.

    querySkuDetailsAsync() तरीके को पहले सेवा से बाहर के तौर पर मार्क किया गया था. अब इसे हटा दिया गया है. इसके बजाय, आपको queryProductDetailsAsync का इस्तेमाल करना चाहिए.

  • BillingClient.Builder.enablePendingPurchases() तरीका हटा दिया गया है.

    enablePendingPurchases() पैरामीटर के बिना इस्तेमाल किए जाने वाले enablePendingPurchases() तरीके को पहले सेवा से बाहर के तौर पर मार्क किया गया था. अब इसे हटा दिया गया है. इसके बजाय, आपको enablePendingPurchases(PendingPurchaseParams params) का इस्तेमाल करना चाहिए. ध्यान दें कि अब इस्तेमाल नहीं किया जा सकने वाला enablePendingPurchases(), enablePendingPurchases(PendingPurchasesParams.newBuilder().enableOneTimeProducts().build()) के बराबर काम करता है.

  • queryPurchasesAsync() के उस ओवरलोड किए गए तरीके को हटा दिया गया है जो skuType लेता है.

    queryPurchasesAsync(String skuType, PurchasesResponseListener listener) तरीके को पहले सेवा से बाहर के तौर पर मार्क किया गया था. अब इसे हटा दिया गया है. इसके अलावा, queryPurchasesAsync(QueryPurchasesParams queryPurchasesParams, PurchasesResponseListener listener) का इस्तेमाल करें.

Google Play Billing Library 7.1.1 रिलीज़ (03-10-2024)

Google Play Billing Library का वर्शन 7.1.1 और Kotlin एक्सटेंशन अब उपलब्ध हैं.

गड़बड़ियां ठीक की गईं

Google Play Billing Library 7.1.0 रिलीज़ (19-09-2024)

Google Play Billing Library का वर्शन 7.1.0 और Kotlin एक्सटेंशन अब उपलब्ध हैं.

परिवर्तनों का सारांश

  • कनेक्शन की स्थिति और मैनेजमेंट से जुड़ी थ्रेड की सुरक्षा को बेहतर बनाया गया है.
  • जांच के लिए, [BillingResult][billing-result] रिस्पॉन्स कोड में कुछ बदलाव किए गए हैं. ये बदलाव, Play Billing Library 7.1.1 में पूरी तरह से रिलीज़ किए गए हैं. इस सुविधा का इस्तेमाल करके, अपने इंटिग्रेशन को टेस्ट करने के लिए, आपको Play Billing Library 7.1.1 पर अपग्रेड करना होगा. एक बग मौजूद है. इसका असर सिर्फ़ उन ऐप्लिकेशन पर पड़ेगा जिनमें [बिलिंग ओवरराइड की टेस्टिंग चालू है][enable-billing-overrides-testing]. हालांकि, इससे ऐप्लिकेशन के सामान्य इस्तेमाल पर कोई असर नहीं पड़ेगा. ज़्यादा जानकारी के लिए, रिस्पॉन्स कोड BillingResultटेस्ट करना लेख पढ़ें. [billing-result]: /reference/com/android/billingclient/api/BillingResult [enable-billing-overrides-testing]: /google/play/billing/test-response-codes#enable-billing-overrides-testing

Google Play Billing Library 7.0.0 रिलीज़ (14-05-2024)

Google Play Billing Library का वर्शन 7.0.0 और Kotlin एक्सटेंशन अब उपलब्ध हैं.

परिवर्तनों का सारांश

Google Play Billing Library 6.2.1 रिलीज़ (16-04-2024)

Google Play Billing Library का वर्शन 6.2.1 और Kotlin एक्सटेंशन अब उपलब्ध हैं.

परिवर्तनों का सारांश

Google Play Billing Library 6.2.0 रिलीज़ (06-03-2024)

Google Play Billing Library का वर्शन 6.2.0 और Kotlin एक्सटेंशन अब उपलब्ध हैं.

परिवर्तनों का सारांश

  • बाहरी ऑफ़र के लिए एपीआई जोड़े गए
    • इस कुकी को BillingClient.Builder.enableExternalOffer() के लिए जोड़ा गया है, ताकि बाहरी ऑफ़र उपलब्ध कराए जा सकें.
    • बाहरी ऑफ़र दिखाने की सुविधा उपलब्ध है या नहीं, यह देखने के लिए BillingClient.isExternalOfferAvailableAsync() को जोड़ा गया है.
    • जोड़ा गया BillingClient.showExternalOfferInformationDialog() उपयोगकर्ताओं को ऐप्लिकेशन से बाहर ले जाने से पहले, उन्हें सूचना वाला डायलॉग दिखाने के लिए.
    • बाहरी ऑफ़र के ज़रिए किए गए लेन-देन की रिपोर्ट करने के लिए ज़रूरी पेलोड बनाने के लिए, BillingClient.createExternalOfferReportingDetailsAsync() जोड़ा गया.

Google Play Billing Library 6.1.0 रिलीज़ (14-11-2023)

Google Play Billing Library का वर्शन 6.1.0 और Kotlin एक्सटेंशन अब उपलब्ध हैं.

परिवर्तनों का सारांश

Google Play Billing Library 6.0.1 रिलीज़ (22-06-2023)

Google Play Billing Library का वर्शन 6.0.1 और Kotlin एक्सटेंशन अब उपलब्ध हैं.

परिवर्तनों का सारांश

Play Billing Library को Android 14 के साथ काम करने वाले वर्शन में अपडेट करें.

Google Play Billing Library 6.0 रिलीज़ (10-05-2023)

Google Play Billing Library का वर्शन 6.0.0 और Kotlin एक्सटेंशन अब उपलब्ध हैं.

परिवर्तनों का सारांश

  • ProrationMode को बदलने के लिए, नया ReplacementMode enum जोड़ा गया.

    ध्यान दें कि ProrationMode अब भी पुराने सिस्टम के साथ काम करने की सुविधा के लिए उपलब्ध है.

  • PENDING खरीदारी के लिए ऑर्डर आईडी हटा दिया गया है.

    पहले, ऑर्डर आईडी हमेशा बनाया जाता था. भले ही, खरीदारी लंबित हो. वर्शन 6.0.0 से, जिन खरीदारी को मंज़ूरी नहीं मिली है उनके लिए ऑर्डर आईडी नहीं बनाया जाएगा. साथ ही, इन खरीदारी के लिए ऑर्डर आईडी तब दिखेगा, जब खरीदारी को PURCHASED स्थिति में ले जाया जाएगा.

  • queryPurchases और launchPriceConfirmationFlow तरीके हटाए गए.

    queryPurchases और launchPriceConfirmationFlow तरीकों को पहले ही सेवा से बाहर के तौर पर मार्क कर दिया गया था. अब इन्हें Play Billing Library 6.0.0 से हटा दिया गया है. डेवलपर को queryPurchases के बजाय, queryPurchasesAsync का इस्तेमाल करना चाहिए. launchPriceConfirmationFlow के विकल्पों के बारे में जानने के लिए, कीमत में बदलाव लेख पढ़ें.

  • नेटवर्क से जुड़ी गड़बड़ी के लिए नया रिस्पॉन्स कोड जोड़ा गया.

    Play Billing Library के 6.0.0 वर्शन से, नेटवर्क की गड़बड़ी के लिए एक नया रिस्पॉन्स कोड, NETWORK_ERROR, जोड़ा गया है. यह कोड तब दिखता है, जब नेटवर्क कनेक्शन की समस्या की वजह से कोई गड़बड़ी होती है. नेटवर्क कनेक्शन से जुड़ी इन गड़बड़ियों को पहले SERVICE_UNAVAILABLE के तौर पर रिपोर्ट किया गया था.

  • SERVICE_UNAVAILABLE और SERVICE_TIMEOUT को अपडेट किया गया.

    PBL के 6.0.0 वर्शन से, प्रोसेसिंग में टाइम आउट होने की वजह से होने वाली गड़बड़ियों को मौजूदा SERVICE_TIMEOUT के बजाय SERVICE_UNAVAILABLE के तौर पर दिखाया जाएगा.

    PBL के पुराने वर्शन में, यह सुविधा पहले की तरह ही काम करती है.

  • SERVICE_TIMEOUT को हटाया गया.

    PBL 6.0.0 वर्शन से, SERVICE_TIMEOUT नहीं दिखेगा. PBL के पिछले वर्शन अब भी यह कोड दिखाएंगे.

  • ज़्यादा लॉगिंग की सुविधा जोड़ी गई.

    Play Billing Library 6 की रिलीज़ में, अतिरिक्त लॉगिंग शामिल है. इससे एपीआई के इस्तेमाल (जैसे, अनुरोध पूरा होना और अनुरोध पूरा न होना) और सेवा कनेक्शन से जुड़ी समस्याओं के बारे में जानकारी मिलती है. इस जानकारी का इस्तेमाल, Play Billing Library की परफ़ॉर्मेंस को बेहतर बनाने के लिए किया जाएगा. साथ ही, इससे गड़बड़ियों को ठीक करने में बेहतर तरीके से मदद मिलेगी.

Google Play Billing Library 5.2.1 रिलीज़ (22-06-2023)

Google Play Billing Library का वर्शन 5.2.1 और Kotlin एक्सटेंशन अब उपलब्ध हैं.

परिवर्तनों का सारांश

Play Billing Library को Android 14 के साथ काम करने वाले वर्शन में अपडेट करें.

Google Play Billing Library 5.2 रिलीज़ (06-04-2023)

Google Play Billing Library का वर्शन 5.2.0 और Kotlin एक्सटेंशन अब उपलब्ध हैं.

परिवर्तनों का सारांश

Google Play Billing Library 5.1 रिलीज़ (31-10-2022)

Google Play Billing Library का वर्शन 5.1.0 और Kotlin एक्सटेंशन अब उपलब्ध हैं.

इस वर्शन में ये बदलाव किए गए हैं.

परिवर्तनों का सारांश

Google Play Billing Library 5.0 रिलीज़ (11-05-2022)

Google Play Billing Library का वर्शन 5.0.0 और Kotlin एक्सटेंशन अब उपलब्ध हैं.

इस वर्शन में ये बदलाव किए गए हैं.

परिवर्तनों का सारांश

  • सदस्यताओं के लिए एक नया मॉडल लॉन्च किया गया है. इसमें नई इकाइयां भी शामिल हैं. इनकी मदद से, सदस्यता वाले किसी एक प्रॉडक्ट के लिए कई ऑफ़र बनाए जा सकते हैं. ज़्यादा जानकारी के लिए, डेटा को दूसरी जगह भेजने से जुड़ी गाइड देखें.
  • BillingClient.querySkuDetailsAsync() को बदलने के लिए, BillingClient.queryProductDetailsAsync() जोड़ा गया.
  • ईयू में, लोगों की दिलचस्पी के हिसाब से तय की गई कीमत के बारे में जानकारी देने की ज़रूरी शर्तों के लिए, setIsOfferPersonalized() तरीका जोड़ा गया है. इस तरीके का इस्तेमाल करने के बारे में ज़्यादा जानने के लिए, दिलचस्पी के हिसाब से तय की गई कीमत दिखाएं लेख पढ़ें.
  • queryPurchases() को हटा दिया गया है. यह पहले उपलब्ध नहीं था और इसे Google Play Billing Library 4.0.0 में पेश किए गए queryPurchasesAsync से बदल दिया गया था.
  • launchPriceChangeFlow के इस्तेमाल पर रोक लगा दी गई है. इसे आने वाले समय में हटा दिया जाएगा. अन्य विकल्पों के बारे में ज़्यादा जानने के लिए, कीमत में बदलाव की पुष्टि करने वाला फ़्लो लॉन्च करें लेख पढ़ें.
  • हटाया गया setVrPurchaseFlow(), जिसका इस्तेमाल पहले खरीदारी का फ़्लो शुरू करते समय किया जाता था. पिछले वर्शन में, इस तरीके से उपयोगकर्ता को Android डिवाइस पर खरीदारी पूरी करने के लिए रीडायरेक्ट किया जाता था. इस तरीके को हटाने के बाद, उपयोगकर्ता खरीदारी की सामान्य प्रोसेस के ज़रिए खरीदारी पूरी करेंगे.

Google Play Billing Library 4.1 रिलीज़ (23-02-2022)

Google Play Billing Library का वर्शन 4.1.0 और Kotlin एक्सटेंशन अब उपलब्ध हैं.

इस वर्शन में ये बदलाव किए गए हैं.

परिवर्तनों का सारांश

  • जोड़ा गया BillingClient.showInAppMessages() ताकि सदस्यता के पेमेंट अस्वीकार होने की समस्या को ठीक किया जा सके. सदस्यताओं के पेमेंट अस्वीकार होने की समस्या को हल करने के लिए, ऐप्लिकेशन में मैसेज भेजने की सुविधा का इस्तेमाल करने के तरीके के बारे में ज़्यादा जानने के लिए, पेमेंट अस्वीकार होने की समस्या हल करना लेख पढ़ें.

Google Play Billing Library 4.0 रिलीज़ (18-05-2021)

Google Play Billing Library का वर्शन 4.0.0 और Kotlin एक्सटेंशन अब उपलब्ध हैं.

परिवर्तनों का सारांश

  • BillingClient.queryPurchases() की जगह BillingClient.queryPurchasesAsync() जोड़ा गया है. BillingClient.queryPurchases() को आने वाले समय में हटा दिया जाएगा.

  • सदस्यता बदलने का नया मोड जोड़ा गया IMMEDIATE_AND_CHARGE_FULL_PRICE.

  • Play Billing Library की कनेक्शन की स्थिति को वापस पाने के लिए, BillingClient.getConnectionState() तरीका जोड़ा गया है.

  • अपडेट किया गया Javadoc और लागू करने का तरीका, ताकि यह पता चल सके कि किसी तरीके को किस थ्रेड पर कॉल किया जा सकता है और नतीजे किस थ्रेड पर पोस्ट किए जाते हैं.

  • सदस्यता अपडेट करने का नया तरीका जोड़ा गया BillingFlowParams.Builder.setSubscriptionUpdateParams(). यह BillingFlowParams#getReplaceSkusProrationMode, BillingFlowParams#getOldSkuPurchaseToken, BillingFlowParams#getOldSku, BillingFlowParams.Builder#setReplaceSkusProrationMode, BillingFlowParams.Builder#setOldSku की जगह लेता है. इन सभी को हटा दिया गया है.

  • Purchase.getQuantity() और PurchaseHistoryRecord.getQuantity() को जोड़ा गया.

  • Purchase#getSkus() और PurchaseHistoryRecord#getSkus() को जोड़ा गया. ये Purchase#getSku और PurchaseHistoryRecord#getSku की जगह इस्तेमाल किए जाते हैं. इन दोनों को हटा दिया गया है.

  • BillingFlowParams#getSku, BillingFlowParams#getSkuDetails, और BillingFlowParams#getSkuType को हटाया गया.

Google Play Billing Library 3.0.3 रिलीज़ (12-03-2021)

Google Play Billing Library, Kotlin एक्सटेंशन, और Unity प्लगिन का वर्शन 3.0.3 अब उपलब्ध है.

Java और Kotlin से जुड़ी गड़बड़ियां ठीक की गईं

  • endConnection() को कॉल किए जाने पर, मेमोरी लीक की समस्या ठीक की गई.
  • Google Play Billing Library का इस्तेमाल करने वाले ऐसे ऐप्लिकेशन से जुड़ी समस्या ठीक की गई है जो सिंगल टास्क लॉन्च मोड का इस्तेमाल करते हैं. जब Android लॉन्चर से किसी ऐप्लिकेशन को फिर से शुरू किया जाता है और निलंबित किए जाने से पहले बिलिंग डायलॉग दिख रहा था, तब onPurchasesUpdated() कॉलबैक ट्रिगर होगा.

Unity की गड़बड़ियां ठीक की गईं

  • मेमोरी लीक की समस्या को ठीक करने के लिए, Java को 3.0.3 वर्शन पर अपडेट करें. साथ ही, उस समस्या को ठीक करें जिसकी वजह से, Android लॉन्चर से ऐप्लिकेशन को फिर से शुरू करने पर खरीदारी नहीं हो पाती थी. इसके अलावा, बिलिंग डायलॉग के निलंबित होने से पहले वह दिख रहा था.

Google Play Billing Library 3.0.2 रिलीज़ (24-11-2020)

Google Play Billing Library और Kotlin एक्सटेंशन का वर्शन 3.0.2 अब उपलब्ध है.

गड़बड़ियां ठीक की गईं

  • Kotlin एक्सटेंशन में मौजूद एक गड़बड़ी को ठीक किया गया है. इस गड़बड़ी की वजह से, कोराउटीन "Already resumed" गड़बड़ी के साथ फ़ेल हो जाता था.
  • Kotlin एक्सटेंशन का इस्तेमाल kotlinx.coroutines लाइब्रेरी के 1.4 या इसके बाद के वर्शन के साथ करने पर, अनसुलझे रेफ़रंस की समस्या ठीक की गई.

Google Play Billing Library 3.0.1 रिलीज़ (30-09-2020)

Google Play Billing Library और Kotlin एक्सटेंशन का वर्शन 3.0.1 अब उपलब्ध है.

गड़बड़ियां ठीक की गईं

  • एक बग ठीक किया गया है. इस बग में, बिलिंग फ़्लो के दौरान ऐप्लिकेशन बंद होने और फिर से चालू होने पर, खरीदारी के नतीजे के साथ PurchasesUpdatedListener को कॉल नहीं किया जा सकता था.

Google Play Billing Library 3.0 रिलीज़ (08-06-2020)

Google Play Billing Library, Kotlin एक्सटेंशन, और Unity प्लगिन का वर्शन 3.0.0 अब उपलब्ध है.

परिवर्तनों का सारांश

  • इनाम वाले एसकेयू के लिए सहायता पाने की सुविधा हटा दी गई है.
  • ChildDirected और UnderAgeOfConsent पैरामीटर हटा दिए गए हैं.
  • डेवलपर पेलोड के पुराने तरीकों को हटाया गया.
  • डेप्रिकेट किए गए तरीके BillingFlowParams.setAccountId() और BillingFlowParams.setDeveloperId() हटा दिए गए हैं.
  • डेप्रिकेट किए गए तरीके BillingFlowParams.setOldSkus(String oldSku) और BillingFlowParams.addOldSku(String oldSku) हटा दिए गए हैं.
  • शून्य होने की अनुमति से जुड़े एनोटेशन जोड़े गए.

गड़बड़ियां ठीक की गईं

  • SkuDetails.getIntroductoryPriceCycles() अब String के बजाय int दिखाता है.
  • उस गड़बड़ी को ठीक किया गया है जिसमें बिलिंग फ़्लो को अतिरिक्त पैरामीटर के तौर पर माना जाता था. ऐसा तब होता था, जब कोई अतिरिक्त पैरामीटर सेट नहीं किया गया होता था.

Google Play Billing Library 2.2.1 रिलीज़ (20-05-2020)

Google Play Billing Library का वर्शन 2.2.1 अब उपलब्ध है.

गड़बड़ियां ठीक की गईं

  • Java Play Billing Library के डिफ़ॉल्ट वर्शन को अपडेट किया गया है. Kotlin एक्सटेंशन इसी पर निर्भर करता है.

Google Play Billing Library 2.2.0 रिलीज़ और Unity के साथ काम करने की सुविधा (23-03-2020)

Google Play Billing के वर्शन 2.2.0 में एक ऐसा फ़ंक्शन उपलब्ध है जिससे डेवलपर यह पक्का कर पाते हैं कि खरीदारी का क्रेडिट सही उपयोगकर्ता को मिले. इन बदलावों के बाद, डेवलपर पेलोड के आधार पर कस्टम समाधान बनाने की ज़रूरत नहीं होगी. इस अपडेट के तहत, डेवलपर पेलोड की सुविधा अब सेवा में नहीं है. इसे आने वाले समय में हटा दिया जाएगा. सुझाए गए विकल्पों के साथ-साथ ज़्यादा जानकारी के लिए, डेवलपर पेलोड देखें.

Google Play Billing Billing Library 2 for Unity

हमने Google Play Billing Library 2 के मौजूदा Java और Kotlin वर्शन के अलावा, Unity के साथ इस्तेमाल करने के लिए लाइब्रेरी का एक वर्शन भी रिलीज़ किया है. Unity in-app purchase API का इस्तेमाल करने वाले गेम डेवलपर, अब Google Play Billing Library 2 की सभी सुविधाओं का फ़ायदा पाने के लिए अपग्रेड कर सकते हैं. साथ ही, Google Play Billing Library के आने वाले वर्शन में अपग्रेड करना आसान बना सकते हैं.

ज़्यादा जानने के लिए, Unity के साथ Google Play Billing का इस्तेमाल करना लेख पढ़ें.

परिवर्तनों का सारांश

  • Java Google Play Billing Library
    • AcknowledgePurchaseParams, setDeveloperPayload(), और getDeveloperPayload() तरीकों में.
    • ConsumeParams, setDeveloperPayload(), और getDeveloperPayload() तरीकों में.
    • BillingFlowParams को setAccountId() के तौर पर रीनेम किया गया है. साथ ही, इस फ़ील्ड में 64 वर्णों से ज़्यादा इस्तेमाल न करने की पाबंदी और व्यक्तिगत पहचान से जुड़ी जानकारी (पीआईआई) इस्तेमाल न करने की पाबंदी के बारे में बताया गया है.setObfuscatedAccountId() setAccountId() को सेवा से बाहर के तौर पर मार्क किया गया है. इसे आने वाले समय में लाइब्रेरी के वर्शन से हटा दिया जाएगा.
    • BillingFlowParams में, setObfuscatedProfileId() जोड़ा गया है. यह setObfuscatedAccountId() की तरह ही काम करता है. ज़्यादा जानकारी के लिए, डेवलपर पेलोड के अपडेट और विकल्प देखें.
    • Purchase में, BillingFlowParams में सेट किए गए, पहचान छिपाकर रखे गए खाते के आइडेंटिफ़ायर को वापस पाने के लिए, getAccountIdentifiers() तरीका जोड़ा गया है.
    • BillingClient में, loadRewardedSku() तरीके को, इनाम वाले एसकेयू को बंद करने के तहत बंद कर दिया गया है. इस सुविधा के बंद होने के बारे में ज़्यादा जानकारी के लिए, Play Console के सहायता केंद्र पर जाएं.

Google Play Billing Library 2.1.0 और Kotlin एक्सटेंशन 2.1.0 रिलीज़ किया गया (10-12-2019)

Google Play Billing Library का वर्शन 2.1.0 और नया Kotlin एक्सटेंशन अब उपलब्ध है. Play Billing Library का Kotlin एक्सटेंशन, Kotlin के इस्तेमाल के लिए इडियोमैटिक एपीआई के विकल्प उपलब्ध कराता है. इसमें बेहतर नल-सेफ़्टी और कोरुटीन शामिल हैं. कोड के उदाहरणों के लिए, Google Play Billing Library का इस्तेमाल करना लेख पढ़ें.

इस वर्शन में ये बदलाव किए गए हैं.

परिवर्तनों का सारांश

  • BillingFlowParams में, setOldSku(String oldSku) को बंद कर दिया गया है और उसकी जगह setOldSku(String oldSku, String purchaseToken) को चालू कर दिया गया है. ऐसा इसलिए किया गया है, ताकि यह पता चल सके कि डिवाइस पर मौजूद एक से ज़्यादा खातों के पास एक ही एसकेयू है.

Google Play Billing Library 2.0.3 रिलीज़ (05-08-2019)

Google Play Billing Library का वर्शन 2.0.3 अब उपलब्ध है.

गड़बड़ियां ठीक की गईं

  • एक गड़बड़ी को ठीक किया गया है. इस गड़बड़ी की वजह से, querySkuDetailsAsync() कभी-कभी DEVELOPER_ERROR कोड के साथ काम नहीं करता था. हालांकि, इसे सही नतीजे देने चाहिए थे.

Google Play Billing Library 2.0.2 रिलीज़ (08-07-2019)

Google Play Billing Library का वर्शन 2.0.2 अब उपलब्ध है. इस रिलीज़ में, रेफ़रंस दस्तावेज़ से जुड़े अपडेट शामिल हैं. इससे लाइब्रेरी के काम करने के तरीके में कोई बदलाव नहीं होगा.

Google Play Billing Library 2.0.1 रिलीज़ (06-06-2019)

Google Play Billing Library का वर्शन 2.0.1 अब उपलब्ध है. इस वर्शन में ये बदलाव किए गए हैं.

गड़बड़ियां ठीक की गईं

  • डीबग मैसेज को कुछ मामलों में null के तौर पर दिखाया जा रहा था. इस गड़बड़ी को ठीक किया गया है.
  • मेमोरी लीक की समस्या को ठीक किया गया है.

Google Play Billing Library 2.0 रिलीज़ (07-05-2019)

Google Play Billing Library का वर्शन 2.0 अब उपलब्ध है. इस वर्शन में ये बदलाव किए गए हैं.

खरीदारी की पुष्टि तीन दिनों के अंदर करनी होगी

Google Play पर, ऐप्लिकेशन में (इन-ऐप्लिकेशन) या ऐप्लिकेशन के बाहर (आउट-ऑफ़-ऐप्लिकेशन) से प्रॉडक्ट खरीदे जा सकते हैं. Google Play यह पक्का करता है कि उपयोगकर्ता को खरीदारी का एक जैसा अनुभव मिले. भले ही, वह आपके प्रॉडक्ट को कहीं से भी खरीदे. इसके लिए, आपको Google Play Billing Library से मिली सभी खरीदारी की पुष्टि करनी होगी. यह पुष्टि, उपयोगकर्ता को एनटाइटलमेंट देने के तुरंत बाद करनी होगी. अगर आपने तीन दिनों के अंदर खरीदारी की पुष्टि नहीं की, तो उपयोगकर्ता को अपने-आप रिफ़ंड मिल जाएगा. साथ ही, Google Play खरीदारी रद्द कर देगा. लंबित लेन-देन (वर्शन 2.0 में नया) के लिए, तीन दिन की विंडो तब शुरू होती है, जब खरीदारी PURCHASED स्थिति में पहुंच जाती है. यह तब लागू नहीं होती, जब खरीदारी PENDING स्थिति में हो.

सदस्यताओं के लिए, आपको ऐसी हर खरीदारी की पुष्टि करनी होगी जिसके लिए नया परचेज़ टोकन मिला है. इसका मतलब है कि शुरुआती खरीदारी, प्लान में बदलाव, और फिर से साइन अप करने की पुष्टि करना ज़रूरी है. हालांकि, आपको बाद में होने वाले रिन्यूअल की पुष्टि करने की ज़रूरत नहीं है. यह पता लगाने के लिए कि किसी खरीदारी के लिए सूचना भेजना ज़रूरी है या नहीं, खरीदारी में सूचना फ़ील्ड की जांच करें.

Purchase ऑब्जेक्ट में अब isAcknowledged() तरीका शामिल है. इससे यह पता चलता है कि खरीदारी स्वीकार की गई है या नहीं. इसके अलावा, Google Play Developer API में Purchases.products और Purchases.subscriptions, दोनों के लिए बूलियन वैल्यू शामिल होती हैं. खरीदारी की पुष्टि करने से पहले, इन तरीकों का इस्तेमाल करके यह पता लगाएं कि खरीदारी की पुष्टि पहले ही की जा चुकी है या नहीं.

खरीदारी की पुष्टि करने के लिए, इनमें से किसी एक तरीके का इस्तेमाल किया जा सकता है:

  • इस्तेमाल किए जा सकने वाले प्रॉडक्ट के लिए, क्लाइंट एपीआई में मौजूद consumeAsync() का इस्तेमाल करें.
  • ऐसे प्रॉडक्ट के लिए acknowledgePurchase() का इस्तेमाल करें जिनका इस्तेमाल नहीं किया जाता. यह क्लाइंट एपीआई में मौजूद होता है.
  • सर्वर एपीआई में, acknowledge() का नया तरीका भी उपलब्ध है.

BillingFlowParams.setSku() को हटा दिया गया है

इस रिलीज़ में, पहले से बंद किए गए BillingFlowParams#setSku() तरीके को हटा दिया गया है. खरीदारी के फ़्लो में प्रॉडक्ट रेंडर करने से पहले, अब आपको BillingClient.querySkuDetailsAsync() को कॉल करना होगा. साथ ही, SkuDetails ऑब्जेक्ट को BillingFlowParams.Builder.setSkuDetails() में पास करना होगा.

कोड के उदाहरणों के लिए, Google Play Billing Library का इस्तेमाल करना लेख पढ़ें.

डेवलपर पेलोड की सुविधा काम करती है

Google Play Billing Library के वर्शन 2.0 में, डेवलपर पेलोड के लिए सहायता जोड़ी गई है. यह ऐसी स्ट्रिंग होती हैं जिन्हें खरीदारी से जोड़ा जा सकता है. किसी खरीदारी में डेवलपर पेलोड पैरामीटर अटैच किया जा सकता है. हालांकि, ऐसा सिर्फ़ तब किया जा सकता है, जब खरीदारी की पुष्टि हो गई हो या उसे इस्तेमाल कर लिया गया हो. यह AIDL में डेवलपर पेलोड से अलग है. इसमें खरीदारी का फ़्लो लॉन्च करते समय पेलोड तय किया जा सकता है. अब आपके ऐप्लिकेशन के बाहर से खरीदारी शुरू की जा सकती है. इसलिए, इस बदलाव से यह पक्का होता है कि आपके पास हमेशा खरीदारी में पेलोड जोड़ने का विकल्प हो.

नई लाइब्रेरी में पेलोड ऐक्सेस करने के लिए, Purchase ऑब्जेक्ट में अब getDeveloperPayload() तरीका शामिल है.

एक जैसे ऑफ़र

छूट वाली एसकेयू ऑफ़र करने पर, Google Play अब एसकेयू की मूल कीमत दिखाता है. इससे लोगों को यह दिखाया जा सकता है कि उन्हें छूट मिल रही है.

SkuDetails में, ओरिजनल एसकेयू की कीमत पाने के लिए दो नए तरीके शामिल हैं:

  • getOriginalPriceAmountMicros()
    • इस फ़ंक्शन से, छूट से पहले एसकेयू की बिना फ़ॉर्मैट वाली मूल कीमत मिलती है.
  • getOriginalPrice()
    • इस फ़ंक्शन से, मुद्रा के अतिरिक्त फ़ॉर्मैटिंग के साथ मूल कीमत मिलती है.

बाकी लेन-देन

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

खरीदारी के अनुरोध को पूरा होने में समय लगने की सुविधा चालू करने के लिए, अपने ऐप्लिकेशन को शुरू करते समय enablePendingPurchases() को कॉल करें.

Purchase.getPurchaseState() का इस्तेमाल करके यह तय करें कि खरीदारी की स्थिति PURCHASED है या PENDING. ध्यान दें कि आपको एनटाइटलमेंट सिर्फ़ तब देना चाहिए, जब स्थिति PURCHASED हो. आपको Purchase के स्टेटस अपडेट देखने चाहिए. इसके लिए, यह तरीका अपनाएं:

  1. ऐप्लिकेशन शुरू करते समय, BillingClient.queryPurchases() को कॉल करें, ताकि उपयोगकर्ता से जुड़े उन प्रॉडक्ट की सूची वापस पाई जा सके जिनका इस्तेमाल नहीं किया गया है.
  2. हर लौटाए गए Purchase ऑब्जेक्ट पर, Purchase.getPurchaseState() को कॉल करें.
  3. Purchase ऑब्जेक्ट में हुए बदलावों का जवाब देने के लिए, onPurchasesUpdated() तरीके का इस्तेमाल करें.

इसके अलावा, Google Play Developer API में Purchases.products के लिए PENDING स्थिति शामिल है. सदस्यताओं के लिए, ऐसे लेन-देन की सुविधा उपलब्ध नहीं है जिनका पेमेंट नहीं किया गया है.

इस रिलीज़ में, डेवलपर से जुड़ी रीयल-टाइम सूचनाओं का एक नया टाइप भी पेश किया गया है. यह टाइप OneTimeProductNotification है. इस तरह की सूचना में एक मैसेज होता है. इसकी वैल्यू ONE_TIME_PRODUCT_PURCHASED या ONE_TIME_PRODUCT_CANCELED होती है. इस तरह की सूचना सिर्फ़ उन खरीदारी के लिए भेजी जाती है जिनके लिए पेमेंट के तरीके में देरी होती है. जैसे, नकद.

लंबित खरीदारी की पुष्टि करते समय, सिर्फ़ तब पुष्टि करें, जब खरीदारी की स्थिति PURCHASED हो, न कि PENDING.

एपीआई में हुए बदलाव

Google Play Billing Library के वर्शन 2.0 में, एपीआई से जुड़े कई बदलाव किए गए हैं. इससे नई सुविधाओं को सपोर्ट करने और मौजूदा सुविधाओं के बारे में ज़्यादा जानकारी देने में मदद मिलती है.

consumeAsync

consumeAsync() अब purchaseToken के बजाय ConsumeParams ऑब्जेक्ट लेता है. ConsumeParams में purchaseToken के साथ-साथ, डेवलपर का पेलोड भी शामिल होता है.

इस रिलीज़ में, consumeAsync() के पिछले वर्शन को हटा दिया गया है.

queryPurchaseHistoryAsync

उपयोगकर्ताओं को भ्रम से बचाने के लिए, queryPurchaseHistoryAsync() अब Purchase ऑब्जेक्ट के बजाय PurchaseHistoryRecord ऑब्जेक्ट दिखाता है. PurchaseHistoryRecord ऑब्जेक्ट, Purchase ऑब्जेक्ट जैसा ही होता है. हालांकि, इसमें सिर्फ़ queryPurchaseHistoryAsync() से मिली वैल्यू दिखती हैं. साथ ही, इसमें autoRenewing, orderId, और packageName फ़ील्ड शामिल नहीं होते. ध्यान दें कि दिखाए गए डेटा में कोई बदलाव नहीं हुआ है. queryPurchaseHistoryAsync() पहले की तरह ही डेटा दिखाता है.

BillingResult की रिटर्न वैल्यू

ऐसे एपीआई जो पहले BillingResponse पूर्णांक वैल्यू दिखाते थे वे अब BillingResult ऑब्जेक्ट दिखाते हैं. BillingResult में BillingResponse पूर्णांक के साथ-साथ एक डीबग स्ट्रिंग भी शामिल होती है. इसका इस्तेमाल गड़बड़ियों का पता लगाने के लिए किया जा सकता है. डीबग स्ट्रिंग में en-US लोकल का इस्तेमाल किया जाता है. इसे असली उपयोगकर्ताओं को नहीं दिखाया जाता.

गड़बड़ियां ठीक की गईं

Google Play Billing Library 1.2.2 रिलीज़ (07-03-2019)

Google Play Billing Library का वर्शन 1.2.2 अब उपलब्ध है. इस वर्शन में ये बदलाव किए गए हैं.

गड़बड़ियां ठीक की गईं

  • v1.2.1 में थ्रेडिंग से जुड़ी समस्या को ठीक किया गया है. बैकग्राउंड कॉल अब मुख्य थ्रेड को ब्लॉक नहीं करते.

अन्य बदलाव

  • हालांकि, अब भी मुख्य थ्रेड का इस्तेमाल करने का सुझाव दिया जाता है. हालांकि, अब Google Play Billing Library को बैकग्राउंड थ्रेड से इंस्टैंशिएट किया जा सकता है.
  • इंस्टैंटिएशन को पूरी तरह से बैकग्राउंड थ्रेड पर माइग्रेट कर दिया गया है, ताकि ANR होने की संभावना कम हो सके.

Play Billing Library 1.2.1 रिलीज़ (04-03-2019)

Google Play Billing Library का वर्शन 1.2.1 अब उपलब्ध है. इस वर्शन में ये बदलाव किए गए हैं.

मुख्य परिवर्तन

अन्य बदलाव

  • PurchasesResult और SkuDetailsResult के लिए सार्वजनिक कंस्ट्रक्टर जोड़े गए हैं, ताकि टेस्टिंग को आसान बनाया जा सके.
  • SkuDetails ऑब्जेक्ट, getOriginalJson() नाम के नए तरीके का इस्तेमाल कर सकते हैं.
  • अब सभी AIDL सेवा कॉल, बैकग्राउंड थ्रेड मैनेज करती हैं.

गड़बड़ियां ठीक की गईं

  • अब शून्य कॉलबैक लिसनर को सार्वजनिक एपीआई में पास नहीं किया जाता है.

Google Play Billing Library 1.2 रिलीज़ (18-10-2018)

Google Play Billing Library का वर्शन 1.2 अब उपलब्ध है. इस वर्शन में ये बदलाव किए गए हैं.

परिवर्तनों का सारांश

  • Google Play Billing Library को अब Android सॉफ़्टवेयर डेवलपमेंट किट के लाइसेंस एग्रीमेंट के तहत लाइसेंस दिया गया है.
  • launchPriceChangeConfirmationFlow एपीआई जोड़ा गया है. इससे उपयोगकर्ताओं को सदस्यता की कीमत में होने वाले बदलाव की समीक्षा करने के लिए कहा जाता है.
  • किसी उपयोगकर्ता की सदस्यता को अपग्रेड या डाउनग्रेड करते समय, DEFERRED नाम के नए प्रोरेशन मोड के लिए सहायता जोड़ी गई है.
  • BillingFlowParams क्लास में, setSku() को setSkuDetails() से बदल दिया गया है.
  • मामूली गड़बड़ियां ठीक की गई हैं और कोड को ऑप्टिमाइज़ किया गया है.

कीमत में बदलाव की पुष्टि करने वाला ईमेल

अब Google Play Console में जाकर, किसी सदस्यता की कीमत बदली जा सकती है. साथ ही, लोगों को आपका ऐप्लिकेशन खोलने पर, नई कीमत की समीक्षा करने और उसे स्वीकार करने के लिए कहा जा सकता है.

इस एपीआई का इस्तेमाल करने के लिए, सदस्यता वाले प्रॉडक्ट के skuDetails का इस्तेमाल करके PriceChangeFlowParams ऑब्जेक्ट बनाएं. इसके बाद, launchPriceChangeConfirmationFlow() को कॉल करें. कीमत में बदलाव की पुष्टि करने वाला फ़्लो पूरा होने पर, नतीजे को मैनेज करने के लिए PriceChangeConfirmationListener लागू करें. इसे यहां दिए गए कोड स्निपेट में दिखाया गया है:

Kotlin

val priceChangeFlowParams = PriceChangeFlowParams.newBuilder()
    .setSkuDetails(skuDetailsOfThePriceChangedSubscription)
    .build()

billingClient.launchPriceChangeConfirmationFlow(activity,
        priceChangeFlowParams,
        object : PriceChangeConfirmationListener() {
            override fun onPriceChangeConfirmationResult(responseCode: Int) {
                // Handle the result.
            }
        })

Java

PriceChangeFlowParams priceChangeFlowParams =
        PriceChangeFlowParams.newBuilder()
    .setSkuDetails(skuDetailsOfThePriceChangedSubscription)
    .build();

billingClient.launchPriceChangeConfirmationFlow(activity,
        priceChangeFlowParams,
        new PriceChangeConfirmationListener() {
            @Override
            public void onPriceChangeConfirmationResult(int responseCode) {
                // Handle the result.
            }
        });

कीमत में बदलाव की पुष्टि करने वाले फ़्लो में, एक डायलॉग बॉक्स दिखता है. इसमें नई कीमत की जानकारी होती है. इसमें लोगों से नई कीमत स्वीकार करने के लिए कहा जाता है. इस फ़्लो से, BillingClient.BillingResponse टाइप का रिस्पॉन्स कोड मिलता है.

किराये के हिसाब से शुल्क लेने का नया मोड

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

SKU की जानकारी सेट करने का नया तरीका

BillingFlowParams क्लास में, setSku() तरीके को बंद कर दिया गया है. इस बदलाव का मकसद, Google Play Billing के फ़्लो को ऑप्टिमाइज़ करना है.

हमारा सुझाव है कि ऐप्लिकेशन में मौजूद बिलिंग सिस्टम के क्लाइंट में BillingFlowParams का नया इंस्टेंस बनाते समय, setSkuDetails() का इस्तेमाल करके सीधे JSON ऑब्जेक्ट के साथ काम करें. ऐसा नीचे दिए गए कोड स्निपेट में दिखाया गया है:

BillingFlowParams Builder क्लास में, setSku() तरीके को बंद कर दिया गया है. इसके बजाय, setSkuDetails() तरीके का इस्तेमाल करें. यह तरीका, यहां दिए गए कोड स्निपेट में दिखाया गया है. setSkuDetails() ऑब्जेक्ट में पास किया गया ऑब्जेक्ट, querySkuDetailsAsync() तरीके से मिलता है.

Kotlin

private lateinit var mBillingClient: BillingClient
private val mSkuDetailsMap = HashMap<String, SkuDetails>()

private fun querySkuDetails() {
    val skuDetailsParamsBuilder = SkuDetailsParams.newBuilder()
    mBillingClient.querySkuDetailsAsync(skuDetailsParamsBuilder.build()
    ) { responseCode, skuDetailsList ->
        if (responseCode == 0) {
            for (skuDetails in skuDetailsList) {
                mSkuDetailsMap[skuDetails.sku] = skuDetails
            }
        }
    }
}

private fun startPurchase(skuId: String) {
    val billingFlowParams = BillingFlowParams.newBuilder()
    .setSkuDetails(mSkuDetailsMap[skuId])
    .build()
}

Java

private BillingClient mBillingClient;
private Map<String, SkuDetails> mSkuDetailsMap = new HashMap<>();

private void querySkuDetails() {
    SkuDetailsParams.Builder skuDetailsParamsBuilder
            = SkuDetailsParams.newBuilder();
    mBillingClient.querySkuDetailsAsync(skuDetailsParamsBuilder.build(),
            new SkuDetailsResponseListener() {
                @Override
                public void onSkuDetailsResponse(int responseCode,
                        List<SkuDetails> skuDetailsList) {
                    if (responseCode == 0) {
                        for (SkuDetails skuDetails : skuDetailsList) {
                            mSkuDetailsMap.put(skuDetails.getSku(), skuDetails);
                        }
                    }
                }
            });
}

private void startPurchase(String skuId) {
    BillingFlowParams billingFlowParams = BillingFlowParams.newBuilder()
            .setSkuDetails(mSkuDetailsMap.get(skuId))
            .build();
}

Play Billing Library 1.1 रिलीज़ (07-05-2018)

Google Play Billing Library का वर्शन 1.1 अब उपलब्ध है. इस वर्शन में ये बदलाव किए गए हैं.

परिवर्तनों का सारांश

  • मौजूदा सदस्यता को अपग्रेड/डाउनग्रेड करते समय, BillingFlowParams में प्रो-रेटिंग मोड तय करने की सुविधा जोड़ी गई है.
  • BillingFlowParams में replaceSkusProration बूलियन फ़्लैग अब काम नहीं करता. इसके बजाय, replaceSkusProrationMode का इस्तेमाल करें.
  • launchBillingFlow() अब जवाब नहीं मिलने पर, कॉलबैक को ट्रिगर करता है.

व्यवहार में बदलाव

Google Play Billing Library के वर्शन 1.1 में, ये बदलाव किए गए हैं.

डेवलपर, BillingFlowParams क्लास में replaceSkusProrationMode सेट कर सकते हैं

ProrationMode में, किसी उपयोगकर्ता की सदस्यता को अपग्रेड या डाउनग्रेड करते समय, प्रोरैटिंग के टाइप के बारे में ज़्यादा जानकारी दी गई है.

Kotlin

BillingFlowParams.newBuilder()
    .setSku(skuId)
    .setType(billingType)
    .setOldSku(oldSku)
    .setReplaceSkusProrationMode(replaceSkusProrationMode)
    .build()

Java

BillingFlowParams.newBuilder()
    .setSku(skuId)
    .setType(billingType)
    .setOldSku(oldSku)
    .setReplaceSkusProrationMode(replaceSkusProrationMode)
    .build();

Google Play पर, ये प्रोरेशन मोड काम करते हैं:

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

ध्यान दें: यह विकल्प सिर्फ़ सदस्यता अपग्रेड करने के लिए उपलब्ध है.

IMMEDIATE_WITHOUT_PRORATION बदलाव तुरंत लागू हो जाता है. साथ ही, अगली बार सदस्यता रिन्यू करने पर, आपसे नई कीमत ली जाएगी. बिलिंग साइकल में कोई बदलाव नहीं होता.

BillingFlowParams क्लास में अब replaceSkusProration का इस्तेमाल नहीं किया जा सकता

डेवलपर के पास, सदस्यता अपग्रेड करने के अनुरोध के लिए, समय के हिसाब से तय की गई कीमत लेने के लिए, बूलियन फ़्लैग सेट करने का विकल्प होता था. हम ProrationMode का इस्तेमाल कर रहे हैं. इसमें, शुल्क में छूट से जुड़ी ज़्यादा जानकारी दी गई है. इसलिए, अब इस बूलियन फ़्लैग का इस्तेमाल नहीं किया जा सकता.

launchBillingFlow() अब उन जवाबों के लिए कॉलबैक ट्रिगर करता है जो नहीं दिए जा सके

Billing Library हमेशा PurhcasesUpdatedListener कॉलबैक को ट्रिगर करेगी और BillingResponse को एसिंक्रोनस तरीके से दिखाएगी. BillingResponse की सिंक्रोनस रिटर्न वैल्यू भी सेव की जाती है.

गड़बड़ियां ठीक की गईं

  • सेवा के डिसकनेक्ट होने पर, एसिंक तरीकों में जल्दी से सही तरीके से बंद हो जाता है.
  • Builder पैराम ऑब्जेक्ट अब बिल्ट-इन ऑब्जेक्ट में बदलाव नहीं करते.
  • समस्या 68087141: launchBillingFlow() अब फ़ेल हो चुके जवाबों के लिए कॉलबैक को ट्रिगर करता है.

Google Play Billing Library 1.0 रिलीज़ (19-09-2017, सूचना)

Google Play Billing Library का वर्शन 1.0 अब उपलब्ध है. इस वर्शन में ये बदलाव किए गए हैं.

अहम बदलाव

  • लाइब्रेरी के मेनिफ़ेस्ट में, बिलिंग की अनुमति एम्बेड की गई है. अब Android मेनिफ़ेस्ट में, com.android.vending.BILLING की अनुमति जोड़ना ज़रूरी नहीं है.
  • BillingClient.Builder क्लास में नया बिल्डर जोड़ा गया.
  • SKU के बारे में क्वेरी करने के लिए, SkuDetailsParams क्लास के लिए बिल्डर पैटर्न पेश किया गया.
  • कई एपीआई तरीकों को अपडेट किया गया है, ताकि वे एक जैसे दिखें. जैसे, एक ही तरह के आर्ग्युमेंट के नाम और क्रम.

व्यवहार में बदलाव

Google Play Billing Library के वर्शन 1.0 में, ये बदलाव किए गए हैं.

BillingClient.Builder क्लास

BillingClient.Builder को अब newBuilder पैटर्न के ज़रिए शुरू किया गया है:

Kotlin

billingClient = BillingClient.newBuilder(context).setListener(this).build()

Java

billingClient = BillingClient.newBuilder(context).setListener(this).build();

launchBillingFlow तरीके को अब BillingFlowParams क्लास का इस्तेमाल करके कॉल किया जाता है

किसी खरीदारी या सदस्यता के लिए बिलिंग फ़्लो शुरू करने के लिए, launchBillingFlow() तरीके को BillingFlowParams इंस्टेंस मिलता है. यह इंस्टेंस, अनुरोध के हिसाब से तय किए गए पैरामीटर के साथ शुरू किया जाता है:

Kotlin

BillingFlowParams.newBuilder().setSku(skuId)
        .setType(billingType)
        .setOldSku(oldSku)
        .build()

// Then, use the BillingFlowParams to start the purchase flow
val responseCode = billingClient.launchBillingFlow(builder.build())

Java

BillingFlowParams.newBuilder().setSku(skuId)
                              .setType(billingType)
                              .setOldSku(oldSku)
                              .build();

// Then, use the BillingFlowParams to start the purchase flow
int responseCode = billingClient.launchBillingFlow(builder.build());

उपलब्ध प्रॉडक्ट के बारे में क्वेरी करने का नया तरीका

queryPurchaseHistoryAsync() और querySkuDetailsAsync() तरीकों के लिए आर्ग्युमेंट को बिल्डर पैटर्न में रैप किया गया था:

Kotlin

val params = SkuDetailsParams.newBuilder()
params.setSkusList(skuList)
        .setType(itemType)
billingClient.querySkuDetailsAsync(params.build(), object : SkuDetailsResponseListener() {
    ...
})

Java

SkuDetailsParams.Builder params = SkuDetailsParams.newBuilder();
params.setSkusList(skuList)
        .setType(itemType);
billingClient.querySkuDetailsAsync(params.build(), new SkuDetailsResponseListener() {...})

अब नतीजे, नतीजे के कोड और SkuDetails ऑब्जेक्ट की सूची के ज़रिए दिखाए जाते हैं. इससे पहले, रैपर क्लास का इस्तेमाल किया जाता था. ऐसा आपकी सुविधा के लिए किया गया है, ताकि हमारे सभी एपीआई में एक जैसा तरीका इस्तेमाल किया जा सके:

Kotlin

fun onSkuDetailsResponse(@BillingResponse responseCode: Int, skuDetailsList: List<SkuDetails>)

Java

public void onSkuDetailsResponse(@BillingResponse int responseCode, List<SkuDetails> skuDetailsList)

onConsumeResponse() तरीके के पैरामीटर का क्रम बदला गया

हमारे एपीआई में एक जैसा अनुभव देने के लिए, ConsumeResponseListener इंटरफ़ेस से onConsumeResponse के लिए आर्ग्युमेंट का क्रम बदल गया है:

Kotlin

fun onConsumeResponse(@BillingResponse responseCode: Int, outToken: String)

Java

public void onConsumeResponse(@BillingResponse int responseCode, String outToken)

Unwrapped PurchaseResult ऑब्जेक्ट

PurchaseResult को अनरैप कर दिया गया है, ताकि हमारे एपीआई में एक जैसा अनुभव मिल सके:

Kotlin

fun onPurchaseHistoryResponse(@BillingResponse responseCode: Int, purchasesList: List<Purchase>)

Java

void onPurchaseHistoryResponse(@BillingResponse int responseCode, List<Purchase> purchasesList)

गड़बड़ियां ठीक की गईं

डेवलपर के लिए झलक 1 रिलीज़ (12-06-2017, सूचना)

डेवलपर प्रीव्यू लॉन्च किया गया. इसका मकसद, बिलिंग की प्रोसेस को आसान बनाना है, ताकि डेवलपर Android ऐप्लिकेशन से जुड़े लॉजिक को लागू करने पर ध्यान दे सकें. जैसे, ऐप्लिकेशन का आर्किटेक्चर और नेविगेशन स्ट्रक्चर.

इस लाइब्रेरी में कई काम की क्लास और सुविधाएं शामिल हैं. इनका इस्तेमाल, Google Play Billing API के साथ अपने Android ऐप्लिकेशन इंटिग्रेट करते समय किया जा सकता है. यह लाइब्रेरी, Android इंटरफ़ेस डेफ़िनिशन लैंग्वेज (एआईडीएल) सेवा के ऊपर एक ऐब्स्ट्रैक्शन लेयर भी उपलब्ध कराती है. इससे डेवलपर के लिए, ऐप्लिकेशन और Google Play Billing API के बीच इंटरफ़ेस तय करना आसान हो जाता है.