1. खास जानकारी
Google Play की इस Play Billing Library इंटिग्रेशन कोडलैब की मदद से, रेवेन्यू के सोर्स को ऑप्टिमाइज़ करें और भरोसे के साथ अपना ऐप्लिकेशन लॉन्च करें. इस स्ट्रक्चर्ड कोडलैब में, खरीदारी की प्रोसेस को भरोसेमंद तरीके से सेट अप करने, टेस्ट करने, और लागू करने के बारे में बताया गया है. इससे आपको कमाई के लक्ष्यों को पूरा करने और उपयोगकर्ताओं को बेहतर अनुभव देने में मदद मिलेगी.
हम आपके ऐप्लिकेशन और गेम के लिए, सदस्यताओं और वन-टाइम प्रॉडक्ट के लिए डेवलपर से जुड़ी रीयल-टाइम सूचनाएं (आरटीडीएन) और Play Billing Lab सेट अप करने में आपकी मदद करेंगे. आपको यह जानकारी मिलेगी कि सदस्यताओं को रद्द करने की दर को कैसे कम किया जाए, धोखाधड़ी और गलत इस्तेमाल से कैसे बचा जाए, मुश्किल मामलों की जांच कैसे की जाए, संभावित समस्याओं को कैसे दोहराया जाए, और उन्हें कैसे ठीक किया जाए. साथ ही, उपयोगकर्ताओं पर असर डाले बिना ऑफ़र और कीमत में हुए बदलावों के साथ एक्सपेरिमेंट कैसे किया जाए.
इस कोर्स के आखिर तक, आपके पास ग्राहकों को वापस लाने की रणनीतियां लागू करने, इंटिग्रेशन से जुड़ी समस्याओं को तुरंत हल करने, आरओआई को बेहतर बनाने, प्रीमियम अनुभव देने, और अपने ऐप्लिकेशन और अपडेट को भरोसे के साथ रोल आउट करने के लिए ज़रूरी जानकारी होगी.
ज़रूरी शर्तें
- Play Billing Library के इंटिग्रेशन के बारे में बुनियादी जानकारी होना
- Android ऐप्लिकेशन डेवलपमेंट (Java) की जानकारी
आपको क्या सीखने को मिलेगा
- खरीदारी के लाइफ़साइकल को सही तरीके से मैनेज करने का तरीका. इससे खरीदारी के कन्वर्ज़न और ग्राहकों को लंबे समय तक जोड़े रखने की तकनीकों की मदद से, कारोबार को बढ़ाने में मदद मिलती है
- Google Cloud Pub/Sub का इस्तेमाल करके, डेवलपर से जुड़ी रीयल-टाइम सूचनाएं (आरटीडीएन) सेट अप करने का तरीका. इसके बाद, इनका इस्तेमाल करके, वापस लाने से जुड़े कैंपेन और लाइफ़साइकल मैनेजमेंट की अन्य रणनीतियां लागू की जा सकती हैं
- सूचनाओं को सुरक्षित तरीके से हैंडल करने के लिए, अपने बैकएंड सर्वर पर रिसीवर को कैसे सेट अप करें. इससे सटीक ट्रैकिंग और एनटाइटलमेंट की सुविधा मिलती है. साथ ही, अनचाहे रिफ़ंड या धोखाधड़ी और गलत इस्तेमाल के जोखिम को कम किया जा सकता है
- Play Billing Lab का इस्तेमाल करके, इंटिग्रेशन की जांच कैसे करें और गड़बड़ियों का पता कैसे लगाएं. इससे, डेवलपमेंट की लागत कम करने के साथ-साथ, उपयोगकर्ता अनुभव को बेहतर बनाया जा सकता है
आपको किन चीज़ों की ज़रूरत होगी
- Google Play Console में मौजूद आपके ऐप्लिकेशन के लिए, Play डेवलपर खाते का ऐक्सेस
- आपके पास Google Play Developer API की सुविधा चालू वाला Google Cloud Platform प्रोजेक्ट ऐक्सेस करने का अधिकार होना चाहिए
- आपके Android ऐप्लिकेशन के लिए, खातों और एनटाइटलमेंट को मैनेज करने वाला बैकएंड सर्वर
- Play Developer Console में आपके ऐप्लिकेशन के लिए रजिस्टर किए गए लाइसेंस टेस्टर
- टेस्टिंग डिवाइस पर Play Billing Lab इंस्टॉल होना चाहिए
2. सदस्यताओं और एक बार की जाने वाली खरीदारी से कमाई करने की रणनीतियां
अपने ऐप्लिकेशन के ज़रिए डिजिटल प्रॉडक्ट बेचते समय, कमाई करने की एक अच्छी रणनीति में उपयोगकर्ता के पूरे अनुभव को ध्यान में रखना चाहिए. इसमें एक बार की जाने वाली खरीदारी और सदस्यताएं, दोनों शामिल हैं. बेहतरीन अनुभव देने से, खरीदारी के लिए तैयार लोगों की संख्या बढ़ सकती है और सदस्यता छोड़ने की दर कम हो सकती है.
एक बार की जाने वाली खरीदारी या सदस्यता के लिए, सामान्य खरीदारी के फ़्लो में कई चरण शामिल होते हैं:
- उपयोगकर्ता, खरीदने के लिए आइटम ब्राउज़ करता है.
- उपयोगकर्ता के लिए खरीदारी का फ़्लो लॉन्च करें, ताकि वह खरीदारी और पेमेंट पूरा कर सके.
- खरीदारी पूरी होने के बारे में अपने सर्वर को सूचना दें
- अपने सर्वर पर खरीदारी की पुष्टि करें.
- उपयोगकर्ता को कॉन्टेंट देना.
- कॉन्टेंट डिलीवर होने की पुष्टि करें. इस्तेमाल किए जा सकने वाले प्रॉडक्ट के लिए, खरीदारी को सही समय पर इस्तेमाल करें, ताकि उपयोगकर्ता उस आइटम को फिर से खरीद सके.
ऐप्लिकेशन में इंटिग्रेशन की सुविधा की मदद से, खरीदारी के फ़्लो लॉन्च किए जा सकते हैं. साथ ही, उपयोगकर्ता अनुभव को मैनेज किया जा सकता है. हालांकि, यह ज़रूरी है कि आप अपने बैकएंड को उन एनटाइटलमेंट के बारे में अप-टू-डेट रखें जिन्हें उपयोगकर्ता खरीद रहे हैं. यह कुकी, खरीदारी को ट्रैक करने और उपयोगकर्ता अनुभव के अन्य पहलुओं को मैनेज करने के लिए ज़रूरी है. जैसे, अलग-अलग प्लैटफ़ॉर्म पर एनटाइटलमेंट.
डेवलपर से जुड़ी रीयल-टाइम सूचनाएं (आरटीडीएन), खरीदारी के लाइफ़साइकल के अलग-अलग चरणों को पहचानने का एक बेहतरीन तरीका है. इनका इस्तेमाल, रीयल-टाइम परफ़ॉर्मेंस ट्रैकिंग टूल के तौर पर किया जा सकता है. साथ ही, इनका इस्तेमाल उन रणनीतियों को लागू करने के लिए भी किया जा सकता है जिनसे सदस्यों को वापस लाया जा सकता है.
उदाहरण के लिए: मान लें कि आपके उपयोगकर्ता ने अभी-अभी कोई नया आइटम खरीदा है या उसने पेमेंट नहीं किया है. इसलिए, सदस्यता के लिए ग्रेस पीरियड शुरू हो गया है. सही आरटीडीएन की मदद से, यह पता लगाया जा सकता है कि उपयोगकर्ता की स्थिति में बदलाव हुआ है. इसके बाद, इसके हिसाब से कार्रवाई की जा सकती है. जैसे, उपयोगकर्ता को उस आइटम से ज़्यादा जुड़ाव महसूस कराना जिसे उसने अभी-अभी खरीदा है या उसे सदस्यता जारी रखने के लिए, पेमेंट के तरीके की जानकारी अपडेट करने के लिए रिमाइंडर ईमेल भेजना.
आरटीडीएन, सर्वर साइड पर अतिरिक्त कंट्रोल जोड़ने का भी एक बेहतरीन तरीका है. इससे, उपयोगकर्ता के क्लाइंट को समस्या होने पर भी खरीदारी मैनेज की जा सकती है. मान लें कि किसी उपयोगकर्ता ने खरीदारी कर ली है और उसे Google से इसकी पुष्टि मिल गई है. हालांकि, खरीदारी की सूचना उपयोगकर्ता के डिवाइस और आपके ऐप्लिकेशन को मिलने से पहले ही, उसके डिवाइस का नेटवर्क कनेक्शन बंद हो जाता है. आरटीडीएन की मदद से, आपको अपने सर्वर पर एक सूचना मिलेगी. इससे आपको खरीदारी की पहचान करने और क्लाइंट की समस्या से अलग उपयोगकर्ता को एनटाइटलमेंट देने में मदद मिलेगी. इससे खरीदारी की प्रोसेस भरोसेमंद बनी रहेगी.
फ़िलहाल, इस्तेमाल किए जा सकने वाले सभी तरह के आरटीडीएन के बारे में ज़्यादा जानने के लिए, यहां जाएं. हर तरह का आरटीडीएन, खरीदारी की अलग-अलग स्थिति के बारे में बताता है. इसलिए, यह ज़रूरी है कि आप अपने इस्तेमाल के उदाहरणों में, ज़रूरत के मुताबिक सही प्रोसेसिंग के लिए, हैंडलिंग के तरीके लागू करें. इस कोडलैब में, आपको एक उदाहरण दिखाया जाएगा. इसमें बताया गया है कि सुरक्षित बैकएंड सर्वर में आरटीडीएन मैसेज को कैसे मैनेज किया जाता है. जैसे, मैसेज पाना, खरीदारी की पुष्टि करना, और सही उपयोगकर्ता को एनटाइटलमेंट देना. ऐसा तब किया जाता है, जब कोई उपयोगकर्ता आपके ऐप्लिकेशन में खरीदारी पूरी कर लेता है. इसके बाद, हम आपको बताएंगे कि आपके ऐप्लिकेशन के लिए आरटीडीएन को कैसे कॉन्फ़िगर किया जाता है.
3. डेवलपर से जुड़ी रीयल-टाइम सूचनाएं (आरटीडीएन) कॉन्फ़िगर करना
डेवलपर से जुड़ी रीयल-टाइम सूचनाएं (आरटीडीएन), Google Cloud Pub/Sub का इस्तेमाल करती हैं. इससे, खरीदारी की स्थिति में होने वाले बदलावों पर तुरंत प्रतिक्रिया दी जा सकती है. Cloud Pub/Sub, पूरी तरह से मैनेज की गई रीयल-टाइम मैसेज सेवा है. इसका इस्तेमाल, किसी एक ऐप्लिकेशन से दूसरे ऐप्लिकेशन पर मैसेज भेजने या उससे मैसेज पाने के लिए किया जा सकता है. Google Play, Cloud Pub/Sub का इस्तेमाल करके उन विषयों पर पुश नोटिफ़िकेशन पब्लिश करता है जिनकी आपने सदस्यता ली है.
आरटीडीएन की सुविधा चालू करने के लिए, आपको सबसे पहले अपने Google Cloud Platform (GCP) प्रोजेक्ट का इस्तेमाल करके Cloud Pub/Sub सेट अप करना होगा. इसके बाद, अपने ऐप्लिकेशन के लिए सूचनाएं चालू करनी होंगी. अगर आपको GCP और Cloud Pub/Sub के बारे में जानकारी नहीं है, तो क्विकस्टार्ट गाइड देखें.
कोई विषय बनाएं
सूचनाएं पाने के लिए, आपको एक विषय बनाना होगा. Google Play इस विषय पर सूचनाएं पब्लिश करेगा. कोई विषय बनाने के लिए, विषय बनाना में दिए गए निर्देशों का पालन करें.
Pub/Sub की सदस्यता बनाना
किसी विषय पर पब्लिश हुए मैसेज पाने के लिए, आपको उस विषय के लिए Pub/Sub सदस्यता बनानी होगी. Pub/Sub की सदस्यता बनाने के लिए, यह तरीका अपनाएं:
- सदस्यों के लिए Cloud Pub/Sub की गाइड पढ़ें. इससे आपको यह समझने में मदद मिलेगी कि सदस्यता को पुश सदस्यता या पुल सदस्यता के तौर पर कैसे कॉन्फ़िगर किया जाता है. इस कोडलैब में, हम पुल टाइप वाली सदस्यता का इस्तेमाल करेंगे. इसके लिए, आपके सुरक्षित बैकएंड सर्वर को कोई मैसेज पाने के लिए Cloud Pub/Sub के सर्वर से अनुरोध करना पड़ता है.
- सदस्यता बनाने के लिए, सदस्यता जोड़ना लेख में दिए गए निर्देशों का पालन करें.
अपने विषय को पब्लिश करने का अधिकार दें
Cloud Pub/Sub के लिए, आपको Google Play को अपने विषय पर सूचनाएं पब्लिश करने के अधिकार देने होंगे.
- Google Cloud Console खोलें.
- अपना प्रोजेक्ट चुनें. इसके बाद, खोज बार में "Pub/Sub" खोजें और Pub/Sub कॉन्फ़िगरेशन पेज पर जाएं.

