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

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

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 सेवा से अपने-आप फिर से कनेक्ट होने की सुविधा मैनेज करना आसान हो जाता है. साथ ही, सेवा के डिसकनेक्ट होने पर, मैन्युअल तरीके से startConnection() को कॉल करने की ज़रूरत नहीं पड़ती. ज़्यादा जानकारी के लिए, अपने-आप कनेक्शन फिर से सेट अप करना लेख पढ़ें.

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

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

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

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

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

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

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

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

  • skuType पैरामीटर को इस्तेमाल करने वाले queryPurchasesAsync() तरीके को हटा दिया गया है.

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

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

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

बग समाधान

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

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

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

  • कनेक्शन की स्थिति और मैनेजमेंट से जुड़ी थ्रेड की सुरक्षा को बेहतर बनाया गया है.
  • [BillingResult][billing-result] रिस्पॉन्स कोड की जांच करने के लिए, कुछ बदलाव किए गए हैं. ये बदलाव, Play Billing Library 7.1.1 में पूरी तरह से रिलीज़ किए गए हैं. इस सुविधा का इस्तेमाल करके, अपने इंटिग्रेशन की जांच करने के लिए, आपको Play Billing लाइब्रेरी 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 और Kotlin एक्सटेंशन का वर्शन 7.0.0 अब उपलब्ध है.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • ProrationMode को बदलने के लिए, नया ReplacementMode सूची वाला वैरिएंट जोड़ा गया.

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

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

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

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

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

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

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

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

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

    PBL के पुराने वर्शन में, इस तरह के बदलाव नहीं होते.

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

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

  • अतिरिक्त लॉगिंग जोड़ी गई.

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

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

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

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

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

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

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

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

  • दक्षिण कोरिया में रहने वाले उपयोगकर्ताओं के लिए, मोबाइल/टैबलेट पर अन्य बिलिंग सिस्टम के फ़्लो के साथ काम करने के लिए क्लास जोड़ी गई हैं:
  • मूल सदस्यता के बाहरी ट्रांज़ैक्शन आईडी की जानकारी देने के लिए, BillingFlowParams.SubscriptionUpdateParams.Builder.setOriginalExternalTransactionId() तरीका जोड़ा गया.
  • दक्षिण कोरिया में रहने वाले उपयोगकर्ताओं को अन्य बिलिंग सिस्टम का विकल्प चुनने की अनुमति देने के लिए, BillingClient.Builder.enableAlternativeBilling() तरीका जोड़ा गया है.

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

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

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

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

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

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

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

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

  • सदस्यताओं के लिए नया मॉडल लॉन्च किया गया है. इसमें नई इकाइयां भी शामिल हैं, जिनकी मदद से किसी एक सदस्यता वाले प्रॉडक्ट के लिए कई ऑफ़र बनाए जा सकते हैं. ज़्यादा जानकारी के लिए, डेटा को दूसरी जगह भेजने से जुड़ी गाइड देखें.
  • 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 और Kotlin एक्सटेंशन का वर्शन 4.1.0 अब उपलब्ध है.

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

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

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

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

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

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

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

  • सदस्यता बदलने का नया मोड जोड़ा गया है 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 एक्सटेंशन में एक गड़बड़ी को ठीक किया गया है. इस गड़बड़ी की वजह से, कोरुटाइन "पहले से ही फिर से शुरू हो गया है" गड़बड़ी के साथ काम नहीं करता.
  • 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 अब उपलब्ध है.

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

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

Unity के लिए Google Play Billing Billing Library 2

Google Play Billing Library 2 के मौजूदा Java और Kotlin वर्शन के अलावा, हमने Unity के साथ इस्तेमाल करने के लिए लाइब्रेरी का एक वर्शन रिलीज़ किया है. Unity इन-ऐप्लिकेशन परचेज़ एपीआई का इस्तेमाल करने वाले गेम डेवलपर, 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() से setObfuscatedAccountId() कर दिया गया है. साथ ही, इस फ़ील्ड में 64 वर्ण से ज़्यादा का इस्तेमाल करने पर पाबंदी लगा दी गई है. साथ ही, व्यक्तिगत पहचान से जुड़ी जानकारी (पीआईआई) डालने पर भी पाबंदी लगा दी गई है. setAccountId() को 'इस्तेमाल नहीं किया जा सकता' के तौर पर मार्क किया गया है. इसे लाइब्रेरी के आने वाले वर्शन में हटा दिया जाएगा.
    • BillingFlowParams में setObfuscatedProfileId() जोड़ा गया है, जो setObfuscatedAccountId() की तरह ही काम करता है. ज़्यादा जानकारी के लिए, डेवलपर के लिए पेलोड से जुड़े अपडेट और विकल्प देखें.
    • Purchase में, BillingFlowParams में सेट किए गए, छिपाए गए खाते के आइडेंटिफ़ायर को दिखाने के लिए, getAccountIdentifiers() तरीका जोड़ा गया है.
    • BillingClient में, इनाम वाले एसकेयू को बंद करने के तहत, loadRewardedSku() वाले तरीके को 'इस्तेमाल नहीं किया जा सकता' के तौर पर मार्क किया गया है. इस सुविधा के बंद होने के बारे में ज़्यादा जानकारी के लिए, Play Console के सहायता केंद्र पर जाएं.

Google Play Billing Library 2.1.0 और Kotlin Extension 2.1.0 रिलीज़ (10-12-2019)

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

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

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

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

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 में, SKU की मूल कीमत वापस पाने के लिए दो नए तरीके शामिल हैं:

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

बाकी लेन-देन

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

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

खरीदारी की स्थिति PURCHASED या PENDING है या नहीं, यह पता करने के लिए Purchase.getPurchaseState() का इस्तेमाल करें. ध्यान दें कि आपको एनटाइटलमेंट सिर्फ़ तब देना चाहिए, जब स्थिति 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 बिल्डर क्लास में, 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 param ऑब्जेक्ट, अब बनाए गए ऑब्जेक्ट में बदलाव नहीं करते.
  • समस्या 68087141: launchBillingFlow() अब जवाब न मिलने पर कॉलबैक ट्रिगर करता है.

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

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

ज़रूरी बदलाव

  • लाइब्रेरी के मेनिफ़ेस्ट में एम्बेड की गई बिलिंग की अनुमति. अब Android मेनिफ़ेस्ट में com.android.vending.BILLING अनुमति जोड़ना ज़रूरी नहीं है.
  • BillingClient.Builder क्लास में नया बिल्डर जोड़ा गया.
  • 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 object

PurchaseResult को हमारे सभी एपीआई में एक जैसा रखने के लिए, unwrap किया गया है:

Kotlin

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

Java

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

बग समाधान

डेवलपर के लिए झलक का पहला वर्शन रिलीज़ (12-06-2017, एलान)

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

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