इस दस्तावेज़ में, सदस्यता के लाइफ़साइकल इवेंट मैनेज करने का तरीका बताया गया है. जैसे, रिन्यूअल और समयसीमा खत्म होना. इसमें सदस्यता से जुड़ी अन्य सुविधाओं के बारे में भी बताया गया है. जैसे, प्रमोशन ऑफ़र करना और उपयोगकर्ताओं को अपनी सदस्यताएं मैनेज करने की अनुमति देना.
अगर आपने अपने ऐप्लिकेशन के लिए सदस्यता वाले प्रॉडक्ट कॉन्फ़िगर नहीं किए हैं, तो अपने प्रॉडक्ट बनाना और उन्हें कॉन्फ़िगर करना लेख पढ़ें.
सदस्यता अवलोकन
सदस्यता, बार-बार होने वाला एक ऐसा लेन-देन है जो उपयोगकर्ताओं को कुछ खास एनटाइटलमेंट देता है. एनटाइटलमेंट, ऐसे फ़ायदे होते हैं जिनका इस्तेमाल, उपयोगकर्ता तय समयावधि के दौरान कर सकते हैं. उदाहरण के लिए, सदस्यता लेने पर किसी व्यक्ति को प्रीमियम ऐक्सेस मिल सकता है.
बुनियादी प्लान और ऑफ़र की मदद से, एक ही सदस्यता प्रॉडक्ट के लिए कई कॉन्फ़िगरेशन बनाए जा सकते हैं. उदाहरण के लिए, उन लोगों के लिए शुरुआती ऑफ़र बनाया जा सकता है जिन्होंने कभी आपके ऐप्लिकेशन की सदस्यता नहीं ली है. इसी तरह, उन लोगों के लिए अपग्रेड करने का ऑफ़र बनाया जा सकता है जिन्होंने पहले से ही सदस्यता ली हुई है.
सदस्यता वाले प्रॉडक्ट, बुनियादी प्लान, और ऑफ़र के बारे में ज़्यादा जानकारी पाने के लिए, Play Console के सहायता केंद्र में मौजूद दस्तावेज़ देखें.
Play Billing Library में, सदस्यता के इन टाइप का इस्तेमाल किया जा सकता है:
एक आइटम वाली सदस्यता - इस तरह की सदस्यता में, एक एनटाइटलमेंट के लिए एक आइटम होता है. उदाहरण के लिए, संगीत स्ट्रीम करने वाली किसी सेवा की सदस्यता.
ऐड-ऑन के साथ सदस्यता - इस तरह की सदस्यता में, एक खरीदारी में कई अलग-अलग एनटाइटलमेंट बंडल किए जा सकते हैं. उदाहरण के लिए, संगीत स्ट्रीमिंग सेवा और वीडियो स्ट्रीमिंग सेवा, दोनों की सदस्यता. ऐड-ऑन वाली सदस्यता के बारे में जानकारी पाने के लिए, ऐड-ऑन वाली सदस्यताएं लेख पढ़ें.
प्रीपेड प्लान इंटिग्रेशन
प्रीपेड प्लान की समयसीमा खत्म होने पर, ये अपने-आप रिन्यू नहीं होते. सदस्यता के फ़ायदे बिना किसी रुकावट के पाने के लिए, उपयोगकर्ता को उसी सदस्यता के लिए प्रीपेड प्लान को टॉप-अप करना होगा.
टॉप-अप के लिए, बिलिंग फ़्लो को उसी तरह लॉन्च करें जैसे आपने मूल खरीदारी के लिए किया था. आपको यह बताने की ज़रूरत नहीं है कि खरीदारी टॉप-अप है.
प्रीपेड प्लान के टॉप-अप के लिए, हमेशा CHARGE_FULL_PRICE
बदलाव मोड का इस्तेमाल किया जाता है. आपको इस मोड को अलग से सेट करने की ज़रूरत नहीं होती.
उपयोगकर्ता से, पूरी बिलिंग अवधि का शुल्क तुरंत ले लिया जाता है. साथ ही, टॉप-अप में बताई गई अवधि के लिए, सदस्यता के फ़ायदे पाने का उसका अधिकार बढ़ा दिया जाता है.
टॉप-अप के बाद, Purchase
नतीजे वाले ऑब्जेक्ट में मौजूद इन फ़ील्ड को अपडेट किया जाता है, ताकि हाल ही में किए गए टॉप-अप की जानकारी दिख सके:
- आदेश आईडी
- खरीदारी का समय
- सिग्नेचर
- खरीदी टोकन
- स्वीकार करें
यहां दिए गए Purchase
फ़ील्ड में हमेशा वही डेटा होता है जो मूल खरीदारी में मौजूद होता है:
- पैकेज का नाम
- खरीदारी की स्थिति
- प्रॉडक्ट
- अपने-आप रिन्यू होने वाली सदस्यता
पैसे पहले चुकाकर की गई खरीदारी की पुष्टि
अपने-आप रिन्यू होने वाली सदस्यताओं की तरह, प्रीपेड प्लान खरीदने के बाद आपको इसकी पुष्टि करनी होगी. पहली बार की गई खरीदारी और किसी भी टॉप-अप की पुष्टि करना ज़रूरी है. ज़्यादा जानकारी के लिए, खरीदारी प्रोसेस करना लेख पढ़ें.
प्रीपेड प्लान की अवधि कम हो सकती है. इसलिए, यह ज़रूरी है कि खरीदारी की पुष्टि जल्द से जल्द की जाए.
एक हफ़्ते या इससे ज़्यादा अवधि वाले प्रीपेड प्लान के लिए, तीन दिनों के अंदर पुष्टि करनी होगी.
अगर प्रीपेड प्लान की अवधि एक हफ़्ते से कम है, तो उसकी सूचना प्लान की अवधि के आधे समय में देनी होगी. उदाहरण के लिए, डेवलपर के पास तीन दिन के प्रीपेड प्लान को स्वीकार करने के लिए डेढ़ दिन का समय होता है.
किस्तों में सदस्यता लेने की सुविधा का इंटिग्रेशन
किस्तों में सदस्यता लेने की सुविधा, सदस्यता का एक ऐसा टाइप है जिसमें उपयोगकर्ता, सदस्यता के लिए एक बार में पूरा शुल्क चुकाने के बजाय, एक तय समयावधि में कई किस्तों में पेमेंट करते हैं.
किस्तों में सदस्यता लेने के लिए, इन बातों का ध्यान रखें:
- देश के हिसाब से उपलब्धता: किस्तों में सदस्यता लेने की सुविधा सिर्फ़ ब्राज़ील, फ़्रांस, इटली, और स्पेन में उपलब्ध है. इस सुविधा की उपलब्धता के बारे में जानने के लिए, Console देखें.
- कीमत सेट करना: Console पर किस्त वाली सदस्यता के लिए कीमत सेट करते समय, कीमत का मतलब हर महीने चुकाई जाने वाली रकम से होता है. यह, तय की गई समयसीमा के साथ मिलकर, खरीदारी वाली स्क्रीन पर सदस्यता के लिए कुल रकम जनरेट करता है.
- वह अवधि जिसमें सदस्यता रद्द नहीं की जा सकती: सदस्यता लेने के बाद, वह अवधि जिसमें सदस्यता रद्द नहीं की जा सकती. इस दौरान, हर महीने पेमेंट करना ज़रूरी होता है. उदाहरण के लिए, अगर बुनियादी प्लान के लिए 15 महीने की प्रतिबद्धता अवधि है, तो उपयोगकर्ता इस अवधि के दौरान हर महीने 15 बार पेमेंट करेगा.
- रिन्यूअल: किस्तों में सदस्यता लेने के संदर्भ में, "रिन्यूअल" का मतलब, प्रतिबद्धता की अवधि खत्म होना है. यह अवधि, शुरुआती प्रतिबद्धता की अवधि या बाद की प्रतिबद्धता की अवधि हो सकती है. पहली बार साइन अप करने के बाद, पहली बार रिन्यूअल तब होता है, जब बिना रद्द किए सदस्यता जारी रखने की पूरी अवधि खत्म हो जाती है. अगले रिन्यूअल, प्रतिबद्धता की हर अवधि पूरी होने के बाद होते हैं. किस्तों में ली गई सदस्यताओं के लिए, रिन्यूअल के टाइप "हर महीने अपने-आप रिन्यू हो" या "उसी अवधि के लिए अपने-आप रिन्यू हो" हो सकते हैं. "हर महीने अपने-आप रिन्यू होने वाली सदस्यता" के लिए, कोई प्रतिबद्धता नहीं होती. यह प्लान, हर महीने की सदस्यता की तरह काम करता है. इसमें हर महीने की सदस्यता का शुल्क, रिन्यूअल के तौर पर लिया जाता है.
- बिलिंग अवधि: किस्तों में सदस्यता लेने के मामले में, इसका मतलब उस अवधि से है जिसके बाद बार-बार पेमेंट किया जाता है. यह अवधि, बुनियादी प्लान में बताई गई होती है.
- प्लान बदलने और कीमत में बदलाव करने से जुड़ी शर्तें: कीमत में बदलाव करने और सदस्यता रद्द करने के लिए, खरीदार को अपनी सहमति देनी होगी. इसका मतलब है कि अगर कोई उपयोगकर्ता सदस्यता रद्द करना चाहता है या कोई डेवलपर कीमत में बदलाव करना चाहता है, तो ये बदलाव उस अवधि के बाद लागू होंगे जिसमें सदस्यता रद्द नहीं की जा सकती. प्लान बदलने पर, तय की गई कीमत लागू नहीं होती. इसका मतलब है कि प्लान बदलने के लिए, कमिटमेंट पीरियड के खत्म होने का इंतज़ार नहीं करना पड़ता. यह बदलाव, सेट किए गए रिप्लेसमेंट मोड के आधार पर, तुरंत या पेमेंट की अगली तारीख पर लागू हो जाता है.
- एक ही सदस्यता के प्लान में बदलाव करना: किस्तों में पेमेंट के बुनियादी प्लान से, उसी सदस्यता के प्रॉडक्ट के लिए किस्तों में पेमेंट के बिना बुनियादी प्लान पर स्विच करने की अनुमति नहीं है.
डेवलपर से जुड़ी रीयल-टाइम सूचनाएं (आरटीडीएन): अगर उपयोगकर्ता ने तय अवधि के लिए पेमेंट किया है और वह सदस्यता रद्द करता है, तो उसे तुरंत
SUBSCRIPTION_CANCELLATION_SCHEDULED
आरटीडीएन भेजी जाती है. सदस्यता रद्द करने का अनुरोध अभी पूरा नहीं हुआ है. यह अनुरोध, बिना किसी शुल्क के सदस्यता इस्तेमाल करने की अवधि खत्म होने के बाद ही लागू होगा. इसके बाद, अगर उपयोगकर्ता सदस्यता को वापस नहीं लाता है, तोSUBSCRIPTION_CANCELED
औरSUBSCRIPTION_EXPIRED
आरटीडीएन, कमिटमेंट की अवधि खत्म होने पर भेजे जाते हैं.पेमेंट / रेवेन्यू: हर महीने उपयोगकर्ता के पेमेंट करने के बाद, डेवलपर को पेमेंट किया जाता है. हालांकि, इसके लिए वही शर्तें लागू होंगी जो अन्य सभी सदस्यताओं के लिए लागू होती हैं. जब उपयोगकर्ता किस्तों में सदस्यता लेने के लिए साइन अप करता है, तब डेवलपर को ऐडवांस में पेमेंट नहीं किया जाता.
किस्त का पेमेंट न मिलने पर: अगर कोई उपयोगकर्ता सदस्यता के लिए किस्त का पेमेंट नहीं करता है, तो Google और डेवलपर, दोनों ही उस उपयोगकर्ता से बकाया पेमेंट इकट्ठा करने की कोशिश नहीं करेंगे. हालांकि, Google, पेमेंट फिर से करने की सामान्य प्रक्रिया के तहत, लागू होने वाली ग्रेस पीरियड या खाता होल्ड करने की अवधि के दौरान, समय-समय पर पेमेंट फिर से करने की कोशिश कर सकता है. Google, डेवलपर को बकाया किस्तों का पेमेंट करने के लिए ज़िम्मेदार नहीं होगा.
Play Billing Library की उपलब्धता:
installmentDetails
फ़ील्ड सिर्फ़ PBL 7 या उसके बाद के वर्शन के लिए उपलब्ध है. PBL 5 और इसके बाद के वर्शन के लिए,queryProductDetails()
का इस्तेमाल करके किस्तों में सदस्यता का रिफ़ंड दिया जाता है. हालांकि, सदस्यता में किस्त की पूरी जानकारी शामिल नहीं होगी. जैसे, प्लान के लिए किए गए पेमेंट की संख्या.
उपयोगकर्ताओं को सदस्यता मैनेज करने की अनुमति देने के लिए डीप लिंक का इस्तेमाल करना
आपके ऐप्लिकेशन में सेटिंग या प्राथमिकताओं वाली स्क्रीन पर एक लिंक होना चाहिए. इससे लोग अपनी सदस्यताएं मैनेज कर पाएंगे. इस लिंक को अपने ऐप्लिकेशन के नैचुरल लुक और फ़ील में शामिल किया जा सकता है.
अपने ऐप्लिकेशन में, Google Play सदस्यता केंद्र का डीप लिंक शामिल किया जा सकता है. इससे, उन सदस्यताओं को ऐक्सेस किया जा सकेगा जिनकी समयसीमा खत्म नहीं हुई है. इनकी जानकारी पाने के लिए, सदस्यता संसाधन के subscriptionState
फ़ील्ड का इस्तेमाल करें.
इसके आधार पर, Play Store के सदस्यता केंद्र में डीप लिंक करने के कई तरीके हैं.
सदस्यता केंद्र का लिंक
उपयोगकर्ताओं को उस पेज पर भेजने के लिए इस यूआरएल का इस्तेमाल करें जहां उनकी सभी सदस्यताएं दिखती हैं. जैसा कि पहले और दूसरे डायग्राम में दिखाया गया है:
https://play.google.com/store/account/subscriptions