- अपना विषय ढूंढें और अनुमतियों की सेटिंग खोलें.

- सेवा खाता
google-play-developer-notifications@system.gserviceaccount.comजोड़ने के लिए, प्रिंसिपल जोड़ें पर क्लिक करें. इसके बाद, इसे Pub/Sub पब्लिशर की भूमिका दें.
- विषय सेट अप करने की प्रोसेस पूरी करने के लिए, सेव करें पर क्लिक करें.

अपने ऐप्लिकेशन के लिए आरटीडीएन चालू करना
Play Billing के इंटिग्रेशन को बेहतर बनाने के लिए, डेवलपर से जुड़ी रीयल-टाइम सूचनाएं (आरटीडीएन) सेट अप करने का तरीका जानें. खरीदारी के भरोसे को बेहतर बनाने के लिए, खरीदारों को उनकी पसंद के हिसाब से मैसेज भेजे जा सकते हैं. साथ ही, धोखाधड़ी और गलत इस्तेमाल को रोका जा सकता है, ताकि आपका कुल आरओआई बेहतर हो सके.
आरटीडीएन, Google Play से सीधे तौर पर सर्वर-टू-सर्वर अपडेट देते हैं. ये अपडेट, सदस्यता रिन्यूअल, नई खरीदारी, और पेमेंट से जुड़ी समस्याओं जैसे अहम इवेंट के लिए होते हैं. ये आपके बैकएंड सिस्टम को, उपयोगकर्ता के एनटाइटलमेंट की सही स्थिति के साथ अपने-आप सिंक करने में मदद करते हैं. इससे क्लाइंट-साइड की सीमाओं से आगे बढ़ा जा सकता है. साथ ही, आपको तुरंत और सही तरीके से जवाब देने में मदद मिलती है.
अपने ऐप्लिकेशन के लिए, डेवलपर से जुड़ी रीयल-टाइम सूचनाएं पाने की सुविधा चालू करने का तरीका:
- Google Play Console खोलें.
- अपना ऐप्लिकेशन चुनें.
- Play की मदद से कमाई करें > कमाई करने के लिए सेटअप पर जाएं.
- स्क्रोल करके, डेवलपर से जुड़ी रीयल-टाइम सूचनाएं सेक्शन पर जाएं.
- रीयल-टाइम में सूचनाएं पाने की सुविधा चालू करें को चुनें.
- विषय का नाम फ़ील्ड में, Cloud Pub/Sub के उस विषय का पूरा नाम डालें जिसे आपने पहले कॉन्फ़िगर किया था. विषय का नाम, projects/{project_id}/topics/{topic_name} फ़ॉर्मैट में होना चाहिए. इसमें project_id, आपके प्रोजेक्ट का यूनीक आइडेंटिफ़ायर होता है. साथ ही, topic_name, पहले बनाए गए विषय का नाम होता है.
- टेस्ट मैसेज भेजने के लिए, टेस्ट मैसेज भेजें पर क्लिक करें. टेस्ट पब्लिश करने से यह पक्का करने में मदद मिलती है कि सब कुछ सही तरीके से सेट अप और कॉन्फ़िगर किया गया है. अगर टेस्ट पब्लिश सफल होता है, तो एक मैसेज दिखता है. इसमें बताया जाता है कि टेस्ट पब्लिश सफल रहा. अगर आपने इस विषय के लिए सदस्यता अटैच की है, तो आपको टेस्ट मैसेज मिलेगा. पुल सदस्यता के लिए, Cloud Console में सदस्यता पर जाएं. इसके बाद, मैसेज देखें पर क्लिक करें और मैसेज पुल करें. आपको हर उस मैसेज की पुष्टि करनी चाहिए जिसे आपने पुल किया है, ताकि Cloud Pub/Sub उसे बार-बार डिलीवर न करे. पुश नोटिफ़िकेशन की सदस्यता के लिए, देखें कि टेस्ट मैसेज आपके पुश एंडपॉइंट पर डिलीवर हुआ है या नहीं. जवाब का कोड मिलने का मतलब है कि अनुरोध स्वीकार कर लिया गया है. अगर पब्लिश करने में गड़बड़ी होती है, तो गड़बड़ी का मैसेज दिखता है. पक्का करें कि विषय का नाम सही हो और
google-play-developer-notifications@system.gserviceaccount.comसेवा खाते के पास, विषय के लिए Pub/Sub पब्लिशर का ऐक्सेस हो. - चुनें कि आपको किस तरह की सूचनाएं चाहिए.
- सदस्यताओं और रद्द की गई सभी खरीदारी के लिए सूचनाएं पाएं - सदस्यता और रद्द की गई खरीदारी से जुड़ी डेवलपर से जुड़ी रीयल-टाइम सूचनाएं पाएं. आपको वन-टाइम प्रॉडक्ट की खरीदारी से जुड़ी सूचनाएं नहीं मिलेंगी.
- सदस्यताओं और वन-टाइम प्रॉडक्ट से जुड़ी सभी सूचनाएं पाएं - सदस्यता और रद्द की गई खरीदारी से जुड़े सभी इवेंट की सूचनाएं पाएं. आपको वन-टाइम प्रॉडक्ट की खरीदारी से जुड़े इवेंट भी मिलेंगे. जैसे,
ONE_TIME_PRODUCT_PURCHASEDऔरONE_TIME_PRODUCT_CANCELED. इन परचेज़ इवेंट के बारे में ज़्यादा जानने के लिए, एक बार की जाने वाली खरीदारी का लाइफ़साइकल देखें.

