आपने अपने Android ऐप्लिकेशन या प्रोग्रेसिव वेब ऐप्लिकेशन में Play Billing को लागू कर दिया है और आपके उपयोगकर्ता, डिजिटल सामान खरीद पा रहे हैं. अब समय है कि आप अपने बैकएंड सर्वर में, Play Billing के कुछ मुख्य कॉम्पोनेंट लागू करें.
Google Play डेवलपर API
Google Play Developer API के दो कॉम्पोनेंट हैं: Subscriptions and In-app Purchases API और Publishing API. Subscriptions and In-app Purchases API में, प्रॉडक्ट और खरीदारी को मैनेज करने के लिए ये REST संसाधन शामिल हैं:
inappproducts: ऐप्लिकेशन में खरीदने के लिए उपलब्ध प्रॉडक्ट और सदस्यताओं के कैटलॉग को मैनेज करनाpurchases.products: ऐप्लिकेशन में खरीदने के लिए उपलब्ध प्रॉडक्ट की खरीदारी की स्थितिpurchases.subscriptions: सदस्यताएं खरीदने की स्थिति और उन्हें मैनेज करने की सुविधा
Google Play Developer API को सीधे तौर पर REST API के तौर पर इस्तेमाल किया जा सकता है. इसके अलावा, क्लाइंट लाइब्रेरी की मदद से, डेवलपमेंट को तुरंत शुरू किया जा सकता है. इस सुविधा के साथ काम करने वाली सभी भाषाओं के लिए क्लाइंट लाइब्रेरी यहां देखी जा सकती हैं. अपने एपीआई प्रोजेक्ट को लिंक करने और एपीआई ऐक्सेस क्लाइंट सेट अप करने के लिए, Google Play Developer API की शुरू करने से जुड़ी गाइड को पढ़ें.
ऐप्लिकेशन में खरीदने के लिए सभी प्रॉडक्ट की सूची बनाना
फ़्रंटएंड (आपके Android ऐप्लिकेशन या प्रोग्रेसिव वेब ऐप्लिकेशन पर) पर उपलब्ध प्रॉडक्ट के बारे में जानकारी के लिए क्वेरी करते समय, आपको प्रॉडक्ट आईडी की सूची देनी होगी. इसे अपने बैक-एंड सर्वर में लागू किया जा सकता है. इसके लिए, Play Developer API inappproducts.list तरीके का इस्तेमाल करें. इससे, Play Console में बनाए गए सभी इन-ऐप प्रॉडक्ट और सदस्यताएं दिखेंगी. हर प्रॉडक्ट के status की जांच करें और सिर्फ़ active वाले प्रॉडक्ट को अपने ऐप्लिकेशन क्लाइंट को भेजें.
एनटाइटलमेंट देने से पहले, खरीदारी की पुष्टि करना
अपने Android ऐप्लिकेशन या प्रोग्रेसिव वेब ऐप्लिकेशन में Play Billing को लागू करने का एक अहम हिस्सा यह पक्का करना है कि उपयोगकर्ता को एनटाइटलमेंट देने से पहले, खरीदारी की पुष्टि की जा रही हो. किसी उपयोगकर्ता को एनटाइटलमेंट देने का मतलब है कि आपने उसे उस आइटम से जुड़े फ़ायदों या कॉन्टेंट का ऐक्सेस दिया है जिसे उसने खरीदा है. इसके लिए, संवेदनशील डेटा को मैनेज करना ज़रूरी होता है. इसलिए, इसे बैकएंड सर्वर पर मैनेज किया जाना चाहिए.
Google Play Developer API, purchases.products:get और purchases.subscriptions:get तरीके उपलब्ध कराता है. इनका इस्तेमाल, ऐप्लिकेशन में वापस पाए गए या आपके बैक-एंड सर्वर पर सेव किए गए खरीदारी के टोकन के साथ करें. इससे यह पुष्टि की जा सकेगी कि खरीदारी असली है. आपको अपने बैक-एंड सर्वर पर खरीदारी के टोकन को ट्रैक करना चाहिए, ताकि अतिरिक्त खरीदारी और उपयोगकर्ता के एनटाइटलमेंट की पुष्टि की जा सके. आपको कौनसे चरण पूरे करने चाहिए, इस बारे में ज़्यादा जानने के लिए, खरीदारी की पुष्टि करने से जुड़ा Google Play Billing का दस्तावेज़ देखें.
इन-ऐप्लिकेशन खरीदारी
क्लाइंट से खरीदारी का टोकन मिलने के बाद, आपके बैकएंड को Google Play Developer API को कॉल करना चाहिए. साथ ही, यह पुष्टि करनी चाहिए कि टोकन का इस्तेमाल पहले ही न किया गया हो. मान्य खरीदारी के लिए, purchaseState फ़ील्ड की वैल्यू 1 होती है.
अगर खरीदारी मान्य है, तो क्लाइंट को सर्वर से जवाब मिलने के बाद, खरीदारी की पुष्टि करनी चाहिए और एनटाइटलमेंट देना चाहिए.
सदस्यताएं खरीदना
इन-ऐप्लिकेशन खरीदारी की पुष्टि करने की तरह ही, आपके बैक-एंड सर्वर को क्लाइंट से खरीदारी का टोकन मिलने के बाद, Google Play Developer API को कॉल करना चाहिए. साथ ही, यह पुष्टि करनी चाहिए कि सदस्यता अब भी मान्य है.
अगर सदस्यता के expiryTimeMillis फ़ील्ड में मौजूद समय, मौजूदा समय से ज़्यादा है, तो आपके क्लाइंट को एनटाइटलमेंट देना चाहिए.
यह linkedPurchaseToken फ़ील्ड की जांच करने का भी सही समय है. साथ ही, अपग्रेड, डाउनग्रेड, और सदस्यता से जुड़े अन्य फ़्लो को मैनेज करने के लिए, अपने सदस्यता डेटाबेस को सही तरीके से अपडेट करें. इस पेज पर बाकी जानकारी दी गई है.
बैकएंड की स्थिति को अपडेट रखना
अगर आपका ऐप्लिकेशन अलग-अलग प्लैटफ़ॉर्म पर उपलब्ध है, तो बैक-एंड सर्वर पर उपयोगकर्ताओं और उनकी खरीदारी को ट्रैक करें. इससे यह पक्का किया जा सकेगा कि उपयोगकर्ता, उन सभी डिवाइसों और प्लैटफ़ॉर्म पर एक ही तरह के एनटाइटलमेंट ऐक्सेस कर पाएं जिन पर वे आपका ऐप्लिकेशन इस्तेमाल करते हैं.
इसके लिए, एक डेटाबेस का इस्तेमाल किया जा सकता है. इसमें उपयोगकर्ताओं और उनके मौजूदा एनटाइटलमेंट का रिकॉर्ड रखा जाता है. इसके बाद, जैसे-जैसे वे खरीदारी करते हैं या अपने एनटाइटलमेंट का इस्तेमाल करते हैं वैसे-वैसे इसे अपडेट करें. जब उपयोगकर्ता किसी दूसरे प्लैटफ़ॉर्म से आपके ऐप्लिकेशन को ऐक्सेस करता है, तब आपको बैकएंड से उसके सही एनटाइटलमेंट वापस मिल सकते हैं. इससे उपयोगकर्ता को ऐप्लिकेशन ऐक्सेस करने की अनुमति मिल जाती है.
सदस्यता की स्थिति में होने वाले बदलावों को मैनेज करना
सदस्यता की पूरी अवधि के दौरान, उसकी स्थिति में कई बार बदलाव हो सकते हैं. आपको हर बदलाव के हिसाब से कार्रवाई करनी चाहिए. अपने बैकएंड को हमेशा अप-टू-डेट रखने के लिए, सदस्यता का लाइफ़साइकल मैनेज करने के बारे में ज़्यादा जानें.
Subscription linkedPurchaseToken
सदस्यताओं के दस्तावेज़ में बताया गया है कि Google Play पर खरीदारी करने के हर नए फ़्लो (शुरुआती खरीदारी, अपग्रेड या डाउनग्रेड) से एक नया परचेज़ टोकन जनरेट होता है. linkedPurchaseToken फ़ील्ड की मदद से यह पता लगाया जा सकता है कि एक ही सदस्यता के लिए, एक से ज़्यादा परचेज़ टोकन कब इस्तेमाल किए गए.
हर बार सदस्यता की पुष्टि करते समय, आपके बैकएंड को यह जांच करनी चाहिए कि linkedPurchaseToken फ़ील्ड सेट है या नहीं. अगर ऐसा है, तो उस फ़ील्ड में मौजूद वैल्यू, उस पिछले टोकन को दिखाती है जिसे अब बदल दिया गया है. आपको पिछले टोकन को तुरंत अमान्य के तौर पर मार्क करना चाहिए, ताकि उपयोगकर्ता आपके कॉन्टेंट को ऐक्सेस करने के लिए इसका इस्तेमाल न कर पाएं.
उदाहरण के लिए, जब बैकएंड को पहली खरीदारी के लिए परचेज़ टोकन A मिलता है और linkedPurchaseToken फ़ील्ड खाली होता है, तो वह उस टोकन के लिए एनटाइटलमेंट चालू कर देता है. अपग्रेड के बाद, जब बैकएंड को नया परचेज़ टोकन B मिलता है, तो वह linkedPurchaseToken फ़ील्ड की जांच करता है. इससे उसे पता चलता है कि यह A पर सेट है. इसलिए, वह परचेज़ टोकन A के लिए एनटाइटलमेंट बंद कर देता है.

