इस दस्तावेज़ में, Google Play Billing Library के लिए रिलीज़ नोट दिए गए हैं.
Android की स्किल
GitHub पर देखेंPlay Billing Library को अपग्रेड करना
android skills add play-billing-library-version-upgradeHelp me upgrade my Play Billing Library implementation.Google Play Billing Library 9.1.0 रिलीज़ (18-06-2026)
Google Play Billing Library का वर्शन 9.1.0 और Kotlin एक्सटेंशन अब उपलब्ध हैं.
बदलावों के बारे में खास जानकारी
- बिलिंग सिस्टम चुनने की सुविधा के लिए नए एपीआई:
- उपयोगकर्ता के लिए उपलब्ध बिलिंग के विकल्पों के बारे में जानकारी पाने के लिए,
BillingClient.getBillingChoiceInfoAsync()जोड़ा गया. BillingChoiceInfoक्लास जोड़ी गई है. इसमें जवाब की जानकारी शामिल है. जैसे, इमेज के यूआरएल और लॉयल्टी प्रोग्राम की जानकारी.- अनुरोध को कॉन्फ़िगर करने के लिए,
GetBillingChoiceInfoParamsको जोड़ा गया. - कॉल बैक पाने के लिए,
BillingChoiceInfoResponseListenerको जोड़ा गया. - Kotlin एक्सटेंशन
BillingClient.getBillingChoiceInfo()सस्पेंड फ़ंक्शन जोड़ा गया. - बिलिंग प्रोग्राम के लिए जानकारी वाला डायलॉग दिखाने के लिए,
BillingClient.showBillingProgramInformationDialog()जोड़ा गया. - डायलॉग को कॉन्फ़िगर करने के लिए,
BillingProgramInformationDialogParamsजोड़ा गया. - कॉल बैक पाने के लिए,
BillingProgramInformationDialogListenerको जोड़ा गया. - बिलिंग सिस्टम चुनने की सुविधा की उपलब्धता के बारे में जानकारी देने के लिए,
BillingProgramAvailabilityDetails.BillingChoiceAvailabilityDetailsजोड़ा गया. ChoiceScreenTypeको जोड़ा गया है, ताकि यह बताया जा सके कि चुनने का विकल्प देने वाली स्क्रीन किस तरह की है.
- उपयोगकर्ता के लिए उपलब्ध बिलिंग के विकल्पों के बारे में जानकारी पाने के लिए,
Google Play Billing Library 9.0.0 रिलीज़ (19-05-2026)
Google Play Billing Library और Kotlin एक्सटेंशन का वर्शन 9.0.0 अब उपलब्ध है. अगर आपको पीबीएल के पिछले वर्शन से माइग्रेट करना है, तो PBL 9 माइग्रेशन गाइड देखें.
बदलावों के बारे में खास जानकारी
Play Store पर की गई गतिविधि को ब्लॉक करने के लिए अपडेट किए गए गड़बड़ी कोड: Play Store पर ब्लॉक किए गए ऐप्लिकेशन के लिए गड़बड़ी कोड अपडेट किए गए हैं. ऐसे मामलों में जहां सिस्टम ने Play Store ऐप्लिकेशन को ब्लॉक कर दिया है (उदाहरण के लिए, ओईएम के हिसाब से बनाए गए बच्चों के मोड में), रिस्पॉन्स कोड
ERRORसे बदलकरBILLING_UNAVAILABLEहो गया है. इसके अलावा, ऐसे मामलों के लिएBillingResultअब Play Store को ब्लॉक कर दिया गया है डीबग मैसेज दिखाता है.डेवलपर की ओर से उपलब्ध कराई गई बिलिंग के लिए, नल वैल्यू स्वीकार करने की सुविधा से जुड़ा अपडेट:
DeveloperProvidedBillingDetails.getLinkUri()तरीके को@Nullableके तौर पर अपडेट किया गया है. इस बदलाव से उन स्थितियों में मदद मिलती है जहां पेमेंट चुनने के चरण के दौरान, पेमेंट के बाहरी तरीके के लिए डायरेक्ट लिंक यूआरआई उपलब्ध नहीं होता है.इस बदलाव को सुरक्षित तरीके से लागू करने के लिए, पक्का करें कि आपका इंटिग्रेशन कोड, ब्राउज़र इंटेंट को पार्स करने या लॉन्च करने से पहले,
DeveloperProvidedBillingDetails.getLinkUri()तरीके सेnullऔर खाली स्ट्रिंग ("") वैल्यू, दोनों को हैंडल करता हो.targetSdkVersionको 35 पर अपडेट किया गया.अब इन-ऐप्लिकेशन मैसेज सुविधा का इस्तेमाल करके, लोगों को बढ़ी हुई कीमत के लिए मंज़ूरी देने के बारे में सूचना दी जा सकती है. इससे उपयोगकर्ता, ऐप्लिकेशन छोड़े बिना ही कीमत में हुई बढ़ोतरी की पुष्टि कर सकते हैं. बढ़ी हुई कीमत के लिए मंज़ूरी देने का मैसेज, उस दिन से दिखने लगता है जब उपयोगकर्ता कीमत में हुई बढ़ोतरी को स्वीकार कर सकता है. यह मैसेज, ज़्यादा से ज़्यादा हर सात दिन में एक बार दिखता है.
Google Play Billing Library 8.3.0 रिलीज़ (23-12-2025)
Google Play Billing Library का वर्शन 8.3.0 और Kotlin एक्सटेंशन अब उपलब्ध हैं.
बदलावों के बारे में खास जानकारी
बाहरी बिलिंग सिस्टम के लिए नए एपीआई:
- पेमेंट के बाहरी तरीके इस्तेमाल करने की सुविधा देने के लिए, ये क्लास जोड़ी गई हैं:
- पेमेंट के बाहरी तरीके इस्तेमाल करने की सुविधा चालू करने के लिए,
enableBillingProgram(EnableBillingProgramParams)जोड़ा गया. - पेमेंट के बाहरी तरीके इस्तेमाल करने की सुविधा लॉन्च करने के लिए,
BillingFlowParams.Builder.enableDeveloperBillingOptionजोड़ा गया.
पेमेंट के बाहरी तरीके के फ़्लो में रुकावट आने पर, गड़बड़ियों को बेहतर तरीके से कैटगरी में बांटा गया है:
- अगर कोई उपयोगकर्ता, खरीदारी के फ़्लो से हटकर किसी बाहरी ऐप्लिकेशन (जैसे कि ई-वॉलेट) पर पेमेंट पूरा करता है और वापस नहीं आता है, तो क्लाइंट को मिलने वाला जवाब कोड अब
BillingResponseCode.USER_CANCELED(1) होगा. साथ ही, डीबग मैसेजBILLING_ACTIVITY_PAUSEDहोगा. इससे पहले, यह कोड डिफ़ॉल्ट रूप सेBillingResponseCode.ERROR(6) पर सेट था.
- अगर कोई उपयोगकर्ता, खरीदारी के फ़्लो से हटकर किसी बाहरी ऐप्लिकेशन (जैसे कि ई-वॉलेट) पर पेमेंट पूरा करता है और वापस नहीं आता है, तो क्लाइंट को मिलने वाला जवाब कोड अब
Google Play Billing Library 8.2.1 रिलीज़ (15-12-2025)
Google Play Billing Library और Kotlin एक्सटेंशन का 8.2.1 वर्शन अब उपलब्ध है.
गड़बड़ियां ठीक की गईं
isBillingProgramAvailableAsyncऔरcreateBillingProgramReportingDetailsAsyncमें मौजूद गड़बड़ी को ठीक किया गया है. 8.2.0 वर्शन में जोड़े गए इन एपीआई का इस्तेमाल करने के लिए, 8.2.1 वर्शन पर अपडेट करें.
Google Play Billing Library 8.2.0 रिलीज़ (09-12-2025)
Google Play Billing Library का वर्शन 8.2.0 और Kotlin एक्सटेंशन अब उपलब्ध हैं.
बदलावों के बारे में खास जानकारी
बाहरी कॉन्टेंट के लिंक और बाहरी ऑफ़र के लिए नए एपीआई:
- इन प्रोग्राम के लिए,
BillingClientको सेट अप करने के लिएenableBillingProgramजोड़ा गया. - उपयोगकर्ता की ज़रूरी शर्तें पूरी होने की स्थिति का पता लगाने के लिए,
isBillingProgramAvailableAsyncजोड़ा गया. - रिपोर्टिंग के लिए इस्तेमाल किए जाने वाले बाहरी लेन-देन के टोकन को बनाने के लिए,
createBillingProgramReportingDetailsAsyncजोड़ा गया. - डिजिटल कॉन्टेंट के ऑफ़र या ऐप्लिकेशन डाउनलोड करने के लिए, बाहरी लिंक शुरू करने के लिए
launchExternalLinkजोड़ा गया.
- इन प्रोग्राम के लिए,
ऐप्लिकेशन के बाहर ऑफ़र वगैरह प्रमोट करने के प्रोग्राम में हुए बदलाव:
- ऐप्लिकेशन के बाहर ऑफ़र वगैरह प्रमोट करने के प्रोग्राम से जुड़ी नीति में बदलाव हुए हैं. ज़्यादा जानकारी के लिए, प्रोग्राम में हुए बदलाव देखें. नए एपीआई की मदद से, बाहरी ऑफ़र के फ़्लो लॉन्च करने का तरीका जानने के लिए, इंटिग्रेशन गाइड देखें.
BillingClient.Builder.enableExternalOfferएपीआई को बंद कर दिया गया है.isExternalOfferAvailableAsyncएपीआई को बंद कर दिया गया है.createExternalOfferReportingDetailsAsyncएपीआई को बंद कर दिया गया है.showExternalOfferInformationDialogएपीआई को बंद कर दिया गया है.
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 का वर्शन 8.0.0 और Kotlin एक्सटेंशन अब उपलब्ध हैं.
बदलावों के बारे में खास जानकारी
ऐप्लिकेशन में खरीदे जाने वाले आइटम को अब वन-टाइम प्रॉडक्ट कहा जाएगा.
वन-टाइम प्रॉडक्ट के लिए, खरीदारी के कई विकल्प और ऑफ़र.
अब वन-टाइम प्रॉडक्ट के लिए, खरीदारी के कई विकल्प और ऑफ़र उपलब्ध कराए जा सकते हैं. इससे आपको अपने प्रॉडक्ट बेचने के तरीके में ज़्यादा सहूलियत मिलती है. साथ ही, उन्हें मैनेज करते समय आने वाली समस्याएं कम होती हैं.
queryProductDetailsAsync()तरीके को बेहतर बनाया गया है.PBL 8.0.0 से पहले,
queryProductDetailsAsync()तरीके से ऐसे प्रॉडक्ट नहीं मिलते थे जिन्हें फ़ेच नहीं किया जा सकता. ऐसा इन वजहों से हो सकता है: प्रॉडक्ट नहीं मिला या उपयोगकर्ता के लिए कोई ऑफ़र उपलब्ध नहीं है. PBL 8.0.0 के साथ, फ़ेच नहीं किए गए प्रॉडक्ट को प्रॉडक्ट-लेवल के नए स्टेटस कोड के साथ दिखाया जाता है. इससे फ़ेच नहीं किए गए प्रॉडक्ट के बारे में जानकारी मिलती है. ध्यान दें किProductDetailsResponseListener.onProductDetailsResponse()के हस्ताक्षर में बदलाव हुआ है. इसलिए, आपको अपने ऐप्लिकेशन में बदलाव करने होंगे. ज़्यादा जानकारी के लिए, नतीजे को प्रोसेस करना लेख पढ़ें.सेवा से अपने-आप फिर से कनेक्ट होने की सुविधा.
नए
BillingClient.Builder.enableAutoServiceReconnection()बिल्डर पैरामीटर की मदद से डेवलपर, सेवा के अपने-आप फिर से कनेक्ट होने की सुविधा के लिए ऑप्ट-इन कर सकते हैं. इससे कनेक्शन को मैनेज करना आसान हो जाता है. ऐसा इसलिए, क्योंकि यह Play Billing Service से अपने-आप फिर से कनेक्ट हो जाता है. साथ ही, सेवा के डिसकनेक्ट होने पर,startConnection()को मैन्युअल तरीके से कॉल करने की ज़रूरत नहीं पड़ती. ज़्यादा जानकारी के लिए, कनेक्शन अपने-आप फिर से चालू होने की सुविधा देखें.launchBillingFlow()तरीके के लिए सब-रिस्पॉन्स कोड.launchBillingFlow()से मिले BillingResult में अब सब-रिस्पॉन्स कोड फ़ील्ड शामिल होगा. यह फ़ील्ड सिर्फ़ कुछ मामलों में भरा जाएगा, ताकि अनुरोध पूरा न होने की वजह के बारे में ज़्यादा जानकारी दी जा सके. उप-जवाब वाले फ़ील्ड में ये वैल्यू हो सकती हैं:PAYMENT_DECLINED_DUE_TO_INSUFFICIENT_FUNDS- यह तब दिखता है, जब उपयोगकर्ता के पास उतने पैसे नहीं होते जितने में उसे आइटम खरीदना है.USER_INELIGIBLE- यह तब दिखता है, जब उपयोगकर्ता सदस्यता के ऑफ़र के लिए कॉन्फ़िगर की गई ज़रूरी शर्तें पूरी नहीं करता.NO_APPLICABLE_SUB_RESPONSE_CODE- यह डिफ़ॉल्ट वैल्यू है. यह तब दिखती है, जब कोई अन्य सब-रिस्पॉन्स कोड लागू नहीं होता.
queryPurchaseHistory()तरीका हटा दिया गया है.पहले से बंद की जा चुकी
queryPurchaseHistory()क्लास को हटा दिया गया है. इसके बजाय, कौनसे एपीआई इस्तेमाल किए जा सकते हैं, इस बारे में जानने के लिए खरीदारी के इतिहास के बारे में क्वेरी करना लेख पढ़ें.querySkuDetailsAsync()तरीका हटा दिया गया है.पहले से बंद की जा चुकी
querySkuDetailsAsync()क्लास को हटा दिया गया है. इसके बजाय, आपको queryProductDetailsAsync का इस्तेमाल करना चाहिए.BillingClient.Builder.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 एक्सटेंशन अब उपलब्ध हैं.
गड़बड़ियां ठीक की गईं
- Play Billing Library 7.1.0 में, टेस्टिंग
BillingResultरिस्पॉन्स कोड से जुड़ी गड़बड़ी को ठीक किया गया है.
Google Play Billing Library 7.1.0 रिलीज़ (19-09-2024)
Google Play Billing Library का वर्शन 7.1.0 और Kotlin एक्सटेंशन अब उपलब्ध हैं.
बदलावों के बारे में खास जानकारी
- कनेक्शन की स्थिति और मैनेजमेंट से जुड़ी थ्रेड की सुरक्षा को बेहतर बनाया गया है.
BillingResultरिस्पॉन्स कोड की जांच करने के लिए, कुछ बदलाव किए गए हैं. ये बदलाव, Play Billing Library 7.1.1 में पूरी तरह से रिलीज़ किए गए हैं. इस सुविधा का इस्तेमाल करके, अपने इंटिग्रेशन को टेस्ट करने के लिए, आपको Play Billing Library 7.1.1 पर अपग्रेड करना होगा. एक बग मौजूद है. इसका असर सिर्फ़ उन ऐप्लिकेशन पर पड़ेगा जिनमें बिलिंग ओवरराइड की टेस्टिंग चालू है. इससे ऐप्लिकेशन के सामान्य इस्तेमाल पर कोई असर नहीं पड़ेगा. ज़्यादा जानकारी के लिए,BillingResultरिस्पॉन्स कोड की जांच करना लेख पढ़ें.
Google Play Billing Library 7.0.0 रिलीज़ (14-05-2024)
Google Play Billing Library और Kotlin एक्सटेंशन का वर्शन 7.0.0 अब उपलब्ध है.
बदलावों के बारे में खास जानकारी
किस्तों में सदस्यता लेने की सुविधा के लिए, एपीआई जोड़े गए हैं.
- किस्तों में पेमेंट करने की सुविधा वाले बुनियादी प्लान के लिए,
ProductDetails.InstallmentPlanDetailsजोड़ा गया है. ये प्लान, उपयोगकर्ताओं के लिए उपलब्ध हैं. इस एपीआई की मदद से, आपका ऐप्लिकेशन किस्त के प्लान और उसके कमिटमेंट सेटअप की पहचान कर पाता है. इससे वह उपयोगकर्ता को इससे जुड़ी जानकारी दे पाता है. ज़्यादा जानने के लिए, किस्तों में सदस्यता लेने से जुड़ी हमारी गाइड देखें.
- किस्तों में पेमेंट करने की सुविधा वाले बुनियादी प्लान के लिए,
इस रिलीज़ में,
BillingClient.Builder.enablePendingPurchases()को बंद कर दिया गया है. इसलिए, इसकी जगहPendingPurchasesParamsऔरBillingClient.Builder.enablePendingPurchases(PendingPurchaseParams)को जोड़ा गया है.- अब इस्तेमाल नहीं किया जा सकने वाला
enablePendingPurchases(),enablePendingPurchases(PendingPurchasesParams.newBuilder().enableOneTimeProducts().build())के बराबर है.
- अब इस्तेमाल नहीं किया जा सकने वाला
सदस्यता के प्रीपेड प्लान के लिए, पेमेंट न करने की वजह से लगाए गए शुल्क से जुड़े लेन-देन को मैनेज करने के लिए एपीआई जोड़े गए हैं:
- सदस्यता के प्रीपेड प्लान के लिए, लंबित लेन-देन की सुविधा चालू करने के लिए,
PendingPurchasesParams.Builder.enablePrepaidPlans()के साथBillingClient.Builder.enablePendingPurchases(PendingPurchaseParams)का इस्तेमाल करें. सहायता जोड़ने के दौरान, पक्का करें कि आपका ऐप्लिकेशन सदस्यता की लाइफ़साइकल को भी सही तरीके से मैनेज करता हो. ज़्यादा जानने के लिए, खरीदारी पूरी होने में लगने वाले समय से जुड़ी हमारी गाइड देखें. 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#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 का वर्शन 6.2.1 और Kotlin एक्सटेंशन अब उपलब्ध हैं.
बदलावों के बारे में खास जानकारी
BillingClient.showAlternativeBillingOnlyInformationDialog()में मौजूद एक गड़बड़ी को ठीक किया गया है. इस गड़बड़ी की वजह से, डायलॉग पूरा होने पर कुछ मामलों मेंAlternativeBillingOnlyInformationDialogListenerको कॉल नहीं किया जा सकता था.
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 एक्सटेंशन अब उपलब्ध हैं.
बदलावों के बारे में खास जानकारी
- सिर्फ़ अन्य बिलिंग सिस्टम (बिना उपयोगकर्ता की पसंद के)
- की सुविधा देने के लिए एपीआई जोड़े गए
- सिर्फ़ अन्य बिलिंग सिस्टम की सुविधा देने के लिए,
BillingClient.Builder.enableAlternativeBillingOnly()जोड़ा गया. - जोड़ा गया
BillingClient.isAlternativeBillingOnlyAvailableAsync()सिर्फ़ अन्य बिलिंग सिस्टम उपलब्ध कराने की सुविधा की उपलब्धता की जांच करने के लिए. BillingClient.showAlternativeBillingOnlyInformationDialog()जोड़ा गया है, ताकि उपयोगकर्ताओं को जानकारी वाला डायलॉग बॉक्स दिखाया जा सके. ऐसा तब किया जाता है, जब सिर्फ़ अन्य बिलिंग सिस्टम का इस्तेमाल किया जा रहा हो.- जोड़ा गया
BillingClient.createAlternativeBillingOnlyReportingDetailsAsync()सिर्फ़ अन्य बिलिंग सिस्टम से किए गए लेन-देन की रिपोर्ट करने के लिए ज़रूरी पेलोड बनाने के लिए.
- सिर्फ़ अन्य बिलिंग सिस्टम की सुविधा देने के लिए,
- उपयोगकर्ता की पसंद के बिलिंग सिस्टम वाले एपीआई अपडेट किए गए
UserChoiceBillingListenerजोड़ा गया है. यह AlternativeBillingListener की जगह इस्तेमाल किया जाएगा. AlternativeBillingListener को बंद कर दिया गया है.UserChoiceDetailsको जोड़ा गया है, ताकि इसेAlternativeChoiceDetailsकी जगह इस्तेमाल किया जा सके. को अब इस्तेमाल नहीं किया जा सकता.BillingClient.Builder.enableAlternativeBilling()को बदलकरBillingClient.Builder.enableUserChoiceBilling()जोड़ा गया है.BillingClient.Builder.enableAlternativeBilling()को अब काम न करने वाले फ़ंक्शन के तौर पर मार्क किया गया है.
- Google Play खाते में देश का नाम पाने के लिए,
BillingClient.getBillingConfigAsync()को जोड़ा गया है.
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को बदलने के लिए, नयाReplacementModeenum जोड़ा गया.ध्यान दें कि
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 का वर्शन 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 एक्सटेंशन अब उपलब्ध हैं.
बदलावों के बारे में खास जानकारी
- दक्षिण कोरिया में रहने वाले उपयोगकर्ताओं के लिए, मोबाइल/टैबलेट पर अन्य बिलिंग सिस्टम के फ़्लो को सपोर्ट करने वाली क्लास जोड़ी गई हैं:
- शामिल किया गया
BillingFlowParams.SubscriptionUpdateParams.Builder.setOriginalExternalTransactionId()मूल सदस्यता का बाहरी ट्रांज़ैक्शन आईडी तय करने का तरीका. - दक्षिण कोरिया में रहने वाले उपयोगकर्ताओं को अन्य बिलिंग सिस्टम चुनने का विकल्प देने के लिए,
BillingClient.Builder.enableAlternativeBilling()तरीका जोड़ा गया.
Google Play Billing Library 5.1 रिलीज़ (31-10-2022)
Google Play Billing Library का वर्शन 5.1.0 और Kotlin एक्सटेंशन अब उपलब्ध हैं.
इस वर्शन में ये बदलाव किए गए हैं.
बदलावों के बारे में खास जानकारी
- ऑफ़र आईडी वापस पाने का
ProductDetails.SubscriptionOfferDetails.getOfferId()तरीका जोड़ा गया. - बुनियादी प्लान का आईडी वापस पाने का तरीका जोड़ा गया
ProductDetails.SubscriptionOfferDetails.getBasePlanId(). targetSdkVersionको 31 पर अपडेट किया गया.
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 और 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 का वर्शन 3.0.2 और Kotlin एक्सटेंशन अब उपलब्ध हैं.
गड़बड़ियां ठीक की गईं
- Kotlin एक्सटेंशन में मौजूद एक गड़बड़ी को ठीक किया गया है. इस गड़बड़ी की वजह से, "Already resumed" गड़बड़ी के साथ कोरूटीन काम नहीं करता था.
- kotlinx.coroutines लाइब्रेरी के 1.4 या इससे ऊपर के वर्शन के साथ Kotlin एक्सटेंशन का इस्तेमाल करने पर, हमने ऐसे रेफ़रंस ठीक किए हैं जिन्हें हल नहीं किया जा सका था.
Google Play Billing Library 3.0.1 रिलीज़ (30-09-2020)
Google Play Billing Library का वर्शन 3.0.1 और Kotlin एक्सटेंशन अब उपलब्ध हैं.
गड़बड़ियां ठीक की गईं
- ऐसी गड़बड़ी को ठीक किया गया है जिसमें बिलिंग फ़्लो के दौरान ऐप्लिकेशन बंद होने और फिर से चालू होने पर,
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 इन-ऐप्लिकेशन खरीदारी 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()setObfuscatedAccountId()के तौर पर फिर से नाम दिया गया है. साथ ही, इस फ़ील्ड में 64 वर्णों से ज़्यादा इस्तेमाल न करने की पाबंदी और व्यक्तिगत पहचान से जुड़ी जानकारी (पीआईआई) शामिल न करने की पाबंदी के बारे में बताया गया है.setAccountId()को अब सेवा में नहीं माना जाता. इसे लाइब्रेरी के आने वाले वर्शन से हटा दिया जाएगा.BillingFlowParamsमें,setObfuscatedProfileId()जोड़ा गया है. यहsetObfuscatedAccountId()की तरह ही काम करता है. ज़्यादा जानकारी के लिए, डेवलपर पेलोड के अपडेट और विकल्प देखें.Purchaseमें,BillingFlowParamsमें सेट किए गए अस्पष्ट किए गए खाता आइडेंटिफ़ायर को वापस पाने के लिए,getAccountIdentifiers()तरीका जोड़ा गया है.BillingClientमें,loadRewardedSku()तरीके को, इनाम वाले एसकेयू को बंद करने के तहत बंद कर दिया गया है.
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()का इस्तेमाल करें जिनका इस्तेमाल नहीं किया जाता. यह आपको क्लाइंट एपीआई में मिलेगा. - Server API में एक नई
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 की स्थिति के बारे में अपडेट देखने चाहिए. इसके लिए, यह तरीका अपनाएं:
- ऐप्लिकेशन शुरू करते समय,
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 सॉफ़्टवेयर डेवलपमेंट किट के लाइसेंस एग्रीमेंट के तहत लाइसेंस दिया गया है.
launchPriceChangeConfirmationFlowAPI जोड़ा गया है, जो उपयोगकर्ताओं को सदस्यता की कीमत में बाद में किए जाने वाले बदलाव की समीक्षा करने के लिए प्रॉम्प्ट करता है.- किसी उपयोगकर्ता की सदस्यता को अपग्रेड या डाउनग्रेड करते समय,
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() अब उन जवाबों के लिए कॉलबैक ट्रिगर करता है जो नहीं दिए जा सके
Play 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)
अनरैप किया गया PurchaseResult ऑब्जेक्ट
PurchaseResult को अनरैप कर दिया गया है, ताकि हमारे एपीआई में एक जैसा अनुभव मिल सके:
Kotlin
fun onPurchaseHistoryResponse(@BillingResponse responseCode: Int, purchasesList: List<Purchase>)
Java
void onPurchaseHistoryResponse(@BillingResponse int responseCode, List<Purchase> purchasesList)
गड़बड़ियां ठीक की गईं
- PURCHASES_UPDATED बंडल में कोई रिस्पॉन्स कोड नहीं है
- डिवाइस रोटेशन के दौरान, ProxyBillingActivity और PurchasesUpdatedListener से जुड़ी समस्याएं ठीक करना
डेवलपर के लिए झलक 1 रिलीज़ (12-06-2017, सूचना)
डेवलपर के लिए झलक लॉन्च की गई. इसका मकसद, बिलिंग की प्रोसेस को आसान बनाना है, ताकि डेवलपर Android ऐप्लिकेशन के लिए लॉजिक लागू करने पर ध्यान दे सकें. जैसे, ऐप्लिकेशन का आर्किटेक्चर और नेविगेशन स्ट्रक्चर.
इस लाइब्रेरी में कई काम की क्लास और सुविधाएं शामिल हैं. इनका इस्तेमाल, Google Play Billing API के साथ अपने Android ऐप्लिकेशन इंटिग्रेट करते समय किया जा सकता है. यह लाइब्रेरी, Android इंटरफ़ेस डेफ़िनिशन लैंग्वेज (एआईडीएल) सेवा के ऊपर एक ऐब्स्ट्रैक्शन लेयर भी उपलब्ध कराती है. इससे डेवलपर के लिए, ऐप्लिकेशन और Google Play Billing API के बीच इंटरफ़ेस को तय करना आसान हो जाता है.