- बदलाव सेव करें पर क्लिक करें.
अब आपने अपने ऐप्लिकेशन के लिए, डेवलपर को रीयल-टाइम में सूचनाएं पाने की सुविधा चालू कर दी है. इससे आपको सामान्य समस्याओं को हल करने में मदद मिलेगी. जैसे, उपयोगकर्ताओं को वापस लाने के लिए मैसेज भेजना या धोखाधड़ी और गलत इस्तेमाल को रोकना. अगले सेक्शन में, हम आपके सुरक्षित बैकएंड सर्वर में एक सदस्य बनाएंगे, ताकि वह आपके Cloud Pub/Sub विषय पर भेजे गए मैसेज देख सके.
4. सूचनाएं पाएं
आपके ऐप्लिकेशन में उपयोगकर्ताओं को बेहतर अनुभव देने के लिए, यह ज़रूरी है कि आपका बैकएंड सर्वर, खरीदारी की स्थिति के बारे में अप-टू-डेट रहे. उदाहरण के लिए, जब कोई उपयोगकर्ता ऐप्लिकेशन में पेमेंट करके खरीदारी पूरी कर लेता है, तो उसे कॉन्टेंट जल्द से जल्द उसके खाते में डिलीवर किया जाना चाहिए.
इसके लिए, यह ज़रूरी है कि खरीदारी पूरी होने का पता चल जाए और उसे समय पर प्रोसेस किया जा सके. Play Billing Library, आपके ऐप्लिकेशन में खरीदारियों का पता लगाने के कई तरीके उपलब्ध कराती है. खरीदारी पूरी होने का पता चलने पर, आपके ऐप्लिकेशन को अपने बैकएंड सर्वर को इसकी सूचना देनी होगी, ताकि वह खरीदारी की पुष्टि कर सके. इसके बाद, सही उपयोगकर्ता को कॉन्टेंट का ऐक्सेस देना होगा. इसके बाद, Google को सूचना देनी होगी कि खरीदारी प्रोसेस हो गई है. हालांकि, ऐसा हो सकता है कि कई वजहों से आपका ऐप्लिकेशन, खरीदारी का पता समय पर न लगा पाया हो. उदाहरण के लिए, कोई उपयोगकर्ता खरीदारी कर लेता है और उसे Google से पुष्टि करने वाला ईमेल मिल जाता है. हालांकि, इससे पहले कि उसके डिवाइस और आपके ऐप्लिकेशन को Play Billing Library इंटरफ़ेस के ज़रिए सूचना मिले, उसके डिवाइस का नेटवर्क कनेक्शन बंद हो जाता है. आरटीडीएन, सर्वर साइड पर अतिरिक्त कंट्रोल उपलब्ध कराता है. इससे आपको खरीदारी मैनेज करने में मदद मिलती है. ऐसा तब भी होता है, जब उपयोगकर्ता के क्लाइंट को समस्याएं आ रही हों. आरटीडीएन, खरीदारी की स्थिति में बदलाव होने पर आपके सर्वर को सूचनाएं भेजता है. इससे आपको खरीदारी की स्थिति में हुए बदलावों के बारे में तुरंत पता चल जाता है. साथ ही, संभावित क्लाइंट की समस्याओं से अलग, दूसरे तरीके से खरीदारी की स्थिति में हुए बदलावों के बारे में पता चलता है. इससे खरीदारी की प्रोसेस ज़्यादा भरोसेमंद हो जाती है.
इस सेक्शन में, Cloud Pub/Sub क्लाइंट लाइब्रेरी का इस्तेमाल करके, Cloud Pub/Sub विषय पर भेजे गए मैसेज पाने के लिए एक सदस्य बनाया जाएगा. ये लाइब्रेरी कई भाषाओं में उपलब्ध हैं. यहां दिए गए सेक्शन में, हम सदस्य को खरीदारी की पुष्टि करने के लिए कहेंगे. साथ ही, सही उपयोगकर्ता को एनटाइटलमेंट देंगे और सर्वर पर खरीदारी की पुष्टि करेंगे/खरीदारी का इस्तेमाल करेंगे. इस कोडलैब के लिए, हम Java का इस्तेमाल कर रहे हैं.
Cloud Pub/Sub के किसी विषय पर पब्लिश किए गए हर मैसेज में, Base64-एन्कोड किया गया एक डेटा फ़ील्ड होता है.
{
"message": {
"attributes": {
"key": "value"
},
"data": "eyAidmVyc2lvbiI6IHN0cmluZywgInBhY2thZ2VOYW1lIjogc3RyaW5nLCAiZXZlbnRUaW1lTWlsbGlzIjogbG9uZywgIm9uZVRpbWVQcm9kdWN0Tm90aWZpY2F0aW9uIjogT25lVGltZVByb2R1Y3ROb3RpZmljYXRpb24sICJzdWJzY3JpcHRpb25Ob3RpZmljYXRpb24iOiBTdWJzY3JpcHRpb25Ob3RpZmljYXRpb24sICJ0ZXN0Tm90aWZpY2F0aW9uIjogVGVzdE5vdGlmaWNhdGlvbiB9",
"messageId": "136969346945"
},
"subscription": "projects/myproject/subscriptions/mysubscription"
}
Base64 एन्कोड किए गए डेटा फ़ील्ड को डिकोड करने के बाद, DeveloperNotification में ये फ़ील्ड शामिल होते हैं:
{
"version": string,
"packageName": string,
"eventTimeMillis": long,
"oneTimeProductNotification": OneTimeProductNotification,
"subscriptionNotification": SubscriptionNotification,
"voidedPurchaseNotification": VoidedPurchaseNotification,
"testNotification": TestNotification
}
ज़्यादा जानकारी के लिए, कृपया डेवलपर से जुड़ी रीयल-टाइम सूचनाओं का रेफ़रंस देखें.
यहां आपके सुरक्षित बैकएंड सर्वर के लिए, NotificationReceiver का सैंपल कोड दिया गया है. इससे Pub/Sub मैसेज प्रोसेस किए जा सकते हैं. Security Command Center में पुष्टि करने के लिए, ऐप्लिकेशन के डिफ़ॉल्ट क्रेडेंशियल सेट अप करें. इसके लिए, लोकल डेवलपमेंट एनवायरमेंट के लिए पुष्टि करने की सुविधा सेट अप करना लेख पढ़ें.
import com.google.cloud.pubsub.v1.AckReplyConsumer;
import com.google.cloud.pubsub.v1.MessageReceiver;
import com.google.cloud.pubsub.v1.Subscriber;
import com.google.pubsub.v1.ProjectSubscriptionName;
import com.google.pubsub.v1.PubsubMessage;
import java.util.Base64;
import org.json.JSONObject;
/** Real-time developer notifications receiver. */
public class NotificationReceiver {
private NotificationReceiver() {}
/*
* Receive notification messages from the subscription.
*
* @param projectId The project ID of your Google Cloud Project.
* @param subscriptionId The subscription ID of the subscriber to the pub/sub topic.
*/
public static void receiveNotificationMessages(String projectId, String subscriptionId) {
ProjectSubscriptionName subscriptionName =
ProjectSubscriptionName.of(projectId, subscriptionId);
try {
Subscriber subscriber =
Subscriber.newBuilder(subscriptionName, new NotificationMessageReceiver()).build();
// Start the subscriber.
subscriber.startAsync().awaitRunning();
subscriber.awaitTerminated();
} catch (IllegalStateException e) {
System.out.println("Subscriber stopped: " + e);
}
}
static class NotificationMessageReceiver implements MessageReceiver {
@Override
public void receiveMessage(PubsubMessage message, AckReplyConsumer consumer) {
// Decode the data into a String from the message data field.
String jsonString = new String(Base64.getDecoder().decode(message.getData().toStringUtf8()));
// Parse the String into a JSON object.
JSONObject messageJson = new JSONObject(jsonString);
// Fetch the value for certain fields.
String version = messageJson.getString("version");
String packageName = messageJson.getString("packageName");
System.out.println("version: " + version);
System.out.println("packageName: " + packageName);
// Validate the purchase and grant the entitlement as needed.
// More details in the following sections.
// ......
// Acknowledge the message to avoid repeated delivery.
consumer.ack();
}
}
}
अब आपके पास एक सूचना पाने वाला ऐसा सिस्टम है जो आपके सुरक्षित बैकएंड सर्वर में, Cloud Pub/Sub के विषय पर भेजे गए मैसेज को इस्तेमाल करता है. यहां दिए गए सेक्शन में, हम आपके बैकएंड सर्वर में आरटीडीएन मैसेज प्रोसेस करने के सबसे सही तरीकों के बारे में बताएंगे.
5. अपने ऐप्लिकेशन में खरीदारी के फ़्लो में उपयोगकर्ता आइडेंटिफ़ायर अटैच करना
जब आपके सर्वर को खरीदारी की स्थिति के अपडेट के बारे में आरटीडीएन मैसेज मिलता है, तो आपके सर्वर को यह पता होना चाहिए कि खरीदारी किस उपयोगकर्ता ने की है, ताकि वह इसे प्रोसेस कर सके. जैसे, सही उपयोगकर्ता को कॉन्टेंट डिलीवर करना. इसके लिए, आपको खरीदारी करने वाले उपयोगकर्ता के लिए उपलब्ध किसी भी उपयोगकर्ता आइडेंटिफ़ायर को अटैच करना होगा. इसके लिए, अपने ऐप्लिकेशन में खरीदारी का फ़्लो लॉन्च करते समय obfuscatedAccountId का इस्तेमाल करें. आइडेंटिफ़ायर का एक उदाहरण, आपके सिस्टम में उपयोगकर्ता के लॉगिन का अस्पष्ट वर्शन हो सकता है. इस पैरामीटर को सेट करने से, Google को धोखाधड़ी का पता लगाने में मदद मिल सकती है. इसके अलावा, इससे यह पक्का करने में मदद मिल सकती है कि खरीदारी का क्रेडिट सही उपयोगकर्ता को मिले. इस बारे में उपयोगकर्ताओं को एनटाइटलमेंट देना लेख में बताया गया है.
यहां दिए गए सैंपल कोड में, ऐप्लिकेशन में खरीदारी का फ़्लो लॉन्च करते समय उपयोगकर्ता आइडेंटिफ़ायर को अटैच करने का तरीका बताया गया है. इसके लिए, obfuscatedAccountId सेट करना होगा.
// An activity reference from which the billing flow will be launched.
Activity activity = ...;
// A user identifier, e.g. an obfuscated user id in your system.
String obfuscatedAccountId = ...;
ImmutableList<ProductDetailsParams> productDetailsParamsList =
ImmutableList.of(
ProductDetailsParams.newBuilder()
// retrieve a value for "productDetails" by calling queryProductDetailsAsync()
.setProductDetails(productDetails)
// set the offer token to specify the offer to purchase when applicable, e.g., subscription products
// .setOfferToken(offerToken)
.build()
);
BillingFlowParams billingFlowParams = BillingFlowParams.newBuilder()
.setProductDetailsParamsList(productDetailsParamsList)
.setObfuscatedAccountId(obfuscatedAccountId)
.build();
// Launch the billing flow
BillingResult billingResult = billingClient.launchBillingFlow(activity, billingFlowParams);
अगले सेक्शन में बताया गया है कि खरीदारी के फ़्लो में सेट किया गया उपयोगकर्ता आइडेंटिफ़ायर, खरीदारी में शामिल किया जाएगा. इसका इस्तेमाल, सही उपयोगकर्ता को एनटाइटलमेंट देने के लिए किया जा सकता है.
6. एनटाइटलमेंट देने से पहले, खरीदारी की पुष्टि करना
इस सेक्शन में, हम सुरक्षित बैकएंड सर्वर में एनटाइटलमेंट देने से पहले, खरीदारी की पुष्टि करने के सबसे सही तरीकों के बारे में जानेंगे.
जब कोई उपयोगकर्ता एक बार में खरीदे जाने वाले किसी प्रॉडक्ट को खरीद लेता है, तो आपके सुरक्षित बैकएंड सर्वर में मौजूद Pub/Sub सदस्य को Pub/Sub मैसेज मिलेगा. आपको अपने बैकएंड सर्वर में ये काम करने चाहिए:
- Pub/Sub मैसेज से
purchaseTokenको पार्स करें. आपको सभी खरीदारी के लिए,purchaseTokenकी सभी वैल्यू का रिकॉर्ड रखना चाहिए. - पुष्टि करें कि मौजूदा खरीदारी के लिए
purchaseTokenवैल्यू, पिछली किसी भीpurchaseTokenवैल्यू से मेल नहीं खाती है.purchaseTokenदुनिया भर में यूनीक होता है. इसलिए, इस वैल्यू को अपने डेटाबेस में प्राइमरी कुंजी के तौर पर सुरक्षित तरीके से इस्तेमाल किया जा सकता है. - Google Play Developer API में purchases.products:get एंडपॉइंट का इस्तेमाल करके, Google से पुष्टि करें कि खरीदारी असली है.
- अगर खरीदारी मान्य है और इसका इस्तेमाल पहले नहीं किया गया है, तो इन-ऐप्लिकेशन आइटम या सदस्यता के लिए एनटाइटलमेंट सुरक्षित तरीके से दिया जा सकता है.
- आपको एनटाइटलमेंट सिर्फ़ तब देना चाहिए, जब खरीदारी की स्थिति
PURCHASEDहो. साथ ही, यह पक्का करें किPENDINGखरीदारी को सही तरीके से मैनेज किया गया हो. पैसे ट्रांसफ़र के ऐसे ट्रांज़ैक्शन मैनेज करना जो अभी तक पूरे नहीं हुए हैं लेख में जाकर, इस बारे में ज़्यादा जानकारी पाएं.
यहां दिए गए कोड के उदाहरण में, Google Play Developer API के लिए एक एपीआई क्लाइंट बनाया गया है. हम इसका इस्तेमाल बाद में एपीआई कॉल करने के लिए करेंगे.
import com.google.api.client.auth.oauth2.Credential;
import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
import com.google.api.client.http.HttpTransport;
import com.google.api.client.json.JsonFactory;
import com.google.api.client.json.gson.GsonFactory;
import com.google.api.services.androidpublisher.AndroidPublisher;
import com.google.api.services.androidpublisher.AndroidPublisherScopes;
import java.io.IOException;
import java.security.GeneralSecurityException;
import java.util.Collections;
/** Helper class to initialize the publisher APIs client library. */
public class AndroidPublisherHelper {
/* Your application name */
private static final String APPLICATION_NAME = "YourApplicationName";
/* Load credentials from a JSON key file. Replace with the actual path to your downloaded service
* account key file.
*/
private static final String RESOURCES_CLIENT_SECRETS_JSON =
"/path/to/your/service_account_key.json";
/** Global instance of the JSON factory. */
private static final JsonFactory JSON_FACTORY = GsonFactory.getDefaultInstance();
/* The API client */
private static final AndroidPublisher ANDROID_PUBLISHER = init();
/**
* Performs all necessary setup steps for running requests against the API.
*
* @return the {@link AndroidPublisher} service
*/
private static AndroidPublisher init(){
try {
// Authorization.
Credential credential =
GoogleCredential.fromStream(
AndroidPublisherHelper.class.getResourceAsStream(RESOURCES_CLIENT_SECRETS_JSON))
.createScoped(Collections.singleton(AndroidPublisherScopes.ANDROIDPUBLISHER));
HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport();
// Set up and return API client.
return new AndroidPublisher.Builder(httpTransport, JSON_FACTORY, credential)
.setApplicationName(ApplicationConfig.APPLICATION_NAME)
.build();
} catch (GeneralSecurityException | IOException ex) {
throw new RuntimeException("fail to initialize the publisher APIs client library", ex);
}
}
}
इसके बाद, हम एपीआई कॉल करने के लिए लॉजिक जोड़ते हैं. साथ ही, पहले से बनाए गए रिसीवर में बदलाव करते हैं, ताकि खरीदारी की पुष्टि की जा सके और सही उपयोगकर्ता को एनटाइटलमेंट दिया जा सके.
AndroidPublisherHelper में, Google Play Developer API में Purchases.products:get एंडपॉइंट से ProductPurchase को फ़ेच करने के लिए, यह तरीका जोड़ें.
/* Fetch the ProductPurchase for the one-time product purchase from
* Purchases.products.get endpoint in the Google Play Developer API
*/
public static ProductPurchase executeProductPurchasesGet(
String packageName, String sku, String purchaseToken) {
try {
ProductPurchase productPurchase =
ANDROID_PUBLISHER.purchases().products().get(packageName, sku, purchaseToken).execute();
return productPurchase;
} catch (IOException ex) {
log.error("Exception was thrown while getting a product purchase", ex);
// It is recommended to apply some retry mechanism, such as exponential backoff, to fetch the purchase in case of transient failures.
return null;
}
}
NotificationMessageReceiver में जाकर, खरीदारी की पुष्टि करें. साथ ही, सूचना में शामिल डेटा के आधार पर, अपने सिस्टम में सही उपयोगकर्ता को एनटाइटलमेंट दें. डुप्लीकेट प्रोसेसिंग से बचने के लिए, आपको अपने सर्वर में purchaseToken को ट्रैक करते रहना चाहिए.
@Override
public void receiveMessage(PubsubMessage message, AckReplyConsumer consumer) {
// Decode the data into a String from the message data field.
String jsonString = new String(Base64.getDecoder().decode(message.getData().toStringUtf8()));
// Parse the String into a JSON object.
JSONObject messageJson = new JSONObject(jsonString);
// Fetch the value for certain fields.
String version = messageJson.getString("version");
String packageName = messageJson.getString("packageName");
// Process notification data based on your business requirements.
// Process oneTimeProductNotification in the message.
JSONObject oneTimeProductNotificationJson =
messageJson.getJSONObject("oneTimeProductNotification");
if (oneTimeProductNotificationJson != null) {
String purchaseToken = oneTimeProductNotificationJson.getString("purchaseToken");
String sku = oneTimeProductNotificationJson.getString("sku");
int notificationType = oneTimeProductNotificationJson.getInt("notificationType");
if (notificationType == 1) {
// ONE_TIME_PRODUCT_PURCHASED - A one-time product was successfully purchased by a user.
// Verify that the purchaseToken value does not match any previous purchaseToken values in
// your backend system to avoid duplicate processing.
......
// Fetch the ProductPurchase from Purchases.products.get endpoint
ProductPurchase productPurchase =
AndroidPublisherHelper.executeProductPurchasesGet(packageName, sku, purchaseToken);
if (productPurchase != null && productPurchase.getPurchaseState() == 0) {
// The purchase is valid and in PURCHASED state.
// The account Id set in the App when launching the billing flow.
String obfuscatedExternalAccountId = productPurchase.getObfuscatedExternalAccountId();
// Grant the entitlement to the correct account for obfuscatedExternalAccountId in your
// system.
......
}
}
// Process subscriptionNotification in the message.
JSONObject subscriptionNotificationJson = messageJson.getJSONObject("subscriptionNotification");
if (subscriptionNotificationJson != null) {
......
}
// Process other notification data in the message as needed.
......
}
// Acknowledge the message to avoid repeated delivery.
consumer.ack();
}
7. Google को सूचना देना कि खरीदारी प्रोसेस कर दी गई है
एनटाइटलमेंट देने के बाद, आपको Google को यह सूचना देनी होगी कि खरीदारी प्रोसेस हो गई है. इसके लिए, आपको अपने सुरक्षित बैकएंड सर्वर से Play Developer API में purchases.products:consume या purchases.products:acknowledge एंडपॉइंट को कॉल करना होगा. इससे, इस्तेमाल किया जा सकने वाला प्रॉडक्ट कंज़्यूम किया जा सकेगा या इस्तेमाल नहीं किया जा सकने वाला प्रॉडक्ट स्वीकार किया जा सकेगा.
Google Play Developer API में, purchases.products:consume या purchases.products:acknowledge को कॉल करने के लिए, AndroidPublisherHelper में ये तरीके जोड़ें.
/* Consume the one-time product purchase by calling
* Purchases.products.consume endpoint in the Google Play Developer API
*/
public static void executeProductPurchasesConsume(
String packageName, String sku, String purchaseToken) {
try {
ANDROID_PUBLISHER
.purchases().products().consume(packageName, sku, purchaseToken).execute();
} catch (IOException ex) {
log.error("Exception was thrown while consuming a product purchase", ex);
// It is recommended to apply some retry mechanism, such as exponential backoff, to ensure the purchase is correctly consumed in case of transient failures.
}
}
/* Acknowledge the one-time product purchase by calling
* Purchases.products.acknowledge endpoint in the Google Play Developer API
*/
public static void executeProductPurchasesAcknowledge(
String packageName, String sku, String purchaseToken) {
try {
ANDROID_PUBLISHER
.purchases().products().acknowledge(packageName, sku, purchaseToken, new ProductPurchasesAcknowledgeRequest()).execute();
} catch (IOException ex) {
log.error("Exception was thrown while acknowledging a product purchase", ex);
// It is recommended to apply some retry mechanism, such as exponential backoff, to ensure the purchase is correctly acknowledged in case of transient failures.
}
}
NotificationMessageReceiver में, इस्तेमाल किए जा सकने वाले प्रॉडक्ट की खरीदारी को इस्तेमाल करें या इस्तेमाल न किए जा सकने वाले प्रॉडक्ट की खरीदारी की पुष्टि करें. इसके लिए, अपने बैकएंड सर्वर में एनटाइटलमेंट दें.
@Override
public void receiveMessage(PubsubMessage message, AckReplyConsumer consumer) {
......
String obfuscatedExternalAccountId = productPurchase.getObfuscatedExternalAccountId();
// Grant the entitlement to the correct account for obfuscatedExternalAccountId in your
// system.
......
// If the product is a consumable product, consume the purchase.
AndroidPublisherHelper.executeProductPurchasesConsume(packageName, sku, purchaseToken);
// Or if the product is a non-consumable product, acknowledge the purchase.
// AndroidPublisherHelper.executeProductPurchasesAcknowledge(packageName, sku, purchaseToken);
......
}
पुष्टि करना ज़रूरी है, क्योंकि इससे Google Play को पता चलता है कि उपयोगकर्ता को खरीदारी का एनटाइटलमेंट दे दिया गया है. खरीदारी की अनुमति देने के बाद, आपको खरीदारी की पुष्टि करनी होगी.
बहुत बढ़िया! आपने डेवलपर से जुड़ी रीयल-टाइम सूचनाओं को इंटिग्रेट कर लिया है. इससे, खरीदारी को भरोसेमंद तरीके से प्रोसेस किया जा सकेगा. इस कोडलैब में इसके बारे में बताया गया है. अब, यह पक्का करने के लिए कि सब कुछ ठीक से काम कर रहा है, आइए Play Billing Lab के बारे में जानें. यह एक ऐसा टूल है जिसे इस्तेमाल करना आसान है. इसे Play Billing के इंटिग्रेशन को टेस्ट करने में मदद करने के लिए डिज़ाइन किया गया है.
8. Play Billing Lab की मदद से टेस्ट करना
बेझिझक लॉन्च करने के लिए, आपको डेवलपमेंट के दौरान अपने इंटिग्रेशन की जांच करनी चाहिए. Play Billing Lab एक मुफ़्त Android ऐप्लिकेशन है. यह डेवलपर को, Google Play के बिलिंग सिस्टम के साथ इंटिग्रेशन को टेस्ट करने में मदद करता है. इससे डेवलपर को Play Billing की सुविधाओं को आसानी से टेस्ट करने, उन्हें तेज़ी से इंटिग्रेट करने, और ज़्यादा भरोसे के साथ लॉन्च करने में मदद मिलती है.
Play Billing Lab में, टेस्टिंग से जुड़ी कई सुविधाएं उपलब्ध हैं. इनकी मदद से, अलग-अलग स्थितियों को टेस्ट किया जा सकता है. जैसे:
- Play Billing Lab में जाकर, Play Country बदलें और सेटिंग को टेस्ट पर लागू करें. इससे अलग-अलग देशों/इलाकों में, उपयोगकर्ताओं के लिए उपलब्ध कस्टम सुविधाओं की जांच की जा सकती है. इससे कोई फ़र्क़ नहीं पड़ता कि टेस्टर, जांच कहां कर रहा है
- एक ही खाते से, मुफ़्त में आज़माने की सुविधा या शुरुआती ऑफ़र को बार-बार आज़माना
- अन्य ऐक्टिव सदस्यों पर असर डाले बिना, सदस्यता की कीमत में हुए बदलावों की जांच करना
- गड़बड़ी की अलग-अलग स्थितियों में जांच करने के लिए, Play Billing Library के रिस्पॉन्स कोड को सिम्युलेट करें
- टेस्टिंग की प्रोसेस को तेज़ करने के लिए, सदस्यता रिन्यूअल की प्रोसेस को तेज़ करें
- खरीदारी के फ़्लो से जुड़े कुछ जोखिम के सिग्नल को बायपास करने के लिए, पेमेंट के असल तरीकों से टेस्ट करें
हम Play Billing Lab ऐप्लिकेशन में, टेस्ट करने की नई सुविधाएं लगातार जोड़ रहे हैं. Play Billing Lab को Play Store से डाउनलोड और इंस्टॉल किया जा सकता है. इसके अलावा, Play Billing Lab की मदद से टेस्ट करने के बारे में ज़्यादा जानने के लिए, इंटिग्रेशन की जांच करें पर जाएं.
BillingResponseCode की जांच करने के लिए, Play Billing Lab का इस्तेमाल करना
Play Billing Library को अपने ऐप्लिकेशन के साथ इंटिग्रेट करते समय, सभी BillingResponseCode फ़्लो को टेस्ट करना एक आम चुनौती है. ऐसा इसलिए, क्योंकि आपके पास Play Store और Play के बैकएंड के बीच होने वाले कम्यूनिकेशन को कंट्रोल करने का ज़्यादा विकल्प नहीं होता. Play Billing Lab ऐप्लिकेशन में मौजूद रिस्पॉन्स सिम्युलेटर सुविधा की मदद से, Play Billing Library के लिए गड़बड़ी के कोड वाले जवाबों को कॉन्फ़िगर किया जा सकता है. इससे, गड़बड़ी की अलग-अलग मुश्किल स्थितियों को टेस्ट किया जा सकता है.
उदाहरण के लिए, आपने अपने ऐप्लिकेशन में खरीदारी को इस्तेमाल करने का लॉजिक लागू किया है. ऐसा तब होता है, जब आपका ऐप्लिकेशन खरीदारी के पूरा होने का पता लगा लेता है. आपको यह टेस्ट करना है कि नेटवर्क की समस्या की वजह से, आपका ऐप्लिकेशन खरीदारी को पूरा नहीं कर सका. साथ ही, आपके बैकएंड सर्वर में मौजूद आरटीडीएन रिसीवर ने मैसेज को पिक अप कर लिया और खरीदारी को सही तरीके से मैनेज किया. टेस्टिंग के लिए, रिस्पॉन्स सिम्युलेटर का इस्तेमाल किया जा सकता है. Play Billing Lab के रिस्पॉन्स सिम्युलेटर का इस्तेमाल करके टेस्ट करने के तरीके के बारे में यहां बताया गया है.
रिस्पॉन्स सिम्युलेटर की मदद से टेस्ट करना
रिस्पॉन्स सिम्युलेटर की मदद से टेस्टिंग करते समय, आपका ऐप्लिकेशन Play Billing Lab से कम्यूनिकेट करेगा. इससे उसे वह रिस्पॉन्स कोड मिलेगा जिसे आपने Play Billing Lab के रिस्पॉन्स सिम्युलेटर में कॉन्फ़िगर किया है.
Play Billing Library के लिए, बिलिंग में बदलाव करने की सुविधा की टेस्टिंग चालू करना
Response Simulator और आपके ऐप्लिकेशन के बीच कम्यूनिकेशन की सुविधा चालू करने के लिए, आपको सबसे पहले अपने ऐप्लिकेशन में Play Billing Library के लिए, बिलिंग ओवरराइड की टेस्टिंग की सुविधा चालू करनी होगी. इसके लिए, अपने ऐप्लिकेशन की AndroidManifest.xml फ़ाइल में ये मेटाडेटा टैग जोड़ें.
<manifest ... >
<application ... >
...
<meta-data
android:name="com.google.android.play.largest_release_audience.NONPRODUCTION"
android:value="" />
<meta-data
android:name="com.google.android.play.billingclient.enableBillingOverridesTesting"
android:value="true" />
</application>
</manifest>
अपडेट की गई AndroidManifest.xml फ़ाइल का इस्तेमाल करके, अपना ऐप्लिकेशन बनाएं. अब आपका ऐप्लिकेशन, Play Billing Lab के रिस्पॉन्स सिम्युलेटर के लिए तैयार है.
टेस्टिंग के बाद, अपने ऐप्लिकेशन को प्रोडक्शन एनवायरमेंट में डिप्लॉय करते समय, आपको ऐसी अलग AndroidManifest.xml फ़ाइल का इस्तेमाल करना चाहिए जिसमें ये मेटाडेटा टैग शामिल न हों. इसके अलावा, यह भी पक्का करें कि आपने AndroidManifest.xml फ़ाइल से इन टैग को हटा दिया हो.
Play Billing Library में गड़बड़ियों को सिम्युलेट करना
Play Billing Library में गड़बड़ियों को सिम्युलेट करके टेस्ट करने के लिए, सबसे पहले Play Billing Lab ऐप्लिकेशन में रिस्पॉन्स कोड कॉन्फ़िगर करें. इसके बाद, अपने ऐप्लिकेशन में टेस्ट करें.
रिस्पॉन्स कोड कॉन्फ़िगर करना
- अपने ऐप्लिकेशन के लिए, लाइसेंस टेस्टर खाते से Play Billing Lab ऐप्लिकेशन में साइन इन करें. इस इमेज में, Play Billing Lab का डैशबोर्ड दिखाया गया है. इसमें रिस्पॉन्स सिम्युलेटर कार्ड भी शामिल है.