linkedPurchaseToken को लागू करने के बारे में ज़्यादा जानने के लिए, डुप्लीकेट सदस्यताएं रोकने के लिए linkedPurchaseToken को सही तरीके से लागू करना लेख पढ़ें.
डेवलपर से जुड़ी रीयल-टाइम सूचनाएं
Google Play Developer API का purchases.subscriptions:get तरीका, उपयोगकर्ताओं की सदस्यताओं को मैनेज करने के लिए सबसे भरोसेमंद सोर्स है. अगर आपने अपने सदस्यों की स्थिति को सुरक्षित बैकएंड सर्वर पर मैनेज किया है, तो आपको Google के सर्वर के साथ इसकी स्थिति को सिंक करके रखना चाहिए. हालांकि, Google Play Developer API को बार-बार पोल करने से, एपीआई कोटा की पाबंदियां लागू हो सकती हैं. साथ ही, उपयोगकर्ता की ज़रूरी कार्रवाइयों (जैसे कि सदस्यता रद्द करना या अपग्रेड करना) के लिए सूचनाएं मिलने में देरी हो सकती है.
डेवलपर को रीयल-टाइम में सूचनाएं (आरटीडीएन), Google Play Billing की एक सुविधा है.इसकी मदद से, जब किसी सदस्य के एनटाइटलमेंट की स्थिति में बदलाव होता है, तब आपके सर्वर को तुरंत सूचना भेजी जाती है. जैसे, सदस्यता खरीदी गई, सदस्यता रद्द की गई, सदस्यता पर रोक लगाई गई. आरटीडीएन की मदद से, आपको Google Play डेवलपर API (एपीआई) को नियमित तौर पर पोल करने की ज़रूरत नहीं पड़ती. इसके बजाय, सिर्फ़ इन सूचनाओं का जवाब देकर, अपने सदस्य के डेटाबेस को सिंक किया जा सकता है.
आपके बैक-एंड सर्वर को, सदस्यता की स्थिति पर असर डालने वाले इवेंट के लिए SubscriptionNotification मिलेगा. जैसे, रिन्यूअल और रद्द करने की प्रोसेस. इसके बाद, सूचना में मौजूद खरीदारी के टोकन के साथ Google Play Developer API को कॉल करें, ताकि आपको सदस्यता की पूरी स्थिति मिल सके. साथ ही, अपने बैकएंड की स्थिति को अपडेट किया जा सके.
इन निर्देशों का पालन करके, अपने ऐप्लिकेशन के लिए आरटीडीएन कॉन्फ़िगर की जा सकती हैं. इसके बाद, आपको इन मैसेज को देखने के लिए, अपना बैक-एंड सर्वर सेट अप करना होगा.
ज़्यादा जानकारी के लिए, आरटीडीएन का पूरा रेफ़रंस देखें.