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 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 इंटरफ़ेस के ज़रिए, उसके डिवाइस और आपके ऐप्लिकेशन को सूचना मिलने से पहले ही, उसके डिवाइस की नेटवर्क कनेक्टिविटी बंद हो जाती है. RTDN, सर्वर साइड के लिए अतिरिक्त कंट्रोल उपलब्ध कराता है. इनकी मदद से, उपयोगकर्ता के क्लाइंट में समस्या होने पर भी खरीदारी को मैनेज किया जा सकता है. आरटीडीएन की मदद से, खरीदारी की स्थिति में होने वाले बदलावों के बारे में आपके सर्वर को अलग से सूचनाएं मिलती हैं. इससे, क्लाइंट की संभावित समस्याओं से अलग, दूसरे पाथ की मदद से खरीदारी की स्थिति में होने वाले बदलावों को तुरंत पहचाना जा सकता है. इससे, खरीदारी की प्रोसेस ज़्यादा भरोसेमंद बनती है.
इस सेक्शन में, आपको 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. अपने ऐप्लिकेशन में खरीदारी के फ़्लो में उपयोगकर्ता आइडेंटिफ़ायर अटैच करना
जब आपके सर्वर को खरीदारी की स्थिति के अपडेट के बारे में RTDN मैसेज मिलता है, तो आपके सर्वर को यह जानना ज़रूरी होता है कि खरीदारी किस उपयोगकर्ता ने की है, ताकि उसे प्रोसेस किया जा सके. जैसे, सही उपयोगकर्ता को कॉन्टेंट डिलीवर करना. ऐसा करने के लिए, अपने ऐप्लिकेशन में खरीदारी का फ़्लो लॉन्च करते समय, 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 से पुष्टि करने के लिए कि खरीदारी मान्य है या नहीं, Google Play Developer API में purchases.products:get एंडपॉइंट का इस्तेमाल करें.
- अगर खरीदारी सही है और इसका इस्तेमाल पहले नहीं किया गया है, तो इन-ऐप्लिकेशन आइटम या सदस्यता का एनटाइटलमेंट सुरक्षित तरीके से दिया जा सकता है.
- आपको एनटाइटलमेंट सिर्फ़ तब देना चाहिए, जब खरीदारी की स्थिति
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 एंडपॉइंट को कॉल करें. ऐसा करके, किसी ऐसे प्रॉडक्ट को कंज़्यूम किया जा सकता है जिसे कंज़्यूम किया जा सकता है या किसी ऐसे प्रॉडक्ट को स्वीकार किया जा सकता है जिसे कंज़्यूम नहीं किया जा सकता.
AndroidPublisherHelper
में, Google Play Developer API में purchases.products:consume या purchases.products:acknowledge को कॉल करने के लिए, ये तरीके जोड़ें.
/* 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 का देश बदलें और सेटिंग को अपने टेस्ट पर लागू करें. इसकी मदद से, अलग-अलग देशों/इलाकों में कस्टम उपयोगकर्ता अनुभव की जांच की जा सकती है. भले ही, टेस्टर किसी भी जगह से टेस्ट कर रहा हो
- एक ही खाते से मुफ़्त में आज़माने या शुरुआती ऑफ़र की जांच बार-बार करना
- अन्य ऐक्टिव सदस्यों पर असर डाले बिना, सदस्यता की कीमत में हुए बदलावों की जांच करना
- गड़बड़ी की अलग-अलग स्थितियों में जांच करने के लिए, Play Billing Library के रिस्पॉन्स कोड को सिम्युलेट करें
- जांच की प्रोसेस को तेज़ करने के लिए, सदस्यता रिन्यूअल की प्रोसेस को तेज़ करना
- खरीदारी के फ़्लो से जुड़े कुछ जोखिम के सिग्नल को बायपास करने के लिए, पेमेंट के असल तरीकों से टेस्ट करें
हम Play Billing Lab ऐप्लिकेशन में, टेस्ट करने की नई सुविधाएं लगातार जोड़ रहे हैं. Play Store से Play Billing Lab डाउनलोड और इंस्टॉल किया जा सकता है. इसके अलावा, 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 के लिए, बिलिंग सिस्टम में बदलाव करने की सुविधा की जांच करने की सुविधा चालू करना
रिस्पॉन्स सिम्युलेटर और आपके ऐप्लिकेशन के बीच कम्यूनिकेशन की सुविधा चालू करने के लिए, आपको पहले अपने ऐप्लिकेशन में जाकर, 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
api के लिए गड़बड़ी कोड चुनें. आपके चुने गए विकल्प अपने-आप सेव हो जाते हैं. अब रिस्पॉन्स सिम्युलेटर, चुने गए रिस्पॉन्स कोड आपके ऐप्लिकेशन को भेजने के लिए तैयार है.
अपने ऐप्लिकेशन की जांच करना
अब अपने ऐप्लिकेशन की जांच करके यह पुष्टि की जा सकती है कि कॉन्फ़िगर की गई गड़बड़ी की स्थिति में, सब कुछ उम्मीद के मुताबिक काम कर रहा है या नहीं. अपना ऐप्लिकेशन खोलें और Play Billing Library API का तरीका ट्रिगर करें. अगर आपका ऐप्लिकेशन खरीदारी का इस्तेमाल करने के लिए consumeAsync
कॉल करता है, तो आपके ऐप्लिकेशन को गड़बड़ी का वह कोड मिलेगा जिसे आपने अभी कॉन्फ़िगर किया है. गड़बड़ी कोड की मदद से यह पुष्टि की जा सकती है कि आपका ऐप्लिकेशन सही तरीके से काम कर रहा है या नहीं. साथ ही, यह भी देखा जा सकता है कि आपका बैकएंड सर्वर, खरीदारी को सही तरीके से प्रोसेस कर रहा है या नहीं.
जांच पूरी करने के बाद, रिस्पॉन्स को सिम्युलेट करने की सुविधा बंद करने के लिए, 'Play Billing Library के रिस्पॉन्स को सिम्युलेट करें' स्विच को बंद करें.
Play Billing Lab की मदद से टेस्ट करने के बारे में ज़्यादा जानें. इसके अलावा, लाइसेंस टेस्टर की मदद से इन-ऐप्लिकेशन बिलिंग की जांच करने के बारे में ज़्यादा जानने के लिए, सहायता केंद्र पर जाएं.
9. बधाई हो!
आपने यह कोडलैब पूरा कर लिया है. अब आपके पास अपने ऐप्लिकेशन से कमाई करने की रणनीति को ऑप्टिमाइज़ करने के लिए, उपयोगकर्ता अनुभव को बेहतर बनाने का विकल्प है. इससे उपयोगकर्ता की संतुष्टि, खरीदारी के कन्वर्ज़न, और सदस्यों के चर्न आउट में सुधार होगा.
डेवलपर से जुड़ी रीयल-टाइम सूचनाओं और Play Billing Lab के साथ काम करने वाले ऐप्लिकेशन का इस्तेमाल करके, एक बार की जाने वाली खरीदारी और सदस्यताओं, दोनों के लिए खरीदारी के लाइफ़साइकल से जुड़े इवेंट को पहले से ही हल किया जा सकता है.
इन टूल की मदद से, उपयोगकर्ताओं को वापस लाने की रणनीतियों को असरदार तरीके से लागू किया जा सकता है. साथ ही, इंटिग्रेशन से जुड़ी समस्याओं को तुरंत हल किया जा सकता है. इनसे, उपयोगकर्ता अनुभव और रेवेन्यू के सोर्स को बेहतर बनाया जा सकता है, ताकि आप अपने ऐप्लिकेशन या गेम को भरोसे के साथ लॉन्च कर सकें.
इस कोडलैब को पूरा करने के बाद, अब आपके पास खरीदारी की पूरी प्रोसेस को मैनेज करने और Play Billing Lab की मदद से, लागू किए गए तरीके की पूरी तरह से जांच करने की स्किल हो गई है. इससे, उपयोगकर्ताओं को बेहतर अनुभव मिलता है और Google Play पर कमाई करने की संभावना बढ़ती है.