यह डीप लिंक, किसी उपयोगकर्ता को Play Store के सदस्यता केंद्र से रद्द की गई सदस्यता को बहाल करने में मदद कर सकता है.
सदस्यता मैनेज करने वाले किसी पेज का लिंक (सुझाया गया)
अगर आपको सीधे तौर पर, खत्म न हुई सदस्यता के मैनेजमेंट पेज से लिंक करना है, तो खरीदे गए पैकेज का नाम और उससे जुड़ी productId
बताएं. किसी मौजूदा सदस्यता के लिए, प्रोग्राम के हिसाब से productId
तय करने के लिए, अपने ऐप्लिकेशन के बैकएंड से क्वेरी करें. इसके अलावा, किसी उपयोगकर्ता से जुड़ी सदस्यताओं की सूची पाने के लिए, BillingClient.queryPurchasesAsync()
को कॉल करें. हर सदस्यता में, सदस्यता की स्थिति की जानकारी के तौर पर productId
शामिल होता है.
सदस्यता की खरीदारी से जुड़े हर SubscriptionPurchaseLineItem
ऑब्जेक्ट में, productId
वैल्यू होती है. यह वैल्यू, उस सदस्यता से जुड़ी होती है जिसे उपयोगकर्ता ने उस लाइन आइटम में खरीदा है.
लोगों को सदस्यता मैनेज करने की किसी खास स्क्रीन पर ले जाने के लिए, इस यूआरएल का इस्तेमाल करें. साथ ही, "your-sub-product-id" और "your-app-package" को productId
और ऐप्लिकेशन पैकेज के नाम से बदलें:
https://play.google.com/store/account/subscriptions?sku=your-sub-product-id&package=your-app-package
इसके बाद, उपयोगकर्ता पेमेंट के तरीकों को मैनेज कर सकता है. साथ ही, सदस्यता रद्द करने, फिर से सदस्यता लेने, और सदस्यता रोकने जैसी सुविधाओं को ऐक्सेस कर सकता है.
उपयोगकर्ताओं को अपनी सदस्यता अपग्रेड, डाउनग्रेड या बदलने की अनुमति दें
मौजूदा सदस्यों को उनकी ज़रूरतों के हिसाब से, सदस्यता प्लान बदलने के लिए अलग-अलग विकल्प दिए जा सकते हैं:
- अगर आपने सदस्यता के कई टियर बेचे हैं, जैसे कि "बुनियादी" और "प्रीमियम" सदस्यता, तो उपयोगकर्ताओं को टियर स्विच करने की अनुमति दी जा सकती है. इसके लिए, उन्हें किसी दूसरी सदस्यता का बुनियादी प्लान या ऑफ़र खरीदना होगा.
- उपयोगकर्ताओं को बिलिंग की मौजूदा अवधि बदलने की अनुमति दी जा सकती है. जैसे, हर महीने के प्लान से सालाना प्लान पर स्विच करना.
- आपके पास उपयोगकर्ताओं को, अपने-आप रिन्यू होने वाले और प्रीपेड प्लान के बीच स्विच करने की अनुमति देने का विकल्प भी होता है.
इनमें से किसी भी बदलाव को बढ़ावा देने के लिए, सदस्यता के ऑफ़र दिए जा सकते हैं. इससे ज़रूरी शर्तें पूरी करने वाले लोगों को छूट दी जा सकती है. उदाहरण के लिए, महीने के प्लान से सालाना प्लान पर स्विच करने पर, पहले साल के लिए 50% की छूट वाला ऑफ़र बनाया जा सकता है. साथ ही, इस ऑफ़र को सिर्फ़ उन लोगों के लिए उपलब्ध कराया जा सकता है जिन्होंने महीने के प्लान की सदस्यता ली है और इस ऑफ़र को नहीं खरीदा है. ऑफ़र पाने की ज़रूरी शर्तों के बारे में ज़्यादा जानकारी सहायता केंद्र में उपलब्ध है
तीसरी इमेज में, एक ऐप्लिकेशन का उदाहरण दिखाया गया है. इसमें तीन अलग-अलग प्लान दिए गए हैं:

आपका ऐप्लिकेशन, उपयोगकर्ताओं को सदस्यता बदलने के विकल्प देने के लिए, तीसरे फ़िगर जैसी स्क्रीन दिखा सकता है. सभी मामलों में, उपयोगकर्ताओं को यह साफ़ तौर पर बताया जाना चाहिए कि उनका मौजूदा सदस्यता प्लान क्या है और उनके पास इसे बदलने के लिए कौनसे विकल्प हैं.
जब उपयोगकर्ता अपनी सदस्यता को अपग्रेड, डाउनग्रेड या बदलता है, तब आपको बदलाव का तरीका तय करना होता है. इससे यह तय होता है कि पैसे चुकाकर ली गई मौजूदा बिलिंग अवधि के लिए, आनुपातिक तौर पर तय की गई कीमत कैसे लागू की जाएगी. साथ ही, यह भी तय होता है कि एनटाइटलमेंट में बदलाव कब होगा.
बदले जाने के मोड
यहां दी गई टेबल में, उपलब्ध रिप्लेसमेंट मोड और उनके इस्तेमाल के उदाहरण दिए गए हैं. साथ ही, यह भी बताया गया है कि कितने पेमेंट को पूरा माना जाता है.
बदलाव का मोड |
ब्यौरा |
इस्तेमाल का उदाहरण |
किस्तों में सदस्यता बदलने के लिए, किए गए पेमेंट को 'चुका दिया गया' के तौर पर रिकॉर्ड किया गया |
|
सदस्यता को तुरंत अपग्रेड या डाउनग्रेड कर दिया जाता है. बचा हुआ समय, कीमत के अंतर के हिसाब से अडजस्ट किया जाता है. साथ ही, अगली बिलिंग की तारीख को आगे बढ़ाकर, नई सदस्यता के लिए क्रेडिट कर दिया जाता है. यह डिफ़ॉल्ट व्यवहार है. |
बिना किसी अतिरिक्त शुल्क के, ज़्यादा कीमत वाले टियर पर अपग्रेड करें. |
0 |
|
सदस्यता को तुरंत अपग्रेड कर दिया जाता है और बिलिंग साइकल में कोई बदलाव नहीं होता. इसके बाद, उपयोगकर्ता से बचे हुए समय के लिए कीमत का अंतर लिया जाता है. ध्यान दें: यह विकल्प सिर्फ़ सदस्यता अपग्रेड करने के लिए उपलब्ध है. इसमें समय की हर यूनिट के लिए कीमत बढ़ जाती है. |
बिलिंग की तारीख बदले बिना, ज़्यादा कीमत वाले टियर पर अपग्रेड करें. |
1 |
|
सदस्यता को तुरंत अपग्रेड या डाउनग्रेड कर दिया जाता है. साथ ही, उपयोगकर्ता से नए एनटाइटलमेंट के लिए, तुरंत पूरी कीमत ली जाती है. पिछली सदस्यता की बची हुई वैल्यू को या तो उसी एनटाइटलमेंट के लिए आगे बढ़ाया जाता है या किसी दूसरे एनटाइटलमेंट पर स्विच करने के दौरान, उसे समय के हिसाब से बांटा जाता है. ध्यान दें: अगर नई सदस्यता को मुफ़्त में आज़माने की सुविधा या शुरुआती ऑफ़र मिलता है, तो अपग्रेड या डाउनग्रेड करते समय उपयोगकर्ता से कोई शुल्क नहीं लिया जाता. इसके अलावा, उससे शुरुआती ऑफ़र के लिए तय की गई कीमत ली जाती है. |
बिलिंग की कम अवधि से ज़्यादा अवधि पर अपग्रेड करें. |
1 (ध्यान दें: अगर नई सदस्यता को बिना किसी शुल्क के आज़माने की सुविधा है, तो 0) |
|
सदस्यता को तुरंत अपग्रेड या डाउनग्रेड कर दिया जाता है. साथ ही, सदस्यता रिन्यू होने पर नया शुल्क लिया जाता है. बिलिंग साइकल में कोई बदलाव नहीं होता. |
बिना किसी शुल्क के सदस्यता का इस्तेमाल करने की बची हुई अवधि के दौरान, सदस्यता के किसी अपग्रेड किए गए टियर पर अपग्रेड करें. |
0 |
|
सदस्यता को अपग्रेड या डाउनग्रेड सिर्फ़ तब किया जाता है, जब सदस्यता रिन्यू होती है. हालांकि, नई खरीदारी तुरंत जारी कर दी जाती है. इसमें ये दो आइटम शामिल होते हैं:
ध्यान दें: किस्तों में सदस्यता लेने पर, प्लान में बदलाव अगले पेमेंट की तारीख से लागू होता है. |
कम कीमत वाले टियर पर डाउनग्रेड करें. |
1 |
अपग्रेड या डाउनग्रेड करने के ऑफ़र के अलग-अलग अपसेल और विनबैक ऐप्लिकेशन के बारे में ज़्यादा जानने के लिए, ऑफ़र और प्रमोशन की गाइड पढ़ें.
किसी खरीदारी के लिए, रिप्लेसमेंट मोड सेट करना
अपनी प्राथमिकताओं और कारोबार के लॉजिक के आधार पर, अलग-अलग तरह की सदस्यता ट्रांज़िशन के लिए, सदस्यता बदलने के अलग-अलग मोड का इस्तेमाल किया जा सकता है. इस सेक्शन में, सदस्यता में बदलाव होने पर, सदस्यता बदलने का मोड सेट करने का तरीका बताया गया है. साथ ही, इस पर लागू होने वाली सीमाएं भी बताई गई हैं.
दोबारा सदस्यता लेना या एक ही सदस्यता के तहत प्लान बदलना
Google Play Console में, डिफ़ॉल्ट रूप से बदलने का मोड तय किया जा सकता है. इस सेटिंग की मदद से, यह चुना जा सकता है कि अगर मौजूदा सदस्य, उसी सदस्यता के लिए कोई और बुनियादी प्लान या ऑफ़र खरीदते हैं या सदस्यता रद्द करने के बाद फिर से सदस्यता लेते हैं, तो उनसे शुल्क कब लेना है. उपलब्ध विकल्प ये हैं: तुरंत शुल्क लें, जो CHARGE_FULL_PRICE
के बराबर है. इसके अलावा, बिलिंग की अगली तारीख पर शुल्क लें, जो WITHOUT_PRORATION
के बराबर है. एक ही सदस्यता के बुनियादी प्लान के बीच स्विच करते समय, ये ही दो मोड काम के होते हैं.
उदाहरण के लिए, अगर किसी उपयोगकर्ता के सदस्यता रद्द करने के बाद, लेकिन सदस्यता खत्म होने से पहले, उसी प्लान के लिए विनबैक ऑफ़र लागू किया जा रहा है, तो नई खरीदारी को सामान्य खरीदारी के तौर पर प्रोसेस किया जा सकता है. इसके लिए, SubscriptionUpdateParams
में कोई वैल्यू डालने की ज़रूरत नहीं है. सिस्टम, सदस्यता में कॉन्फ़िगर किए गए डिफ़ॉल्ट रिप्लेसमेंट मोड का इस्तेमाल करता है. साथ ही, पुरानी खरीदारी से नई खरीदारी में प्लान को अपने-आप बदल देता है.
सदस्यताओं के बीच प्लान स्विच करना या डिफ़ॉल्ट रिप्लेसमेंट मोड को बदलना
अगर उपयोगकर्ता सदस्यता वाले प्रॉडक्ट बदल रहा है—कोई दूसरी सदस्यता खरीद रहा है—या अगर आपको किसी भी वजह से, डिफ़ॉल्ट तौर पर सदस्यता बदलने के मोड को बदलना है, तो खरीदारी के फ़्लो के पैरामीटर के तौर पर, रनटाइम पर प्रोरेट की गई दर तय करें.
रंटाइम खरीदारी के फ़्लो कॉन्फ़िगरेशन के हिस्से के तौर पर SubscriptionUpdateParams
को सही तरीके से उपलब्ध कराने के लिए, इन पाबंदियों का ध्यान रखें:
- अपग्रेड करने, डाउनग्रेड करने या एक ही सदस्यता को प्रीपेड प्लान में बदलने के लिए, प्रीपेड प्लान, अपने-आप रिन्यू होने वाले प्लान या किस्तों में पेमेंट करने वाले प्लान से सिर्फ़
CHARGE_FULL_PRICE
मोड का इस्तेमाल किया जा सकता है. अगर आपने कोई दूसरा रिप्लेसमेंट मोड चुना है, तो खरीदारी पूरी नहीं होगी और उपयोगकर्ता को गड़बड़ी का मैसेज दिखेगा. - एक ही सदस्यता के तहत, प्रीपेड प्लान या अपने-आप रिन्यू होने वाले प्लान से अपने-आप रिन्यू होने वाले प्लान पर स्विच करने के लिए, आनुपातिक शुल्क के मान्य मोड
CHARGE_FULL_PRICE
औरWITHOUT_PRORATION
हैं. अगर आपने कोई दूसरा प्रोरेशन मोड तय किया है, तो खरीदारी नहीं हो पाएगी और उपयोगकर्ता को गड़बड़ी का मैसेज दिखेगा. - एक ही सदस्यता वाले प्रॉडक्ट के लिए, किस्तों में पैसे चुकाने वाले बुनियादी प्लान से बिना किस्तों वाले बुनियादी प्लान पर स्विच करने की अनुमति नहीं है.
बदलाव के उदाहरण और व्यवहार
हर प्रोरेशन मोड के काम करने का तरीका समझने के लिए, यहां दिया गया उदाहरण देखें:
सैमवाइज़ ने Country Gardener ऐप्लिकेशन से ऑनलाइन कॉन्टेंट की सदस्यता ली है. उसने कॉन्टेंट के टियर 1 वर्शन की सदस्यता ली है. इसके लिए, वह हर महीने शुल्क चुकाता है. इसमें सिर्फ़ टेक्स्ट होता है. इस सदस्यता के लिए, उसे हर महीने 2 डॉलर चुकाने पड़ते हैं. यह हर महीने की पहली तारीख को रिन्यू होती है.
सैमवाइज़ ने 15 अप्रैल को, टियर 2 की सालाना सदस्यता को अपग्रेड करने का विकल्प चुना. इसमें वीडियो अपडेट शामिल हैं और इसकी कीमत 36 डॉलर प्रति साल है.
सदस्यता अपग्रेड करते समय, डेवलपर को प्रोरेटिंग मोड चुनना होता है. यहां दी गई सूची में बताया गया है कि हर प्रोरेशन मोड, सैमवाइज़ की सदस्यता पर कैसे असर डालता है:
WITH_TIME_PRORATION
सैमवाइज़ की टियर 1 सदस्यता तुरंत खत्म हो जाएगी. ऐसा इसलिए हुआ, क्योंकि उन्होंने पूरे महीने (1 से 30 अप्रैल) के लिए सदस्यता ली थी. हालांकि, उन्होंने सदस्यता की अवधि के बीच में ही अपग्रेड कर लिया था. इसलिए, उन्हें आधे महीने की सदस्यता (1 डॉलर) का शुल्क, नई सदस्यता के लिए देना पड़ा. हालांकि, नई सदस्यता के लिए हर साल 36 डॉलर चुकाने होते हैं. इसलिए, 1 डॉलर के क्रेडिट बैलेंस से सिर्फ़ 10 दिनों (16 से 25 अप्रैल) के लिए सदस्यता ली जा सकती है. इसलिए, 26 अप्रैल को उससे नई सदस्यता के लिए 36 डॉलर लिए जाते हैं. इसके बाद, हर साल 26 अप्रैल को उससे 36 डॉलर लिए जाते हैं.
खरीदारी पूरी होने के तुरंत बाद, आपको अपने ऐप्लिकेशन के PurchasesUpdatedListener
को कॉल करना चाहिए. साथ ही, queryPurchasesAsync()
कॉल के हिस्से के तौर पर, नई खरीदारी को वापस पाने में सक्षम होना चाहिए. आपके बैकएंड को तुरंत SUBSCRIPTION_PURCHASED
डेवलपर से जुड़ी रीयल टाइम सूचना मिलती है.
CHARGE_PRORATED_PRICE
इस मोड का इस्तेमाल किया जा सकता है, क्योंकि समय की हर इकाई के लिए टियर 2 की सदस्यता की कीमत (36 डॉलर/साल = 3 डॉलर/महीना), समय की हर इकाई के लिए टियर 1 की सदस्यता की कीमत (2 डॉलर/महीना) से ज़्यादा है. सैमवाइज़ की टियर 1 सदस्यता तुरंत खत्म हो जाएगी. क्योंकि उन्होंने पूरे महीने के लिए सदस्यता ली थी, लेकिन सिर्फ़ आधे महीने तक इसका इस्तेमाल किया. इसलिए, उन्हें नए प्लान के लिए आधे महीने की सदस्यता (1 डॉलर) का शुल्क देना होगा. हालांकि, नई सदस्यता का शुल्क 36 डॉलर/साल है. इसलिए, बचे हुए 15 दिनों के लिए 1.50 डॉलर का शुल्क लगेगा. इसलिए, उससे नई सदस्यता के लिए 0.50 डॉलर का अंतर लिया जाएगा. सैमवाइज़ से 1 मई को, सदस्यता के नए टियर के लिए 36 डॉलर का शुल्क लिया जाता है. इसके बाद, हर साल 1 मई को 36 डॉलर का शुल्क लिया जाता है.
खरीदारी पूरी होने के तुरंत बाद, आपको अपने ऐप्लिकेशन के PurchasesUpdatedListener
को कॉल करना चाहिए. साथ ही, queryPurchasesAsync()
कॉल के हिस्से के तौर पर, नई खरीदारी को वापस पाने में सक्षम होना चाहिए. आपके बैकएंड को तुरंत SUBSCRIPTION_PURCHASED
डेवलपर से जुड़ी रीयल टाइम सूचना मिलती है.
WITHOUT_PRORATION
सैमवाइज़ की टियर 1 सदस्यता को बिना किसी अतिरिक्त शुल्क के तुरंत टियर 2 में अपग्रेड कर दिया जाता है. इसके बाद, 1 मई को उससे सदस्यता के नए टियर के लिए 36 डॉलर लिए जाते हैं. साथ ही, अगले साल 1 मई को भी उससे 36 डॉलर लिए जाते हैं.
खरीदारी पूरी होने के तुरंत बाद, आपको अपने ऐप्लिकेशन के PurchasesUpdatedListener
को कॉल करना चाहिए. साथ ही, queryPurchasesAsync()
कॉल के हिस्से के तौर पर, नई खरीदारी को वापस पाने में सक्षम होना चाहिए. आपके बैकएंड को तुरंत SUBSCRIPTION_PURCHASED
डेवलपर से जुड़ी रीयल टाइम सूचना मिलती है.
DEFERRED
सैमवाइज़ की टियर 1 सदस्यता 30 अप्रैल को खत्म हो जाएगी. सैमवाइज़ ने 1 मई को टियर 2 की सदस्यता ली. इसके लिए, उससे 36 डॉलर का शुल्क लिया गया.
खरीदारी पूरी होने के तुरंत बाद, आपको अपने ऐप्लिकेशन के PurchasesUpdatedListener
को कॉल करना चाहिए. साथ ही, queryPurchasesAsync()
कॉल के हिस्से के तौर पर, नई खरीदारी को वापस पाने में सक्षम होना चाहिए. आपके बैकएंड को तुरंत SUBSCRIPTION_PURCHASED
डेवलपर से जुड़ी रीयल टाइम सूचना मिलती है. आपको खरीदारी को उसी तरह प्रोसेस करना चाहिए जिस तरह उस समय किसी नई खरीदारी को प्रोसेस किया जाता है. खास तौर पर, इस बात की पुष्टि करें कि आपने नई खरीदारी की है. ध्यान दें कि नई सदस्यता का startTime
, सदस्यता बदलने के समय अपडेट होता है. ऐसा तब होता है, जब पुरानी सदस्यता खत्म हो जाती है. इस समय, आपको नए सदस्यता प्लान के लिए SUBSCRIPTION_RENEWED
आरटीडीएन मिलता है. बदलाव को बाद में लागू करने की सुविधा को मैनेज करें में ReplacementMode.DEFERRED
के काम करने के तरीके के बारे में ज़्यादा जानें.
CHARGE_FULL_PRICE
सैमवाइज़ की टियर 1 सदस्यता तुरंत खत्म हो जाएगी. उसकी टियर 2 सदस्यता आज से शुरू हो गई है और उससे 36 डॉलर का शुल्क लिया गया है. क्योंकि उसने पूरे महीने के लिए पेमेंट किया था, लेकिन सिर्फ़ आधे महीने के लिए सदस्यता का इस्तेमाल किया. इसलिए, आधे महीने की सदस्यता (1 डॉलर) को उसकी नई सदस्यता पर लागू किया गया है. नई सदस्यता की कीमत 36 डॉलर/साल है. इसलिए, उसे सदस्यता की अवधि में एक साल का 1/36वां हिस्सा (~10 दिन) जोड़ दिया जाएगा. इसलिए, सैमवाइज़ को आज से एक साल और 10 दिन बाद 36 डॉलर का शुल्क देना होगा. इसके बाद, उसे हर साल 36 डॉलर चुकाने होंगे.
प्रो-रेटिंग मोड चुनते समय, बदलाव के सुझाव ज़रूर देखें.
ऐप्लिकेशन में सदस्यता में बदलाव ट्रिगर करना
आपका ऐप्लिकेशन, उपयोगकर्ताओं को अपग्रेड या डाउनग्रेड करने का विकल्प दे सकता है. इसके लिए, उसे वही तरीका अपनाना होगा जो खरीदारी का फ़्लो शुरू करने के लिए इस्तेमाल किया जाता है. हालांकि, अपग्रेड या डाउनग्रेड करते समय, आपको मौजूदा सदस्यता, आने वाले समय में (अपग्रेड या डाउनग्रेड की गई) सदस्यता, और इस्तेमाल किए जाने वाले मोड की जानकारी देनी होगी. उदाहरण के लिए, यहां दी गई जानकारी देखें:
Kotlin
val offerToken = productDetails .getSubscriptionOfferDetails(selectedOfferIndex) .getOfferToken() val billingParams = BillingFlowParams.newBuilder().setProductDetailsParamsList( listOf( BillingFlowParams.ProductDetailsParams.newBuilder() .setProductDetails(productDetails) .setOfferToken(offerToken) .build() ) ).setSubscriptionUpdateParams( BillingFlowParams.SubscriptionUpdateParams.newBuilder() .setOldPurchaseToken("old_purchase_token") .setSubscriptionReplacementMode( BillingFlowParams.ReplacementMode.CHARGE_FULL_PRICE ) .build() ).build() billingClient.launchBillingFlow( activity, billingParams ) // ...
Java
String offerToken = productDetails .getSubscriptionOfferDetails(selectedOfferIndex) .getOfferToken(); BillingFlowParams billingFlowParams = BillingFlowParams.newBuilder() .setProductDetailsParamsList( ImmuableList.of( ProductDetailsParams.newBuilder() // fetched via queryProductDetailsAsync .setProductDetails(productDetails) // offerToken can be found in // ProductDetails=>SubscriptionOfferDetails .setOfferToken(offerToken) .build())) .setSubscriptionUpdateParams( SubscriptionUpdateParams.newBuilder() // purchaseToken can be found in Purchase#getPurchaseToken .setOldPurchaseToken("old_purchase_token") .setSubscriptionReplacementMode(ReplacementMode.CHARGE_FULL_PRICE) .build()) .build(); BillingResult billingResult = billingClient.launchBillingFlow(activity, billingFlowParams); // ...
बैटरी बदलने के सुझाव
यहां दी गई टेबल में, प्रोरैटिंग के अलग-अलग उदाहरण दिए गए हैं. साथ ही, हर उदाहरण के लिए हमारा सुझाव भी दिया गया है:
स्थिति | बैटरी बदलने के लिए सुझाया गया मोड | नतीजा |
---|---|---|
ज़्यादा कीमत वाले टियर पर अपग्रेड करना | CHARGE_PRORATED_PRICE |
उपयोगकर्ता को तुरंत ऐक्सेस मिल जाता है. हालांकि, बिलिंग की अवधि वही रहती है. |
कम कीमत वाले टियर पर डाउनग्रेड करना | DEFERRED |
उपयोगकर्ता ने पहले ही ज़्यादा कीमत वाले टियर के लिए पेमेंट कर दिया है. इसलिए, उसे बिलिंग की अगली तारीख तक ऐक्सेस मिलता रहेगा. |
मुफ़्त में आज़माने की सुविधा के दौरान अपग्रेड करना और इसे जारी रखना | WITHOUT_PRORATION |
उपयोगकर्ता, बिना किसी अतिरिक्त शुल्क के, आज़माने की अवधि के बचे हुए समय के लिए, बेहतर टियर पर अपग्रेड करता है. |
मुफ़्त में आज़माने की अवधि के दौरान अपग्रेड करने पर, मुफ़्त में आज़माने की सुविधा का ऐक्सेस खत्म हो जाता है | CHARGE_PRORATED_PRICE |
उपयोगकर्ता को नए टियर का ऐक्सेस तुरंत मिल जाता है. साथ ही, बिना किसी शुल्क के आज़माने की अवधि की बची हुई वैल्यू को भी ट्रांसफ़र कर दिया जाता है. बची हुई वैल्यू का हिसाब, बुनियादी प्लान की कीमत के आधार पर लगाया जाता है. |
सदस्यता बदलने से जुड़ी खरीदारी को मैनेज करना
प्लान में बदलाव करने का मतलब है कि सभी शर्तों और मकसद के लिए, नई खरीदारी की गई है. बिलिंग की प्रोसेस पूरी होने के बाद, इन बदलावों को प्रोसेस किया जाना चाहिए और इस बात की पुष्टि की जानी चाहिए. नई खरीदारी को सही तरीके से प्रोसेस करने के साथ-साथ, आपको उस खरीदारी को बंद करना होगा जिसे बदला जा रहा है.
ऐप्लिकेशन में, इसका व्यवहार किसी नई खरीदारी की तरह ही होता है. आपके ऐप्लिकेशन को PurchasesUpdatedListener
में नई खरीदारी का नतीजा मिलता है. साथ ही, नई खरीदारी queryPurchasesAsync
में उपलब्ध होती है.
जब कोई खरीदारी, मौजूदा खरीदारी की जगह ले लेती है, तब Google Play Developer API, सदस्यता संसाधन में linkedPurchaseToken
दिखाता है. linkedPurchaseToken
में दिए गए टोकन को अमान्य करना न भूलें, ताकि यह पक्का किया जा सके कि आपकी सेवाओं को ऐक्सेस करने के लिए पुराने टोकन का इस्तेमाल न किया जाए. अपग्रेड और डाउनग्रेड की खरीदारी मैनेज करने के बारे में जानकारी पाने के लिए, अपग्रेड, डाउनग्रेड, और फिर से साइन अप करना लेख पढ़ें.
नया परचेज़ टोकन मिलने पर, पुष्टि करने की वही प्रोसेस अपनाएं जो नए परचेज़ टोकन की पुष्टि करने के लिए अपनाई जाती है. Google Play Billing Library से BillingClient.acknowledgePurchase()
या Google Play Developer API से Purchases.subscriptions:acknowledge
का इस्तेमाल करके, इन खरीदारी की पुष्टि करना न भूलें.
बदले गए डिवाइस को डिलीवर करने में लगने वाले समय को मैनेज करना
बदलाव को कुछ समय के लिए रोकने की सुविधा की मदद से, किसी व्यक्ति को नए प्लान पर स्विच करने से पहले, पुराने प्लान में बचे हुए एनटाइटलमेंट का इस्तेमाल करने की अनुमति दी जा सकती है.
नई खरीदारी के लिए ReplacementMode.DEFERRED का इस्तेमाल करने पर, queryPurchasesAsync()
खरीदारी के फ़्लो के बाद एक नया परचेज़ टोकन दिखाता है. यह टोकन, पुराने प्रॉडक्ट से तब तक जुड़ा रहता है, जब तक कि अगले रिन्यूअल की तारीख पर, डिफ़र्ड रिप्लेसमेंट नहीं हो जाता. इसके बाद, नया प्रॉडक्ट वापस कर दिया जाता है.
पहले, इस तरह का उपयोगकर्ता अनुभव, बंद किए गए ProrationMode.DEFERRED
की मदद से हासिल किया जा सकता था. हालांकि, Play Billing Library 6 के साथ ProrationMode.DEFERRED
को बंद कर दिया गया है. नीचे दी गई टेबल से जानें कि व्यवहार में कहां अंतर है:
समय |
ProrationMode.DEFERRED (अब सेवा में नहीं है) |
ReplacementMode.DEFERRED |
खरीदारी का फ़्लो पूरा होने के तुरंत बाद (ऐप्लिकेशन) |
आपके पास पुराने प्लान का एनटाइटलमेंट, रिन्यूअल की अगली तारीख तक रहेगा. यह पक्का करने के लिए कि ऐप्लिकेशन सही एनटाइटलमेंट दे रहा है, नया परचेज़ टोकन नहीं दिख रहा है. इसलिए, इसे अभी प्रोसेस नहीं किया जा सकता. |
नया परचेज़ टोकन दिखता है. इसलिए, इस समय इसे प्रोसेस किया जाना चाहिए. साथ ही, यह भी ध्यान में रखा जाना चाहिए कि टोकन को कब बदला जाना है. |
खरीदारी का फ़्लो पूरा होने के तुरंत बाद (बैकएंड) |
खरीदारी के फ़्लो के बाद, SUBSCRIPTION_PURCHASED आरटीडीएन नहीं भेजा जाता है. बैकएंड को अब तक नई खरीदारी के बारे में पता नहीं चला है. |
SUBSCRIPTION_PURCHASED आरटीडीएन, पुराने product_id के साथ भेजा जाता है. यह आरटीडीएन, नए परचेज़ टोकन के लिए खरीदारी की प्रोसेस पूरी होने के तुरंत बाद भेजा जाता है. नए परचेज़ टोकन के साथ purchases.subscriptionsv2.get तरीके को कॉल करने पर, 'startTime' वाला एक परचेज़ दिखता है. इससे दो लाइन आइटम के साथ खरीदारी का समय पता चलता है:
पुराने परचेज़ टोकन के लिए, SUBSCRIPTION_EXPIRED इवेंट भेजा गया. old परचेज़ टोकन के साथ purchases.subscriptionsv2.get तरीके को कॉल करने पर, यह 'समयसीमा खत्म हो गई' के तौर पर दिखता है. ऐसा इसलिए होता है, क्योंकि पुराने प्लान का एनटाइटलमेंट, बचे हुए समय के लिए नई खरीदारी में ट्रांसफ़र कर दिया जाता है. |
बदले जाने पर - खरीदारी के फ़्लो (ऐप्लिकेशन) के बाद पहला रिन्यूअल |
अब नया परचेज़ टोकन दिख रहा है, इसलिए इसे प्रोसेस किया जाना चाहिए. |
खरीदारी का फ़्लो पूरा होने पर, नई खरीदारी पहले ही प्रोसेस हो जानी चाहिए. इसलिए, ऐप्लिकेशन को यह पक्का करने के अलावा कोई खास कार्रवाई नहीं करनी चाहिए कि सही एनटाइटलमेंट दिया गया है. |
डिवाइस बदलने पर - खरीदारी के फ़्लो के बाद पहला रिन्यूअल (बैकएंड) |
जब पहला SUBSCRIPTION_RENEWED RTDN भेजा जाता है, तब नई खरीदारी को प्रोसेस किया जा सकता है और उसकी पुष्टि की जा सकती है. सदस्यता संसाधन में मौजूद |
नई खरीदारी को प्रोसेस किया गया और इसकी पुष्टि तब की गई, जब नए खरीदारी टोकन के लिए SUBSCRIPTION_PURCHASED आरटीडीएन भेजा गया. इसे 'startTime' के तौर पर रिकॉर्ड किया गया. ReplacementMode.DEFERRED के साथ, पहले रिन्यूअल के लिए वही तरीका अपनाया जाता है जो किसी अन्य रिन्यूअल के लिए अपनाया जाता है. साथ ही, जब यह इवेंट होता है, तब आपको रिप्लेसमेंट के लिए खास लॉजिक को मैनेज करने की ज़रूरत नहीं होती. जब नए परचेज़ टोकन के साथ purchases.subscriptionsv2.get तरीके को कॉल करने पर, दो लाइन आइटम वाली खरीदारी दिखती है:
|
अब से, डेप्रिकेट किए गए ProrationMode.DEFERRED के बजाय ReplacementMode.DEFERRED का इस्तेमाल किया जाना चाहिए. ऐसा इसलिए, क्योंकि यह एनटाइटलमेंट में होने वाले बदलावों के बारे में एक जैसा व्यवहार दिखाता है. हालांकि, यह खरीदारी को मैनेज करने का एक ऐसा तरीका उपलब्ध कराता है जो अन्य नई खरीदारी के व्यवहारों के साथ ज़्यादा मेल खाता है.
ग्राहक मैनेजमेंट
डेवलपर से जुड़ी रीयल-टाइम सूचनाओं का इस्तेमाल करके, यह पता लगाया जा सकता है कि किसी उपयोगकर्ता ने सदस्यता रद्द करने का फ़ैसला कब लिया. जब कोई उपयोगकर्ता सदस्यता रद्द करता है, लेकिन उसकी सदस्यता खत्म होने से पहले, उसे पुश नोटिफ़िकेशन या इन-ऐप्लिकेशन मैसेज भेजे जा सकते हैं. इनमें उसे फिर से सदस्यता लेने के लिए कहा जा सकता है.
किसी उपयोगकर्ता के सदस्यता रद्द करने के बाद, उसे वापस लाने की कोशिश की जा सकती है. इसके लिए, आपके पास दो विकल्प हैं: अपने ऐप्लिकेशन में या Play Store पर. नीचे दी गई टेबल में, सदस्यता से जुड़े अलग-अलग स्थितियों के बारे में बताया गया है. साथ ही, इसमें सदस्यता वापस पाने से जुड़ी कार्रवाइयों और ऐप्लिकेशन की ज़रूरी शर्तों के बारे में भी बताया गया है.
सदस्यता खत्म होने से पहले | सदस्यता की समयसीमा खत्म होने के बाद | |||
इन-ऐप्लिकेशन | Play Store में | इन-ऐप्लिकेशन | Play Store में | |
विनबैक सुविधा | इन-ऐप्लिकेशन सदस्यता | वापस लाएं | इन-ऐप्लिकेशन सदस्यता | फिर से सदस्यता लें |
उपयोगकर्ता चेकआउट प्रोसेस पूरी करता है | हां | नहीं | हां | हां |
उपयोगकर्ता की सदस्यता, उसी एसकेयू से जुड़ी रहती है | उपयोगकर्ता, एक ही या अलग-अलग एसकेयू के लिए साइन अप कर सकता है | हां | उपयोगकर्ता, एक ही या अलग-अलग एसकेयू के लिए साइन अप कर सकता है | हां |
यह कुकी, खरीदारी के लिए नया टोकन बनाती है | हां | नहीं | हां | हां |
डिफ़ॉल्ट रूप से चालू होती है | नहीं | हां, सभी डेवलपर के लिए सहायता ज़रूरी है | नहीं |
ऐसे ऐप्लिकेशन जिनमें Billing Library 2.0 या इसके बाद का वर्शन नहीं है: नहीं Billing Library 2.0 या इसके बाद के वर्शन वाले ऐप्लिकेशन: हां. डेवलपर, Console में जाकर ऑप्ट-आउट कर सकते हैं. |
उपयोगकर्ता से शुल्क कब लिया जाता है |
अगर एक ही एसकेयू का इस्तेमाल किया जा रहा है, तो मौजूदा बिलिंग अवधि खत्म होने पर. अलग-अलग एसकेयू का इस्तेमाल करने पर: यह प्रोरेशन मोड पर निर्भर करता है. |
मौजूदा बिलिंग अवधि खत्म होने पर | तुरंत | तुरंत |
लागू करना ज़रूरी है | अपने ऐप्लिकेशन में फिर से साइन अप करने के लिए यूज़र इंटरफ़ेस (यूआई) उपलब्ध कराएं |
सदस्यता की स्थिति में हुए बदलाव का पता लगाना Play Store पर डीप-लिंक |
अपने ऐप्लिकेशन में, फिर से साइन अप करने के लिए यूज़र इंटरफ़ेस (यूआई) उपलब्ध कराएं | ऐप्लिकेशन के बाहर जाकर की जाने वाली खरीदारी मैनेज करना |
सदस्यता खत्म होने से पहले - ऐप्लिकेशन में
जिन सदस्यताओं को रद्द कर दिया गया है, लेकिन उनकी समयसीमा अभी खत्म नहीं हुई है उनके लिए, सदस्यों को अपने ऐप्लिकेशन में सदस्यता बहाल करने की अनुमति दी जा सकती है. इसके लिए, आपको इन-ऐप्लिकेशन खरीदारी का वही तरीका अपनाना होगा जो नए सदस्यों के लिए इस्तेमाल किया जाता है. पक्का करें कि आपके यूज़र इंटरफ़ेस (यूआई) में यह दिखे कि उपयोगकर्ता के पास पहले से कोई सदस्यता है. उदाहरण के लिए, आपको फिर से चालू करें बटन के साथ, उपयोगकर्ता की सदस्यता के खत्म होने की मौजूदा तारीख और बार-बार ली जाने वाली कीमत दिखानी पड़ सकती है.
ज़्यादातर मामलों में, आपको उपयोगकर्ता को वही कीमत और एसकेयू ऑफ़र करना होगा जिसकी सदस्यता उसने पहले से ली हुई है. जैसे:
- उसी SKU का इस्तेमाल करके, सदस्यता खरीदने की नई प्रोसेस शुरू करें.
- नई सदस्यता, पुरानी सदस्यता की जगह ले लेती है. साथ ही, यह सदस्यता खत्म होने की उसी तारीख को रिन्यू होती है. पुरानी सदस्यता को तुरंत 'समयसीमा खत्म हो गई' के तौर पर मार्क कर दिया जाता है.
- उदाहरण के लिए, अकिलिस ने Example Music App की सदस्यता ली है और यह 1 अगस्त को खत्म होने वाली है. इसके बाद, 10 जुलाई को वह एक महीने की सदस्यता को उसी कीमत पर फिर से रिन्यू करता है. नई सदस्यता के लिए, बचे हुए क्रेडिट के हिसाब से शुल्क लिया जाता है. यह सदस्यता तुरंत चालू हो जाती है और इसका रिन्यूअल 1 अगस्त को होता है.
अगर आपको कोई दूसरी कीमत ऑफ़र करनी है, जैसे कि मुफ़्त में आज़माने की नई सुविधा या वापस आने वाले उपयोगकर्ताओं के लिए छूट, तो उपयोगकर्ता को कोई दूसरा एसकेयू ऑफ़र करें:
- बदलाव के मोड
WITHOUT_PRORATION
का इस्तेमाल करके, अलग एसकेयू के साथ अपग्रेड या डाउनग्रेड करें. - नई सदस्यता, पुरानी सदस्यता की जगह ले लेती है. साथ ही, यह सदस्यता खत्म होने की उसी तारीख को रिन्यू होती है. उपयोगकर्ता से, नई सदस्यता के एसकेयू की कीमत ली जाती है. इसमें शुरुआती कीमत भी शामिल है. यह कीमत, सदस्यता की मूल समयसीमा खत्म होने की तारीख पर ली जाती है. अगर पुरानी सदस्यता को किसी ऐसे खाते के आईडी का इस्तेमाल करके बनाया गया था जिसे छिपाया गया है, तो अपग्रेड और डाउनग्रेड के लिए, उसी आईडी को
BillingFlowParams
में पास किया जाना चाहिए. - उदाहरण के लिए, अकिलिस ने Example Music App की सदस्यता ली है और यह 1 अगस्त को खत्म होने वाली है. इसके बाद, 10 जुलाई को वह शुरुआती कीमत पर सालाना सदस्यता के लिए फिर से साइन अप करता है. नई सदस्यता तुरंत चालू हो जाती है. साथ ही, उपयोगकर्ता से 1 अगस्त को शुरुआती कीमत ली जाती है.
- अगर आपको विनबैक एसकेयू में मुफ़्त में आज़माने की सुविधा या शुरुआती कीमत शामिल करनी है, तो पक्का करें कि उपयोगकर्ता इसके लिए ज़रूरी शर्तें पूरी करता हो. इसके लिए, Google Play Console में जाकर, हर ऐप्लिकेशन के लिए एक बार मुफ़्त में आज़माने की सुविधा दें बॉक्स से सही का निशान हटाएं. इससे उपयोगकर्ता को हर ऐप्लिकेशन के लिए, एक बार मुफ़्त में आज़माने की सुविधा मिलती है.
जब आपको खरीदारी का टोकन मिल जाए, तब खरीदारी को प्रोसेस करें. यह ठीक उसी तरह से किया जाता है जैसे नई सदस्यता के लिए किया जाता है. इसके अलावा, Google Play Developer API, सदस्यता संसाधन में linkedPurchaseToken
दिखाता है. पक्का करें कि आपने linkedPurchaseToken
में दिए गए टोकन को अमान्य कर दिया हो, ताकि पुराने टोकन का इस्तेमाल करके आपकी सेवाओं को ऐक्सेस न किया जा सके.
सदस्यता खत्म होने से पहले - Play Store में
सदस्यता रद्द होने के बाद भी चालू रहने पर, उपयोगकर्ता Google Play सदस्यता केंद्र में जाकर सदस्यता को बहाल कर सकते हैं. इसके लिए, उन्हें फिर से सदस्यता लें (पहले बहाल करें) पर क्लिक करना होगा. इससे सदस्यता और खरीदारी का टोकन वही रहता है.

सदस्यताएं वापस पाने के बारे में ज़्यादा जानने के लिए, सदस्यताएं वापस पाना लेख पढ़ें.
सदस्यता खत्म होने के बाद - इन-ऐप्लिकेशन
सदस्यता की अवधि खत्म होने के बाद, सदस्यों को अपने ऐप्लिकेशन में फिर से सदस्यता लेने की अनुमति दी जा सकती है. इसके लिए, आपको नए सदस्यों की तरह ही, ऐप्लिकेशन में खरीदने के लिए मौजूद प्रॉडक्ट की खरीदारी का फ़्लो लागू करना होगा. इन बातों का ध्यान रखें:
- उपयोगकर्ताओं को छूट देने के लिए, आपको सदस्यता के लिए खास कीमत वाला प्रॉडक्ट आईडी ऑफ़र करना पड़ सकता है. इसे विनबैक एसकेयू भी कहा जाता है. आपके पास अपने ऐप्लिकेशन में ऑफ़र देने का विकल्प होता है. इसके अलावा, ऐप्लिकेशन के बाहर भी उपयोगकर्ता को ऑफ़र के बारे में सूचना दी जा सकती है. जैसे, ईमेल में.
- सदस्यता वापस पाने के लिए, Google Play Billing Library का इस्तेमाल करके अपने Android ऐप्लिकेशन में खरीदारी का फ़्लो शुरू करें. यह नई सदस्यता लेने की प्रोसेस की तरह ही है. हालांकि, इसमें यह तय किया जा सकता है कि उपयोगकर्ता के लिए कौन-कौनसे एसकेयू उपलब्ध हैं.
- अगर आपको विनबैक एसकेयू में मुफ़्त में आज़माने की सुविधा या शुरुआती कीमत शामिल करनी है, तो पक्का करें कि उपयोगकर्ता इसके लिए ज़रूरी शर्तें पूरी करता हो. इसके लिए, Google Play Console में जाकर, हर ऐप्लिकेशन के लिए एक बार मुफ़्त में आज़माने की सुविधा दें बॉक्स से सही का निशान हटाएं. इससे उपयोगकर्ता को हर ऐप्लिकेशन के लिए, एक बार मुफ़्त में आज़माने की सुविधा मिलती है.
- अगर उपयोगकर्ता उसी एसकेयू की सदस्यता फिर से लेता है, तो उसे मुफ़्त में आज़माने की सुविधा या शुरुआती कीमत का फ़ायदा नहीं मिलेगा. पक्का करें कि आपके यूज़र इंटरफ़ेस (यूआई) में यह जानकारी दिख रही हो.
जब आपको खरीदारी का टोकन मिल जाए, तब खरीदारी को प्रोसेस करें. यह ठीक उसी तरह से किया जाता है जैसे नई सदस्यता के लिए किया जाता है. आपको सदस्यता संसाधन में linkedPurchaseToken
नहीं मिलेगा.
सदस्यता खत्म होने के बाद - Play Store में
अगर यह सुविधा चालू है, तो उपयोगकर्ता सदस्यता की समयसीमा खत्म होने के बाद, एक साल तक उसी एसकेयू की सदस्यता फिर से ले सकते हैं. इसके लिए, उन्हें Google Play के सदस्यता केंद्र में जाकर, फिर से सदस्यता लें पर क्लिक करना होगा. इससे सदस्यता और खरीदारी का नया टोकन जनरेट होता है.

फिर से सदस्यता लेना, ऐप्लिकेशन के बाहर जाकर की जाने वाली खरीदारी मानी जाती है. इसलिए, ऐप्लिकेशन के बाहर से की गई खरीदारी को हैंडल करने के सबसे सही तरीके अपनाएं.
अपनी सदस्यता को प्रमोट करना
चुनिंदा लोगों को मौजूदा सदस्यता के लिए, बिना किसी शुल्क के आज़माने की अवधि बढ़ाने के लिए प्रोमो कोड बनाए जा सकते हैं. ज़्यादा जानने के लिए, प्रोमो कोड लेख पढ़ें.
मुफ़्त में आज़माने की सुविधा के लिए, Google Play यह पुष्टि करता है कि उपयोगकर्ता के पास पेमेंट का मान्य तरीका है. यह पुष्टि, मुफ़्त में आज़माने की सुविधा शुरू करने से पहले की जाती है. कुछ लोगों को यह पुष्टि, पेमेंट के तरीके पर रोक या शुल्क के तौर पर दिख सकती है. यह रोक या शुल्क कुछ समय के लिए होता है. बाद में इसे हटा दिया जाता है या इसका रिफ़ंड कर दिया जाता है.
मुफ़्त में आज़माने की अवधि खत्म होने के बाद, उपयोगकर्ता के पेमेंट के तरीके से सदस्यता की पूरी कीमत ले ली जाती है.
अगर कोई उपयोगकर्ता मुफ़्त में आज़माने की अवधि के दौरान किसी भी समय सदस्यता रद्द करता है, तो भी मुफ़्त में आज़माने की अवधि खत्म होने तक उसकी सदस्यता चालू रहती है. इसके लिए, उपयोगकर्ता से कोई शुल्क नहीं लिया जाता.
रद्द करना या निरस्त करना
किसी सदस्यता को रद्द या वापस लेना के लिए, Google Play Developer API का इस्तेमाल किया जा सकता है. यह सुविधा Google Play Console में भी उपलब्ध है.
रद्द करें: उपयोगकर्ता, Google Play पर सदस्यता रद्द कर सकते हैं. आपके पास अपने ऐप्लिकेशन या वेबसाइट पर, उपयोगकर्ताओं को सदस्यता रद्द करने का विकल्प देने का भी विकल्प होता है. आपके ऐप्लिकेशन को इन रद्द किए गए अनुरोधों को मैनेज करना चाहिए. इसके बारे में रद्द किए गए अनुरोध सेक्शन में बताया गया है.
सदस्यता रद्द करना: सदस्यता रद्द करने पर, उपयोगकर्ता के पास सदस्यता का ऐक्सेस तुरंत नहीं रहता. इसका इस्तेमाल तब किया जा सकता है, जब उपयोगकर्ता को आपके प्रॉडक्ट को ऐक्सेस करने में कोई तकनीकी समस्या आ रही हो और वह प्रॉडक्ट का इस्तेमाल जारी न रखना चाहता हो. आपका ऐप्लिकेशन, इन रद्द किए गए लेन-देन को रद्द किए गए लेन-देन में बताए गए तरीके से हैंडल करे.
यहां दी गई टेबल में, रद्द करने और वापस लेने के बीच के अंतर को दिखाया गया है.
रिन्यूअल बंद कर देता है | ऐक्सेस हटाएं | |
रद्द करें | हां | नहीं |
सहमति रद्द करें | हां | हां |
किसी सदस्य के लिए बिलिंग को कुछ समय के लिए रोकना
अपने-आप रिन्यू होने वाली सदस्यता के लिए, Google Play Developer API से Purchases.subscriptions:defer
का इस्तेमाल करके, बिलिंग की अगली तारीख को पहले किया जा सकता है. बढ़ाई गई इस अवधि के दौरान, उपयोगकर्ता को आपके कॉन्टेंट की सदस्यता मिलती है और उसके पास कॉन्टेंट का पूरा ऐक्सेस होता है. हालांकि, उससे कोई शुल्क नहीं लिया जाता. सदस्यता रिन्यू करने की तारीख को नई तारीख के तौर पर अपडेट कर दिया जाएगा.
प्रीपेड प्लान के लिए, बिलिंग रोकने वाले एपीआई का इस्तेमाल करके, सदस्यता खत्म होने की तारीख को आगे बढ़ाया जा सकता है.
डिफ़र्ड बिलिंग की सुविधा से ये काम किए जा सकते हैं:
- उपयोगकर्ताओं को खास ऑफ़र के तौर पर, बिना किसी शुल्क के ऐक्सेस दें. जैसे, कोई फ़िल्म खरीदने पर एक हफ़्ते के लिए बिना किसी शुल्क के ऐक्सेस देना.
- सद्भावना के तौर पर, ग्राहकों को बिना किसी शुल्क के ऐक्सेस दें.
बिलिंग को हर एपीआई कॉल के लिए, कम से कम एक दिन और ज़्यादा से ज़्यादा एक साल तक के लिए टाला जा सकता है. बिलिंग की तारीख को और आगे बढ़ाने के लिए, बिलिंग की नई तारीख से पहले एपीआई को फिर से कॉल किया जा सकता है.
उदाहरण के लिए, डार्सी ने Fishing Quarterly ऐप्लिकेशन पर ऑनलाइन कॉन्टेंट की सदस्यता ली है. इसके लिए, उसे हर महीने की पहली तारीख को 1.25 पाउंड का शुल्क देना होता है. मार्च में, उन्होंने ऐप्लिकेशन पब्लिशर के लिए एक ऑनलाइन सर्वे में हिस्सा लिया था. पब्लिशर ने उसे छह हफ़्तों के लिए बिना किसी शुल्क के सदस्यता दी है. इसके लिए, उसने अगले पेमेंट को 15 मई तक के लिए रोक दिया है. यह तारीख, बिलिंग की पिछली तारीख (1 अप्रैल) के छह हफ़्ते बाद की है. डार्सी से अप्रैल या मई की शुरुआत में कोई शुल्क नहीं लिया जाता. साथ ही, उसके पास अब भी कॉन्टेंट का ऐक्सेस है. इसके बाद, 15 मई को उससे सदस्यता के लिए सामान्य शुल्क 125 रुपये लिया जाता है. अब उसके खाते को 15 जून को रिन्यू किया जाएगा.
बिलिंग की तारीख बदलने पर, उपयोगकर्ता को ईमेल या ऐप्लिकेशन में सूचना दी जा सकती है.
पेमेंट अस्वीकार किए जाने की समस्या हल करना
अगर सदस्यता रिन्यू करने के लिए पेमेंट करने में समस्याएं आती हैं, तो Google सदस्यता रद्द करने से पहले, कुछ समय तक उसे रिन्यू करने की कोशिश करेगा. खाता वापस पाने की इस अवधि में, ग्रेस पीरियड और खाते पर रोक लगाने की अवधि शामिल हो सकती है. इस दौरान, Google उपयोगकर्ता को ईमेल और सूचनाएं भेजता है. इनमें, उसे पेमेंट का तरीका अपडेट करने के लिए कहा जाता है.
पेमेंट अस्वीकार होने पर, सदस्यता के लिए ग्रेस पीरियड शुरू हो जाता है. हालांकि, ऐसा तब होता है, जब ग्रेस पीरियड कॉन्फ़िगर किया गया हो. ग्रेस पीरियड के दौरान, आपको यह पक्का करना होगा कि उपयोगकर्ता के पास सदस्यता के एनटाइटलमेंट का ऐक्सेस बना रहे.
ग्रेस पीरियड खत्म होने के बाद, सदस्यता पर खाते पर रोक की अवधि शुरू हो जाती है. खाते पर रोक की अवधि में, आपको यह पक्का करना होगा कि उपयोगकर्ता के पास सदस्यता के तहत मिलने वाले अधिकारों का ऐक्सेस न हो.
Google Play Console में जाकर, अपने-आप रिन्यू होने वाले हर बुनियादी प्लान के लिए, ग्रेस पीरियड और खाते पर रोक लगने की अवधि सेट की जा सकती है. अवधि को डिफ़ॉल्ट वैल्यू से कम बताने पर, पेमेंट अस्वीकार होने की वजह से सदस्यता न ले पाने के मामलों में कमी आ सकती है.
पेमेंट अस्वीकार होने पर, सदस्यता वापस पाने की संभावना को ज़्यादा से ज़्यादा बढ़ाने के लिए, अपने उपयोगकर्ता को पेमेंट से जुड़ी समस्या के बारे में बताएं और उसे ठीक करने के लिए कहें.
इसे खुद से किया जा सकता है. इसके बारे में ग्रेस पीरियड और खाता होल्ड करना सेक्शन में बताया गया है. इसके अलावा, इन-ऐप्लिकेशन मैसेजिंग एपीआई को लागू किया जा सकता है. इससे Google, आपके ऐप्लिकेशन में लोगों को एक मैसेज दिखाता है.
इन-ऐप्लिकेशन मैसेजिंग
अगर आपने InAppMessageCategoryId.TRANSACTIONAL
के साथ ऐप्लिकेशन में मैसेज भेजने की सुविधा चालू की है, तो Google Play, उपयोगकर्ताओं को ग्रेस पीरियड और खाते को होल्ड करने के दौरान, हर दिन एक बार मैसेज दिखाएगा. साथ ही, उन्हें ऐप्लिकेशन छोड़े बिना पेमेंट ठीक करने का विकल्प देगा.

हमारा सुझाव है कि जब भी उपयोगकर्ता ऐप्लिकेशन खोले, तब इस एपीआई को कॉल करें. इससे यह तय किया जा सकेगा कि मैसेज दिखाना है या नहीं.
अगर उपयोगकर्ता ने अपनी सदस्यता को सफलतापूर्वक वापस पा लिया है, तो आपको खरीदारी के टोकन के साथ SUBSCRIPTION_STATUS_UPDATED
रिस्पॉन्स कोड मिलेगा. इसके बाद, आपको इस खरीदारी टोकन का इस्तेमाल करके, Google Play Developer API को कॉल करना चाहिए. साथ ही, अपने ऐप्लिकेशन में सदस्यता की स्थिति को रीफ़्रेश करना चाहिए.
इन-ऐप्लिकेशन मैसेजिंग की सुविधा इंटिग्रेट करना
उपयोगकर्ता को इन-ऐप्लिकेशन मैसेज दिखाने के लिए, BillingClient.showInAppMessages()
का इस्तेमाल करें.
यहां ऐप्लिकेशन में मैसेज भेजने की सुविधा को ट्रिगर करने का एक उदाहरण दिया गया है:
Kotlin
val inAppMessageParams = InAppMessageParams.newBuilder() .addInAppMessageCategoryToShow(InAppMessageCategoryId.TRANSACTIONAL) .build() billingClient.showInAppMessages(activity, inAppMessageParams, object : InAppMessageResponseListener() { override fun onInAppMessageResponse(inAppMessageResult: InAppMessageResult) { if (inAppMessageResult.responseCode == InAppMessageResponseCode.NO_ACTION_NEEDED) { // The flow has finished and there is no action needed from developers. } else if (inAppMessageResult.responseCode == InAppMessageResponseCode.SUBSCRIPTION_STATUS_UPDATED) { // The subscription status changed. For example, a subscription // has been recovered from a suspend state. Developers should // expect the purchase token to be returned with this response // code and use the purchase token with the Google Play // Developer API. } } })
Java
InAppMessageParams inAppMessageParams = InAppMessageParams.newBuilder() .addInAppMessageCategoryToShow(InAppMessageCategoryId.TRANSACTIONAL) .build(); billingClient.showInAppMessages(activity, inAppMessageParams, new InAppMessageResponseListener() { @Override public void onInAppMessageResponse(InAppMessageResult inAppMessageResult) { if (inAppMessageResult.responseCode == InAppMessageResponseCode.NO_ACTION_NEEDED) { // The flow has finished and there is no action needed from developers. } else if (inAppMessageResult.responseCode == InAppMessageResponseCode.SUBSCRIPTION_STATUS_UPDATED) { // The subscription status changed. For example, a subscription // has been recovered from a suspend state. Developers should // expect the purchase token to be returned with this response // code and use the purchase token with the Google Play // Developer API. } } });
सदस्यता के ऐसे लेन-देन मैनेज करना जिन्हें मंज़ूरी नहीं मिली है
लंबित लेन-देन, पहली बार खरीदारी, टॉप-अप, अपग्रेड या डाउनग्रेड करने पर हो सकते हैं. सदस्यता खरीदने की प्रोसेस, SUBSCRIPTION_STATE_ACTIVE
स्थिति से शुरू होती है. इसके बाद, यह SUBSCRIPTION_STATE_PENDING
स्थिति में बदल जाती है. अगर लेन-देन की समयसीमा खत्म हो गई है या उपयोगकर्ता ने इसे रद्द कर दिया है, तो यह SUBSCRIPTION_STATE_PENDING_PURCHASE_EXPIRED
पर चला जाता है. लेन-देन पूरा होने के बाद ही, आपको उपयोगकर्ता के एनटाइटलमेंट को अपडेट करना चाहिए.
जिन लेन-देन को मंज़ूरी मिलना बाकी है उनके लिए, सदस्यता की स्थिति में बदलाव करना आसान है. जब उपयोगकर्ता कोई ऐसा लेन-देन शुरू करता है जो पूरा नहीं हुआ है, तब आपके ऐप्लिकेशन को PENDING
स्थिति के साथ Purchase
मिलता है. लेन-देन पूरा होने पर, आपके ऐप्लिकेशन को Purchase
फिर से मिलता है. इसमें स्थिति को PURCHASED
के तौर पर अपडेट किया जाता है. आपके आरटीडीएन क्लाइंट को SUBSCRIPTION_PURCHASED
टाइप का SubscriptionNotification
मैसेज भेजा जाता है. खरीदारी की पुष्टि करने के लिए, सामान्य प्रोसेस अपनाएं. साथ ही, उपयोगकर्ता को कॉन्टेंट का ऐक्सेस दें और खरीदारी की पुष्टि करें. अगर लेन-देन की समयसीमा खत्म हो जाती है या उसे रद्द कर दिया जाता है, तो आपके आरटीडीएन क्लाइंट को टाइप SUBSCRIPTION_PENDING_PURCHASE_CANCELED
वाला SubscriptionNotification
मैसेज भेजा जाता है. ऐसे मामलों में, उपयोगकर्ता को कभी भी कॉन्टेंट का ऐक्सेस नहीं मिलना चाहिए.
जिन लेन-देन की मंज़ूरी बाकी है उनके साथ टॉप-अप, अपग्रेड या डाउनग्रेड करने पर, पुरानी और नई, दोनों तरह की सदस्यताओं की स्थिति में बदलाव होता है. जब उपयोगकर्ता, टॉप-अप, अपग्रेड या डाउनग्रेड करने के लिए कोई ऐसा लेन-देन शुरू करता है जो अभी पूरा नहीं हुआ है, तो आपके ऐप्लिकेशन को पुरानी सदस्यता के लिए Purchase
मिलता है. इसमें PendingPurchaseUpdate
ऑब्जेक्ट होता है. इस समय, उपयोगकर्ता के पास पुरानी सदस्यता का मालिकाना हक होता है और उसे नई सदस्यता नहीं मिलती है. PendingPurchaseUpdate
ऑब्जेक्ट पर getProducts()
और getPurchaseToken()
को कॉल करने पर, नई सदस्यता के प्रॉडक्ट आईडी और परचेज़ टोकन मिलते हैं. लेन-देन पूरा होने पर, आपके ऐप्लिकेशन को Purchase
मिलता है. इसमें नई सदस्यता के लिए सेट किया गया टॉप-लेवल परचेज़ टोकन और PURCHASED
के तौर पर सेट की गई स्थिति होती है. आपके आरटीडीएन क्लाइंट को SubscriptionNotification
टाइप वाला मैसेज भेजा जाता है.SUBSCRIPTION_PURCHASED
सिर्फ़ इस समय, आपको पुराने परचेज़ टोकन को नए परचेज़ टोकन से बदलना चाहिए. साथ ही, उपयोगकर्ता के कॉन्टेंट के ऐक्सेस को अपडेट करना चाहिए. अगर लेन-देन की समयसीमा खत्म हो जाती है या उसे रद्द कर दिया जाता है, तो आपके आरटीडीएन क्लाइंट को टाइप SUBSCRIPTION_PENDING_PURCHASE_CANCELED
वाला SubscriptionNotification
मैसेज भेजा जाता है. ऐसे मामलों में, उपयोगकर्ता के पास पुरानी सदस्यता का कॉन्टेंट ऐक्सेस करने का विकल्प होना चाहिए.