- रिस्पॉन्स सिम्युलेटर की स्क्रीन पर जाने के लिए, रिस्पॉन्स सिम्युलेटर कार्ड पर मैनेज करें पर क्लिक करें.
- जब कहा जाए, तब Play Billing Lab को सूचनाएं भेजने की अनुमति दें, ताकि आपको अपने ऐप्लिकेशन के कनेक्शन की स्थिति दिख सके.
- अगर 'Play Billing Library के रिस्पॉन्स को सिम्युलेट करें' स्विच पहले से चालू नहीं है, तो इसे चालू करें.

- Play Billing Library के उन एपीआई के लिए रिस्पॉन्स कोड चुनें जिनकी आपको जांच करनी है. खरीदारी के इस्तेमाल से जुड़ी गड़बड़ी को सिम्युलेट करने के लिए,
consumeAsyncएपीआई के लिए कोई गड़बड़ी कोड चुनें. आपके चुने गए विकल्प अपने-आप सेव हो जाते हैं. अब रिस्पॉन्स सिम्युलेटर, चुने गए रिस्पॉन्स कोड को आपके ऐप्लिकेशन पर भेजने के लिए तैयार है.
अपने ऐप्लिकेशन की जांच करना
अब अपने ऐप्लिकेशन की जांच की जा सकती है. इससे यह पुष्टि की जा सकेगी कि गड़बड़ी की स्थिति में, सब कुछ कॉन्फ़िगर किए गए तरीके से काम कर रहा है या नहीं. अपना ऐप्लिकेशन खोलें और Play Billing Library API के तरीके को ट्रिगर करें. अगर आपका ऐप्लिकेशन, खरीदारी को इस्तेमाल करने के लिए consumeAsync कॉल करता है, तो आपके ऐप्लिकेशन को गड़बड़ी का कोड मिलेगा. गड़बड़ी के कोड से यह पुष्टि की जा सकती है कि आपका ऐप्लिकेशन सही तरीके से काम कर रहा है या नहीं. साथ ही, यह भी पुष्टि की जा सकती है कि आपका बैकएंड सर्वर, खरीदारी को सही तरीके से प्रोसेस कर रहा है या नहीं.
जांच पूरी होने के बाद, जवाब को सिम्युलेट करना बंद करने के लिए, 'Play Billing Library के जवाब को सिम्युलेट करें' स्विच को बंद करें.
Play Billing Lab की मदद से टेस्ट करने के बारे में ज़्यादा जानें. इसके अलावा, लाइसेंस टेस्टर की मदद से इन-ऐप्लिकेशन बिलिंग को टेस्ट करने के बारे में ज़्यादा जानने के लिए, सहायता केंद्र पर जाएं.
9. बधाई हो!
आपने यह कोडलैब पूरा कर लिया है. अब आपके पास अपने ऐप्लिकेशन से कमाई करने की रणनीति को ऑप्टिमाइज़ करने का तरीका है. इससे आपको उपयोगकर्ताओं को बेहतर अनुभव देने में मदद मिलेगी. साथ ही, उपयोगकर्ताओं की संतुष्टि, खरीदारी से जुड़े कन्वर्ज़न, और सदस्यों के रद्द करने की दर को कम करने में मदद मिलेगी.
डेवलपर से जुड़ी रीयल-टाइम सूचनाओं और Play Billing Lab कंपैनियन ऐप्लिकेशन का इस्तेमाल करके, एक बार की जाने वाली खरीदारी और सदस्यताओं, दोनों के लिए खरीदारी के लाइफ़साइकल इवेंट को पहले से ही मैनेज किया जा सकता है.
इन टूल की मदद से, दिलचस्पी बढ़ाने वाली विन-बैक रणनीतियों को असरदार तरीके से लागू किया जा सकता है. साथ ही, इंटिग्रेशन से जुड़ी समस्याओं को तुरंत हल किया जा सकता है. इसके अलावा, उपयोगकर्ता अनुभव और रेवेन्यू के सोर्स को बेहतर बनाया जा सकता है, ताकि अपने ऐप्लिकेशन या गेम को भरोसे के साथ लॉन्च किया जा सके.
इस कोडलैब को पूरा करने के बाद, अब आपके पास खरीदारी की पूरी प्रोसेस को मैनेज करने का कौशल है. साथ ही, Play Billing Lab की मदद से, अपने इंटिग्रेशन की अच्छी तरह से जांच करने का कौशल भी है. इससे, Google Play पर कमाई करने की आपकी क्षमता को ज़्यादा से ज़्यादा बढ़ाया जा सकता है और उपयोगकर्ताओं को बेहतर अनुभव दिया जा सकता है.