इस दस्तावेज़ में, 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 अब उपलब्ध है.
बग समाधान
- Play Billing Library 7.1.0 में, रिस्पॉन्स कोड की जांच करने से जुड़ी गड़बड़ी को ठीक किया गया है.
BillingResult
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 अब उपलब्ध है.
परिवर्तनों का सारांश
किस्तों में पैसे चुकाकर ली जाने वाली सदस्यताओं के लिए, एपीआई जोड़े गए हैं.
- किस्तों में पैसे चुकाकर लिए जाने वाले उन बुनियादी प्लान के लिए [
ProductDetails.InstallmentPlanDetails
][installment-details] जोड़ा गया है जिन्हें उपयोगकर्ता खरीद सकते हैं. यह एपीआई, आपके ऐप्लिकेशन को किस्त के प्लान और उसके कमिटमेंट सेटअप की पहचान करने में मदद करता है, ताकि उपयोगकर्ता को इससे जुड़ी जानकारी दी जा सके. ज़्यादा जानने के लिए, [सदस्यता की किस्तें तय करने से जुड़ी गाइड][installments] देखें. [installment-details]: /reference/com/android/billingclient/api/ProductDetails.InstallmentPlanDetails [installments]: /google/play/billing/subscriptions#installments
- किस्तों में पैसे चुकाकर लिए जाने वाले उन बुनियादी प्लान के लिए [
BillingClient.Builder.enablePendingPurchases()
को बदलने के लिए,PendingPurchasesParams
औरBillingClient.Builder.enablePendingPurchases(PendingPurchaseParams)
को जोड़ा गया है. इस रिलीज़ में,BillingClient.Builder.enablePendingPurchases()
का इस्तेमाल नहीं किया जा सकता.- बंद किए गए
enablePendingPurchases()
की सुविधा,enablePendingPurchases(PendingPurchasesParams.newBuilder().enableOneTimeProducts().build())
की सुविधा के बराबर है.
- बंद किए गए
सदस्यता के प्रीपेड प्लान के लिए, बाकी ट्रांज़ैक्शन की जानकारी देने के लिए एपीआई जोड़े गए:
- सदस्यता के प्रीपेड प्लान के लिए, बाकी पेमेंट की सुविधा चालू करने के लिए,
BillingClient.Builder.enablePendingPurchases(PendingPurchaseParams)
के साथ-साथPendingPurchasesParams.Builder.enablePrepaidPlans()
का इस्तेमाल करें. सहायता जोड़ते समय, पक्का करें कि आपका ऐप्लिकेशन सदस्यता के लाइफ़साइकल को सही तरीके से मैनेज करता हो. ज़्यादा जानने के लिए, पूरी नहीं हुई खरीदारी के लिए बनी हमारी गाइड देखें. - बाकी बचे टॉप-अप को वापस पाने या किसी मौजूदा सदस्यता को अपग्रेड या डाउनग्रेड करने के लिए,
Purchase.PendingPurchaseUpdate
औरPurchase.getPendingPurchaseUpdate()
को जोड़ा गया.
- सदस्यता के प्रीपेड प्लान के लिए, बाकी पेमेंट की सुविधा चालू करने के लिए,
BillingClient.Builder.enableAlternativeBilling()
,AlternativeBillingListener
, औरAlternativeChoiceDetails
को हटाया गया .- डेवलपर को इसके बजाय,
UserChoiceBillingListener
औरUserChoiceDetails
के साथBillingClient.Builder.enableUserChoiceBilling()
का इस्तेमाल करना चाहिए.
- डेवलपर को इसके बजाय,
BillingFlowParams.ProrationMode
,BillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceProrationMode()
, औरBillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceSkusProrationMode()
को हटाया गया. - डेवलपर को इसके बजाय,BillingFlowParams.SubscriptionUpdateParams.Builder#setSubscriptionReplacementMode(int)
के साथBillingFlowParams.SubscriptionUpdateParams.ReplacementMode
का इस्तेमाल करना चाहिए. -BillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceProrationMode()
. -BillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceSkusProrationMode()
.BillingFlowParams.SubscriptionUpdateParams.Builder#setOldSkuPurchaseToken()
को हटाया गया. - डेवलपर को इसके बजाय,BillingFlowParams.SubscriptionUpdateParams.Builder#setOldPurchaseToken(java.lang.String)
का इस्तेमाल करना चाहिए.BillingClient.queryPurchaseHistoryAsync()
के इस्तेमाल पर रोक लगा दी गई है और इसे आने वाले वर्शन में हटा दिया जाएगा. डेवलपर को इन विकल्पों का इस्तेमाल करना चाहिए:- स्वीकार की गई और बाकी खरीदारी: चालू खरीदारी को फ़ेच करने के लिए,
BillingClient.queryPurchasesAsync()
का इस्तेमाल करें. - इस्तेमाल की गई खरीदारी: डेवलपर को अपने सर्वर पर, इस्तेमाल की गई खरीदारी का ट्रैक रखना चाहिए.
- रद्द की गई खरीदारी: voided-purchases डेवलपर एपीआई का इस्तेमाल करें.
- ज़्यादा जानकारी के लिए, खरीदारी के इतिहास के बारे में क्वेरी करना देखें
- स्वीकार की गई और बाकी खरीदारी: चालू खरीदारी को फ़ेच करने के लिए,
BillingFlowParams.ProductDetailsParams.setOfferToken()
अब जब डेवलपर खालीofferToken
तय करते हैं, तो अपवाद दिखता है.minSdkVersion
को 21 औरtargetSdkVersion
को 34 पर अपडेट किया गया.
Google Play Billing Library 6.2.1 रिलीज़ (16-04-2024)
Google Play Billing Library और Kotlin एक्सटेंशन का वर्शन 6.2.1 अब उपलब्ध है.
परिवर्तनों का सारांश
BillingClient.showAlternativeBillingOnlyInformationDialog()
में एक गड़बड़ी को ठीक किया गया है. इसमें, डायलॉग पूरा होने पर, कुछ मामलों मेंAlternativeBillingOnlyInformationDialogListener
को कॉल नहीं किया जा सकता.
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 अब उपलब्ध है.
परिवर्तनों का सारांश
- सिर्फ़ अन्य बिलिंग सिस्टम (बिना उपयोगकर्ता की पसंद के) के लिए, एपीआई जोड़े गए हैं
- सिर्फ़ अन्य बिलिंग सिस्टम की सुविधा चालू करने के लिए,
BillingClient.Builder.enableAlternativeBillingOnly()
को जोड़ा गया है. - सिर्फ़ अन्य बिलिंग सिस्टम उपलब्ध कराने की सुविधा की उपलब्धता की जांच करने के लिए,
BillingClient.isAlternativeBillingOnlyAvailableAsync()
जोड़ा गया. - जानकारी वाला डायलॉग दिखाने के लिए,
BillingClient.showAlternativeBillingOnlyInformationDialog()
को जोड़ा गया है. इससे उपयोगकर्ताओं को यह जानकारी मिलती है कि सिर्फ़ वैकल्पिक बिलिंग सिस्टम का इस्तेमाल किया जा रहा है. - सिर्फ़ अन्य बिलिंग सिस्टम से किए गए लेन-देन की रिपोर्ट करने के लिए ज़रूरी पेलोड बनाने के लिए,
BillingClient.createAlternativeBillingOnlyReportingDetailsAsync()
जोड़ा गया.
- सिर्फ़ अन्य बिलिंग सिस्टम की सुविधा चालू करने के लिए,
- उपयोगकर्ता की पसंद के अन्य बिलिंग सिस्टम के एपीआई अपडेट किए गए
- AlternativeBillingListener को बदलने के लिए,
UserChoiceBillingListener
जोड़ा गया है. इसे 'इस्तेमाल नहीं किया जा सकता' के तौर पर मार्क किया गया है. AlternativeChoiceDetails
को बदलने के लिए,UserChoiceDetails
जोड़ा गया है. इसे अब काम न करने वाले के तौर पर मार्क किया गया है.BillingClient.Builder.enableAlternativeBilling()
को बदलने के लिए,BillingClient.Builder.enableUserChoiceBilling()
को जोड़ा गया है. इसे अब काम न करने वाले के तौर पर मार्क किया गया है.
- AlternativeBillingListener को बदलने के लिए,
- Google Play में देश का नाम पाने के लिए,
BillingClient.getBillingConfigAsync()
को जोड़ा गया.
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 अब उपलब्ध है.
इस वर्शन में ये बदलाव किए गए हैं.
परिवर्तनों का सारांश
- ऑफ़र आईडी वापस पाने के लिए,
ProductDetails.SubscriptionOfferDetails.getOfferId()
तरीका जोड़ा गया. - बुनियादी प्लान का आईडी पाने के लिए,
ProductDetails.SubscriptionOfferDetails.getBasePlanId()
तरीका जोड़ा गया. targetSdkVersion
को 31 पर अपडेट किया गया.
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
के स्टेटस के अपडेट देखने के लिए, यह तरीका अपनाना चाहिए:
- ऐप्लिकेशन शुरू करते समय, उपयोगकर्ता से जुड़े उन प्रॉडक्ट की सूची वापस पाने के लिए
BillingClient.queryPurchases()
को कॉल करें जिन्हें इस्तेमाल नहीं किया गया है. - दिखाए गए हर
Purchase
ऑब्जेक्ट परPurchase.getPurchaseState()
को कॉल करें. Purchase
ऑब्जेक्ट में हुए बदलावों का जवाब देने के लिए,onPurchasesUpdated()
तरीका लागू करें.
इसके अलावा, Google Play Developer API में Purchases.products
के लिए PENDING
स्टेटस शामिल है.
सदस्यताओं के लिए, ऐसे लेन-देन नहीं किए जा सकते जिनका पेमेंट नहीं किया गया है.
इस रिलीज़ में, डेवलपर से जुड़ी रीयल-टाइम सूचनाओं का एक नया टाइप भी जोड़ा गया है,
OneTimeProductNotification
. इस तरह की सूचना में एक मैसेज होता है, जिसकी वैल्यू ONE_TIME_PRODUCT_PURCHASED
या ONE_TIME_PRODUCT_CANCELED
होती है. इस तरह की सूचना सिर्फ़ उन खरीदारी के लिए भेजी जाती है जिनके लिए पेमेंट करने में देरी होती है. जैसे, नकद पेमेंट.
बाकी खरीदारी की पुष्टि करते समय, पक्का करें कि खरीदारी की स्थिति PURCHASED
हो, न कि PENDING
.
एपीआई में हुए बदलाव
Google Play 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 के लिए तय की गई भाषा का इस्तेमाल किया जाता है. इसे असली उपयोगकर्ताओं को नहीं दिखाया जाता.
बग समाधान
SkuDetails.getIntroductoryPriceAmountMicros()
अबString
के बजायlong
दिखाता है.
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)
बग समाधान
- PURCHASES_UPDATED बंडल में कोई रिस्पॉन्स कोड नहीं है
- डिवाइस के रोटेट होने के दौरान, ProxyBillingActivity और PurchasesUpdatedListener से जुड़ी समस्याएं ठीक करना
डेवलपर के लिए झलक का पहला वर्शन रिलीज़ (12-06-2017, एलान)
डेवलपर के लिए झलक की सुविधा लॉन्च की गई. इसका मकसद, बिलिंग की प्रोसेस को डेवलपमेंट के लिए आसान बनाना है. इससे डेवलपर, Android ऐप्लिकेशन के लिए खास लॉजिक लागू करने पर ध्यान दे पाएंगे. जैसे, ऐप्लिकेशन का आर्किटेक्चर और नेविगेशन स्ट्रक्चर.
इस लाइब्रेरी में कई सुविधाएं और क्लास शामिल हैं. इनका इस्तेमाल, अपने Android ऐप्लिकेशन को Google Play Billing API के साथ इंटिग्रेट करते समय किया जा सकता है. यह लाइब्रेरी, Android इंटरफ़ेस डेफ़िनिशन लैंग्वेज (एआईडीएल) सेवा के ऊपर एक ऐब्स्ट्रैक्शन लेयर भी उपलब्ध कराती है. इससे, डेवलपर के लिए ऐप्लिकेशन और Google Play Billing API के बीच इंटरफ़ेस तय करना आसान हो जाता है.