सदस्यताओं के बारे में जानकारी

इस विषय में, सदस्यता के लाइफ़साइकल से जुड़े इवेंट मैनेज करने का तरीका बताया गया है. जैसे, रिन्यूअल और सदस्यता की समयसीमा खत्म होना. इसमें सदस्यता की अन्य सुविधाओं के बारे में भी बताया गया है. जैसे, प्रमोशन ऑफ़र करना और उपयोगकर्ताओं को अपनी सदस्यताएं मैनेज करने की अनुमति देना.

अगर आपने अपने ऐप्लिकेशन के लिए सदस्यता वाले प्रॉडक्ट कॉन्फ़िगर नहीं किए हैं, तो अपने प्रॉडक्ट बनाएं और कॉन्फ़िगर करें लेख पढ़ें.

सदस्यता अवलोकन

सदस्यता, फ़ायदों का एक ऐसा सेट होता है जिन्हें उपयोगकर्ता तय समयावधि के दौरान ऐक्सेस कर सकते हैं. उदाहरण के लिए, किसी सदस्यता की मदद से उपयोगकर्ता को संगीत स्ट्रीमिंग सेवा का ऐक्सेस मिल सकता है.

एक ही ऐप्लिकेशन में कई सदस्यताएं हो सकती हैं. ऐसा, फ़ायदों के अलग-अलग सेट या फ़ायदों के एक सेट के अलग-अलग टीयर (उदाहरण के लिए, "सिल्वर" और "गोल्ड" टीयर) को दिखाने के लिए किया जा सकता है.

बुनियादी प्लान और ऑफ़र की मदद से, एक ही सदस्यता प्रॉडक्ट के लिए कई कॉन्फ़िगरेशन बनाए जा सकते हैं. उदाहरण के लिए, आपके पास उन उपयोगकर्ताओं के लिए शुरुआती ऑफ़र बनाने का विकल्प होता है जिन्होंने कभी आपके ऐप्लिकेशन की सदस्यता नहीं ली है. इसी तरह, आपके पास पहले से सदस्यता लेने वाले उपयोगकर्ताओं के लिए अपग्रेड ऑफ़र बनाने का विकल्प होता है.

सदस्यता वाले प्रॉडक्ट, बुनियादी प्लान, और ऑफ़र के बारे में पूरी जानकारी पाने के लिए, Play Console के सहायता केंद्र पर मौजूद दस्तावेज़ देखें.

प्रीपेड प्लान का इंटिग्रेशन

प्रीपेड प्लान की समयसीमा खत्म होने पर, वे अपने-आप नहीं रिन्यू होते. सदस्यता की अवधि बिना किसी रुकावट के बढ़ाने के लिए, उपयोगकर्ता को उसी सदस्यता के लिए प्रीपेड प्लान का टॉप-अप करना होगा.

टॉप-अप के लिए, बिलिंग फ़्लो को उसी तरह लॉन्च करें जिस तरह मूल खरीदारी के लिए किया जाता है. आपको यह बताने की ज़रूरत नहीं है कि खरीदारी टॉप-अप है.

प्रीपेड प्लान के टॉप-अप हमेशा CHARGE_FULL_PRICE रिप्लेसमेंट मोड का इस्तेमाल करते हैं. आपको इस मोड को साफ़ तौर पर सेट करने की ज़रूरत नहीं है. उपयोगकर्ता से बिलिंग अवधि का पूरा शुल्क तुरंत ले लिया जाता है. साथ ही, उसके एनटाइटलमेंट की अवधि को टॉप-अप में बताई गई अवधि तक बढ़ा दिया जाता है.

टॉप-अप करने के बाद, सबसे हाल ही में की गई टॉप-अप खरीदारी को दिखाने के लिए, Purchase नतीजे वाले ऑब्जेक्ट में ये फ़ील्ड अपडेट किए जाते हैं:

  • आदेश आईडी
  • खरीदारी का समय
  • हस्ताक्षर
  • खरीदी टोकन
  • स्वीकृत

यहां दिए गए Purchase फ़ील्ड में हमेशा वही डेटा होता है जो मूल खरीदारी में होता है:

  • पैकेज का नाम
  • खरीदारी की स्थिति
  • प्रॉडक्ट
  • अपने-आप रिन्यू होना

पैसे पहले चुकाकर की गई खरीदारी की जानकारी

अपने-आप रिन्यू होने वाली सदस्यताओं की तरह ही, आपको खरीदारी के बाद प्रीपेड प्लान की पुष्टि करनी होगी. शुरुआती खरीदारी और टॉप-अप, दोनों की पुष्टि ज़रूरी है. ज़्यादा जानकारी के लिए, खरीदारी की प्रोसेस लेख पढ़ें.

प्रीपेड प्लान की अवधि कम होने की वजह से, खरीदारी की पुष्टि जल्द से जल्द करना ज़रूरी है.

एक हफ़्ते या उससे ज़्यादा समय के प्रीपेड प्लान के लिए, तीन दिन के अंदर पुष्टि करनी होगी.

एक हफ़्ते से कम अवधि वाले प्रीपेड प्लान के लिए, प्लान की अवधि के आधे समय के अंदर पुष्टि करनी होगी. उदाहरण के लिए, तीन दिन के प्रीपेड प्लान को स्वीकार करने के लिए, डेवलपर के पास 1.5 दिन का समय होता है.

किस्त में पैसे चुकाकर ली जाने वाली सदस्यताओं का इंटिग्रेशन

किस्त वाली सदस्यता, सदस्यता का एक ऐसा टाइप है जिसमें उपयोगकर्ता, सदस्यता शुल्क को एक बार में चुकाने के बजाय, किसी समयावधि में कई किस्तों में चुकाते हैं.

किस्तों में पैसे चुकाकर ली जाने वाली सदस्यताओं के लिए ध्यान देने वाली अन्य बातें:

  • किस देश में उपलब्ध है: किस्तों में पैसे चुकाकर सदस्यता लेने की सुविधा सिर्फ़ ब्राज़ील, फ़्रांस, इटली, और स्पेन में उपलब्ध है. सदस्यता की उपलब्धता के बारे में ज़्यादा जानने के लिए, 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 की सदस्यताओं की स्क्रीन पर, उपयोगकर्ता की उन सभी सदस्यताओं की स्थिति दिखती है जिनके लिए Google Play से शुल्क लिया जाता है.
पहली इमेज. Play Store की सदस्यताओं की स्क्रीन पर, उपयोगकर्ता की उन सभी सदस्यताओं की स्थिति दिखती है जिनके लिए Google Play से शुल्क लिया जाता है.


ज़्यादा जानकारी देखने के लिए, किसी सदस्यता पर टैप करें.
दूसरी इमेज. ज़्यादा जानकारी देखने के लिए, किसी सदस्यता पर टैप करें.

यह डीप लिंक, उपयोगकर्ता को 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% की छूट देने वाला ऑफ़र बनाया जा सकता है. साथ ही, इस ऑफ़र को महीने के हिसाब से पैसे चुकाकर ली जाने वाली सदस्यता के उन उपयोगकर्ताओं के लिए सीमित किया जा सकता है जिन्होंने यह ऑफ़र नहीं खरीदा है. ऑफ़र की ज़रूरी शर्तों के बारे में ज़्यादा जानकारी सहायता केंद्र पर उपलब्ध है

तीसरी इमेज में, तीन अलग-अलग प्लान वाले ऐप्लिकेशन का उदाहरण दिया गया है:

इस ऐप्लिकेशन में सदस्यता के तीन टीयर हैं..
तीसरी इमेज. इस ऐप्लिकेशन में सदस्यता के तीन टीयर हैं.

आपका ऐप्लिकेशन, तीसरे चित्र जैसी स्क्रीन दिखा सकता है. इससे उपयोगकर्ताओं को अपनी सदस्यता बदलने के विकल्प मिलते हैं. सभी मामलों में, उपयोगकर्ताओं को यह साफ़ तौर पर पता होना चाहिए कि उनकी मौजूदा सदस्यता का प्लान क्या है और उसे बदलने के लिए उनके पास कौनसे विकल्प हैं.

जब उपयोगकर्ता अपनी सदस्यता को अपग्रेड, डाउनग्रेड या बदलने का फ़ैसला लेते हैं, तो आपको सदस्यता बदलने का मोड तय करना होता है. इससे यह तय होता है कि पैसे चुकाकर ली गई मौजूदा बिलिंग अवधि की प्रोरेट की गई वैल्यू को कैसे लागू किया जाए और एनटाइटलमेंट में कब बदलाव होगा.

आइटम बदलने के मोड

इस टेबल में, बदलाव करने के उपलब्ध मोड और इस्तेमाल के उदाहरण के साथ-साथ, पेमेंट के तौर पर गिने जाने वाले पेमेंट की संख्या की जानकारी दी गई है.

रिप्लेसमेंट मोड

ब्यौरा

इस्तेमाल का उदाहरण

बकाया पेमेंट, 'पेमेंट हो चुका है' के तौर पर रिकॉर्ड किए गए हैं (किस्त वाली सदस्यता बदलने के लिए)

WITH_TIME_PRORATION

सदस्यता तुरंत अपग्रेड या डाउनग्रेड हो जाती है. सदस्यता के बचे हुए समय में, कीमत में हुए अंतर के हिसाब से बदलाव किया जाता है. साथ ही, अगली बिलिंग की तारीख को आगे बढ़ाकर, नई सदस्यता में क्रेडिट जोड़ दिया जाता है. यह डिफ़ॉल्ट व्यवहार है.

तुरंत कोई अतिरिक्त पेमेंट किए बिना, ज़्यादा कीमत वाले टीयर पर अपग्रेड करें.

0

CHARGE_PRORATED_PRICE

सदस्यता तुरंत अपग्रेड हो जाती है और बिलिंग साइकल पहले जैसा ही रहता है. इसके बाद, बचे हुए समय के लिए कीमत में अंतर का शुल्क उपयोगकर्ता से लिया जाता है.

ध्यान दें: यह विकल्प सिर्फ़ सदस्यता को अपग्रेड करने के लिए उपलब्ध है. इसमें समय की हर यूनिट के लिए कीमत बढ़ती है.

बिलिंग की तारीख में बदलाव किए बिना, ज़्यादा कीमत वाले टीयर पर अपग्रेड करें.

1

CHARGE_FULL_PRICE

सदस्यता तुरंत अपग्रेड या डाउनग्रेड हो जाती है. साथ ही, उपयोगकर्ता से तुरंत नए एनटाइटलमेंट की पूरी कीमत ली जाती है. पिछली सदस्यता की बचे हुए समय की वैल्यू, उसी एनटाइटलमेंट के लिए इस्तेमाल की जाती है या किसी दूसरे एनटाइटलमेंट पर स्विच करने पर, समय के हिसाब से प्रोरेट की जाती है.

ध्यान दें: अगर नई सदस्यता के लिए, मुफ़्त में आज़माने या शुरुआती कीमत में खरीदने का ऑफ़र दिया गया है, तो अपग्रेड या डाउनग्रेड करने पर उपयोगकर्ता से कोई शुल्क नहीं लिया जाएगा. इसके अलावा, अगर शुरुआती कीमत में खरीदने का ऑफ़र लागू है, तो उसी कीमत के हिसाब से शुल्क लिया जाएगा.

कम अवधि की बिलिंग अवधि को लंबी अवधि की बिलिंग अवधि में अपग्रेड करना.

1 (ध्यान दें: अगर नई सदस्यता को मुफ़्त में आज़माने की सुविधा मिलती है, तो 0 डालें.)

WITHOUT_PRORATION

सदस्यता को तुरंत अपग्रेड या डाउनग्रेड कर दिया जाता है. साथ ही, सदस्यता रिन्यू होने पर, उस पर नई कीमत लागू हो जाती है. बिलिंग साइकल में कोई बदलाव नहीं होता.

बिना किसी शुल्क के मिलने वाली अवधि खत्म होने से पहले, सदस्यता के किसी ज़्यादा बेहतर टीयर पर अपग्रेड करें.

0

DEFERRED

सदस्यता सिर्फ़ तब अपग्रेड या डाउनग्रेड की जाती है, जब उसकी अवधि रिन्यू होती है. हालांकि, नई खरीदारी तुरंत जारी कर दी जाती है. इसमें ये दो आइटम शामिल होते हैं:

  • मौजूदा आइटम, जिसमें अपने-आप रिन्यू होने की सुविधा बंद है और खत्म होने का समय, मौजूदा बिलिंग साइकल के खत्म होने पर सेट है.
  • मौजूदा आइटम की समयसीमा खत्म होने के बाद शुरू होने वाला नया एनटाइटलमेंट. आपके पास, उपयोगकर्ताओं को ज़्यादा बदलाव करने की अनुमति देने का विकल्प होता है. उदाहरण के लिए, उपयोगकर्ता मूल प्लान पर वापस आ सकते हैं या प्लान में बदलाव करने की नई प्रोसेस शुरू कर सकते हैं.

ध्यान दें: किस्तों में पैसे चुकाकर ली जाने वाली सदस्यताओं के लिए, प्लान में बदलाव अगली पेमेंट की तारीख से लागू होता है.

कम कीमत वाले टीयर पर डाउनग्रेड करें.

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 अप्रैल) के लिए पैसे चुकाए थे, लेकिन सदस्यता की अवधि के आधे हिस्से में अपग्रेड कर लिया. इसलिए, उनकी नई सदस्यता पर एक महीने की सदस्यता का आधा हिस्सा (एक डॉलर) लागू किया गया. हालांकि, नई सदस्यता की कीमत हर साल 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 RTDN मिलेगा. देर से होने वाले बदलाव को मैनेज करें में ReplacementMode.DEFERRED के व्यवहार के बारे में ज़्यादा पढ़ें.

CHARGE_FULL_PRICE

समवाइज़ की टीयर 1 सदस्यता तुरंत खत्म हो जाती है. उसकी टीयर 2 सदस्यता आज से शुरू हो रही है और उससे 36 डॉलर लिए गए हैं. उन्होंने पूरे महीने की सदस्यता के लिए पैसे चुकाए थे, लेकिन उसका इस्तेमाल सिर्फ़ आधे महीने के लिए किया. इसलिए, उनकी नई सदस्यता पर आधे महीने की सदस्यता का शुल्क (एक डॉलर) लागू किया गया. नई सदस्यता की कीमत 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

खरीदारी की प्रोसेस पूरी होने के तुरंत बाद (ऐप्लिकेशन)

खरीदारी के बाद, PurchasesUpdatedListener को इस स्थिति के साथ ट्रिगर किया जाता है कि अपग्रेड या डाउनग्रेड पूरा हुआ है या नहीं.

पुराने प्लान का एनटाइटलमेंट, रिन्यूअल की अगली तारीख तक जारी रहेगा. यह पक्का करने के लिए कि ऐप्लिकेशन सही एनटाइटलमेंट देता है, queryPurchasesAsync(), बदलाव होने तक ओरिजनल परचेज़ टोकन और ओरिजनल एनटाइटलमेंट के साथ परचेज़ ऑब्जेक्ट दिखाता है.

नया खरीदारी टोकन नहीं दिखाया गया है, इसलिए इसे इस समय प्रोसेस नहीं किया जा सकता.

खरीदारी के बाद, PurchasesUpdatedListener को इस स्टेटस के साथ ट्रिगर किया जाता है कि अपग्रेड या डाउनग्रेड हुआ है या नहीं.

queryPurchasesAsync(), खरीदारी को तुरंत नए खरीदारी टोकन के साथ दिखाता है. साथ ही, उससे जुड़ा ओरिजनल एनटाइटलमेंट भी दिखाता है.

नया परचेज़ टोकन दिखाया गया है. इसलिए, इस समय इसे प्रोसेस किया जाना चाहिए. साथ ही, यह भी ध्यान में रखा जाना चाहिए कि बदलाव कब होगा.

खरीदारी की प्रोसेस पूरी होने के तुरंत बाद (बैकएंड)

खरीदारी के फ़्लो के बाद, SUBSCRIPTION_PURCHASED RTDN भेजा नहीं जाता. बैकएंड को अब तक नई खरीदारी की जानकारी नहीं दी गई है.

नए परचेज़ टोकन के लिए परचेज़ फ़्लो के तुरंत बाद, पुराने product_id के साथ SUBSCRIPTION_PURCHASED RTDN भेजा जाता है.

नए परचेज़ टोकन के साथ purchases.subscriptionsv2.get तरीके को कॉल करने पर, एक खरीदारी मिलती है. इसमें 'startTime' की वैल्यू होती है, जो खरीदारी के समय के बारे में बताती है. यह वैल्यू, दो लाइन आइटम के साथ दिखती है:

  • एक पुराना एनटाइटलमेंट दिखाता है और आने वाले समय में 'expiryTime' की वैल्यू है. पुराने एनटाइटलमेंट को रिन्यू नहीं किया जाएगा. साथ ही, इसमें DeferredItemReplacement है, जिसमें नए एनटाइटलमेंट का प्रॉडक्ट शामिल है. इससे पता चलता है कि पुराने एनटाइटलमेंट की समयसीमा खत्म होने के बाद, उसे बदलना बाकी है.
  • नए खरीदे गए एनटाइटलमेंट को दिखाने वाला एक. इसमें 'expiryTime' के लिए कोई वैल्यू सेट नहीं है.

पुराने खरीदारी टोकन के लिए, SUBSCRIPTION_EXPIRED भेजा गया. पुराने सदस्यता टोकन के साथ purchases.subscriptionsv2.get तरीके को कॉल करने पर, यह समयसीमा खत्म होने के तौर पर दिखता है. पुराने प्लान का एनटाइटलमेंट, बाकी बचे समय के लिए नई खरीदारी में ट्रांसफ़र कर दिया जाता है.

डिवाइस बदलने पर - खरीदारी के फ़्लो (ऐप्लिकेशन) के बाद पहली बार रिन्यू करना

queryPurchasesAsync(), नए परचेज़ टोकन और एनटाइटलमेंट के साथ एक नया परचेज़ ऑब्जेक्ट दिखाता है.

नया परचेज़ टोकन अब दिख रहा है, इसलिए इसे प्रोसेस किया जाना चाहिए.

queryPurchasesAsync(), खरीदारी के नए टोकन और उससे जुड़े नए एनटाइटलमेंट के साथ, खरीदारी की जानकारी तुरंत दिखाता है.

परचेज़ फ़्लो पूरा होने के बाद, नई खरीदारी की प्रोसेस हो जानी चाहिए. इसलिए, ऐप्लिकेशन को यह पक्का करने के अलावा कोई खास कार्रवाई नहीं करनी चाहिए कि सही एनटाइटलमेंट दिया गया है.

डिवाइस बदलने पर - खरीदारी के फ़्लो (बैकएंड) के बाद पहला रिन्यूअल

पहली बार SUBSCRIPTION_RENEWED RTDN भेजने पर, नई खरीदारी को प्रोसेस किया जा सकता है और उसकी पुष्टि की जा सकती है.

सदस्यता संसाधन में मौजूद linkedPurchaseToken का इस्तेमाल करके, यह तय किया जा सकता है कि आपके सदस्यता बैकएंड में किस उपयोगकर्ता को नए एनटाइटलमेंट के साथ अपडेट किया जाना चाहिए.

नई खरीदारी को प्रोसेस कर लिया गया और उसकी पुष्टि कर दी गई. ऐसा तब हुआ, जब नए खरीदारी टोकन के लिए SUBSCRIPTION_PURCHASED RTDN भेजा गया और उसे 'startTime' के तौर पर रिकॉर्ड किया गया.

ReplacementMode.DEFERRED के साथ, पहले रिन्यूअल किसी भी दूसरे रिन्यूअल के स्टैंडर्ड व्यवहार का पालन करते हैं. साथ ही, इस इवेंट के होने पर, आपको बदलावों के लिए खास लॉजिक मैनेज करने की ज़रूरत नहीं होती.

नए खरीदारी टोकन के साथ purchases.subscriptionsv2.get तरीके को कॉल करने पर, दो लाइन आइटम वाली खरीदारी दिखती है:

  • पहला, पुराने एनटाइटलमेंट को दिखाता है. इसमें, 'expiryTime' की वैल्यू पुरानी है और DeferredItemReplacement के लिए कोई वैल्यू सेट नहीं है.
  • एक नया एनटाइटलमेंट दिखाता है, जिसमें आने वाले समय में `expiryTime` और auto_renewing_enabled फ़्लैग चालू होता है.

अब से, ProrationMode.DEFERRED के बजाय, ReplacementMode.DEFERRED का इस्तेमाल किया जाना चाहिए. ऐसा इसलिए, क्योंकि यह एनटाइटलमेंट में हुए बदलावों के बारे में वही जानकारी देता है. हालांकि, यह खरीदारी को मैनेज करने का ऐसा तरीका उपलब्ध कराता है जो अन्य नई खरीदारी के व्यवहार से ज़्यादा मेल खाता है.

ग्राहक मैनेजमेंट

डेवलपर से जुड़ी रीयल-टाइम सूचनाओं की मदद से, यह पता लगाया जा सकता है कि कोई उपयोगकर्ता सदस्यता रद्द करने का फ़ैसला कब लेता है. जब कोई उपयोगकर्ता सदस्यता रद्द करता है, लेकिन उसकी सदस्यता की समयसीमा खत्म होने से पहले, तो उसे फिर से सदस्यता लेने के लिए कहा जा सकता है. इसके लिए, उसे पुश नोटिफ़िकेशन या ऐप्लिकेशन में मैसेज भेजे जा सकते हैं.

जब कोई उपयोगकर्ता अपनी सदस्यता रद्द कर देता है, तो उसे वापस पाने के लिए, अपने ऐप्लिकेशन या Play Store का इस्तेमाल किया जा सकता है. नीचे दी गई टेबल में, सदस्यता के अलग-अलग मामलों के साथ-साथ, सदस्यों को वापस लाने से जुड़ी कार्रवाइयों और ऐप्लिकेशन की ज़रूरी शर्तों के बारे में बताया गया है.

सदस्यता की समयसीमा खत्म होने से पहले सदस्यता खत्म होने के बाद
इन-ऐप्लिकेशन Play Store में इन-ऐप्लिकेशन Play Store में
उपयोगकर्ता वापस लाने की सुविधा इन-ऐप्लिकेशन सदस्यता वापस लाएं इन-ऐप्लिकेशन सदस्यता फिर से सदस्यता लें
उपयोगकर्ता चेकआउट प्रोसेस को पूरा करता है हां नहीं हां हां
उपयोगकर्ता की सदस्यता, उसी एसकेयू से जुड़ी रहती है उपयोगकर्ता, एक ही या अलग-अलग एसकेयू के लिए साइन अप कर सकता है हां उपयोगकर्ता, एक ही या अलग-अलग एसकेयू के लिए साइन अप कर सकता है हां
नया परचेज़ टोकन बनाता है हां नहीं हां हां
डिफ़ॉल्ट रूप से चालू है नहीं हां, सभी डेवलपर के लिए सहायता ज़रूरी है नहीं

ऐसे ऐप्लिकेशन जिनमें Billing Library 2.0 या इसके बाद का वर्शन नहीं है: नहीं

Billing Library 2.0 या इसके बाद के वर्शन वाले ऐप्लिकेशन: हां. डेवलपर, Console में जाकर ऑप्ट-आउट कर सकते हैं.

उपयोगकर्ता से कब शुल्क लिया जाता है

अगर एक ही SKU का इस्तेमाल किया जा रहा है, तो मौजूदा बिलिंग अवधि खत्म होने पर.

अगर किसी दूसरे SKU का इस्तेमाल किया जा रहा है, तो यह प्रोरेशन मोड पर निर्भर करता है.

मौजूदा बिलिंग अवधि खत्म होने पर तुरंत तुरंत
लागू करना ज़रूरी है अपने ऐप्लिकेशन में, फिर से साइन अप करने के लिए यूज़र इंटरफ़ेस (यूआई) उपलब्ध कराएं

सदस्यता की स्थिति में हुए बदलाव का पता लगाना

Play Store का डीप-लिंक

अपने ऐप्लिकेशन में, फिर से साइन अप करने के लिए यूज़र इंटरफ़ेस (यूआई) उपलब्ध कराएं ऐप्लिकेशन के बाहर जाकर की जाने वाली खरीदारी को मैनेज करना

सदस्यता की समयसीमा खत्म होने से पहले - ऐप्लिकेशन में

रद्द की गई, लेकिन अब तक खत्म नहीं हुई सदस्यताओं के लिए, आपके पास सदस्यों को अपने ऐप्लिकेशन में सदस्यता फिर से चालू करने की अनुमति देने का विकल्प है. इसके लिए, नए सदस्यों के लिए इस्तेमाल किए जाने वाले इन-ऐप्लिकेशन प्रॉडक्ट की खरीदारी के फ़्लो को लागू करें. पक्का करें कि आपके यूज़र इंटरफ़ेस (यूआई) से यह पता चलता हो कि उपयोगकर्ता के पास मौजूदा सदस्यता है. उदाहरण के लिए, हो सकता है कि आप फिर से चालू करें बटन के साथ, सदस्यता की खत्म होने की मौजूदा तारीख और बार-बार रिन्यू होने की कीमत दिखाना चाहें.

ज़्यादातर मामलों में, आपको उपयोगकर्ता को वही कीमत और SKU ऑफ़र करना होगा जिसकी सदस्यता उसने पहले ली थी. ऐसा करने के लिए, यह तरीका अपनाएं:

  • उसी SKU के साथ सदस्यता की नई खरीदारी शुरू करें.
  • नई सदस्यता, पुरानी सदस्यता की जगह ले लेती है और खत्म होने की उसी तारीख को रिन्यू हो जाती है. पुरानी सदस्यता को तुरंत 'समयसीमा खत्म हो गई है' के तौर पर मार्क कर दिया जाता है.
  • उदाहरण के लिए, अकिलिस के पास Example Music ऐप्लिकेशन की सदस्यता है और सदस्यता की समयसीमा 1 अगस्त को खत्म होने वाली है. 10 जुलाई को, वह एक महीने की सदस्यता फिर से लेता है. इसके लिए, उससे हर महीने वही शुल्क लिया जाता है जो पहले लिया गया था. नई सदस्यता, बची हुई क्रेडिट अवधि के हिसाब से तय की जाती है. यह तुरंत चालू हो जाती है और 1 अगस्त को रिन्यू हो जाती है.

अगर आपको कोई दूसरी कीमत ऑफ़र करनी है, जैसे कि मुफ़्त में आज़माने की नई सुविधा या फिर उपयोगकर्ता को वापस लाने के लिए छूट, तो उपयोगकर्ता को कोई दूसरा SKU ऑफ़र किया जा सकता है:

  • बदलाव मोड WITHOUT_PRORATION का इस्तेमाल करके, किसी दूसरे SKU के साथ अपग्रेड या डाउनग्रेड शुरू करें.
  • नई सदस्यता, पुरानी सदस्यता की जगह ले लेती है और खत्म होने की उसी तारीख को रिन्यू हो जाती है. सदस्यता की समयसीमा खत्म होने की मूल तारीख को, उपयोगकर्ता से नए SKU की कीमत ली जाती है. इसमें शुरुआती कीमतें भी शामिल होती हैं. अगर पुरानी सदस्यता को बदले गए खाता आईडी का इस्तेमाल करके बनाया गया था, तो अपग्रेड और डाउनग्रेड के लिए उसी आईडी को BillingFlowParams को पास किया जाना चाहिए.
  • उदाहरण के लिए, अकिलिस के पास Example Music ऐप्लिकेशन की सदस्यता है और सदस्यता की समयसीमा 1 अगस्त को खत्म होने वाली है. 10 जुलाई को, वह शुरुआती कीमत पर सालाना सदस्यता फिर से लेता है. नई सदस्यता तुरंत चालू हो जाती है और उपयोगकर्ता से 1 अगस्त को शुरुआती कीमत ली जाती है.
  • अगर आपको उपयोगकर्ता वापस लाने के लिए बनाए गए SKU में, मुफ़्त में आज़माने की सुविधा या शुरुआती कीमत शामिल करनी है, तो पक्का करें कि उपयोगकर्ता ज़रूरी शर्तें पूरी करता हो. इसके लिए, Google Play Console में हर ऐप्लिकेशन को एक बार मुफ़्त में आज़माने की अनुमति दें बॉक्स से सही का निशान हटाएं. इससे, उपयोगकर्ता को हर ऐप्लिकेशन को एक बार मुफ़्त में आज़माने की अनुमति मिलती है.

खरीदारी का टोकन मिलने के बाद, खरीदारी की प्रोसेस ठीक वैसे ही करें जैसे किसी नई सदस्यता के लिए की जाती है. इसके अलावा, Google Play Developer API, सदस्यता संसाधन में linkedPurchaseToken दिखाता है. linkedPurchaseToken में दिए गए टोकन को अमान्य करना न भूलें. इससे यह पक्का किया जा सकेगा कि आपकी सेवाओं का ऐक्सेस पाने के लिए, पुराने टोकन का इस्तेमाल न किया जाए.

सदस्यता की समयसीमा खत्म होने से पहले - Play Store में

अगर सदस्यता रद्द हो गई है, लेकिन वह अब भी चालू है, तो उपयोगकर्ता Google Play के सदस्यता केंद्र में जाकर, सदस्यता को फिर से चालू कर सकते हैं. इसके लिए, उन्हें फिर से सदस्यता लें (पहले इसे बहाल करें कहा जाता था) पर क्लिक करना होगा. इससे सदस्यता और परचेज़ टोकन पहले जैसा ही रहेगा.

Google Play Store ऐप्लिकेशन के सदस्यता सेक्शन में, रद्द की गई सदस्यता दिख रही है. साथ ही, 'फिर से सदस्यता लें' बटन भी दिख रहा है
आठवीं इमेज. Google Play Store ऐप्लिकेशन में खाता > सदस्यताएं सेक्शन, जिसमें रद्द की गई सदस्यता दिख रही है. साथ ही, फिर से सदस्यता लें बटन भी दिख रहा है.

सदस्यताएं वापस पाने के बारे में ज़्यादा जानने के लिए, वापस लाना लेख पढ़ें.

सदस्यता की समयसीमा खत्म होने के बाद - इन-ऐप्लिकेशन

जिन सदस्यों की सदस्यता की समयसीमा खत्म हो चुकी है उन्हें अपने ऐप्लिकेशन में फिर से सदस्यता लेने की अनुमति दी जा सकती है. इसके लिए, नए सदस्यों के लिए इस्तेमाल किए जाने वाले इन-ऐप्लिकेशन प्रॉडक्ट खरीदने के फ़्लो का इस्तेमाल करें. इन बातों का ध्यान रखें:

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

खरीदारी का टोकन मिलने के बाद, खरीदारी की प्रोसेस ठीक वैसे ही करें जैसे किसी नई सदस्यता के लिए की जाती है. आपको सदस्यता संसाधन में linkedPurchaseToken नहीं मिलेगा.

सदस्यता की समयसीमा खत्म होने के बाद - Play Store में

अगर यह सुविधा चालू है, तो उपयोगकर्ता सदस्यता की समयसीमा खत्म होने के बाद भी, उसी एसकेयू की सदस्यता फिर से ले सकते हैं. इसके लिए, उन्हें Google Play के सदस्यता केंद्र में जाकर, फिर से सदस्यता लें पर क्लिक करना होगा. इससे, सदस्यता और खरीदारी का नया टोकन जनरेट होता है.

Google Play Store ऐप्लिकेशन में सदस्यता वाले सेक्शन में, रद्द की गई और समयसीमा खत्म हो चुकी सदस्यता दिख रही है. साथ ही, फिर से सदस्यता लें और हटाएं बटन भी दिख रहे हैं
नौवीं इमेज. Google Play Store ऐप्लिकेशन में खाता > सदस्यताएं सेक्शन, जिसमें रद्द की गई और समयसीमा खत्म हो चुकी सदस्यता दिख रही है. साथ ही, फिर से सदस्यता लें और हटाएं बटन भी दिख रहे हैं.

फिर से सदस्यता लेने की सुविधा को ऐप्लिकेशन के बाहर की गई खरीदारी माना जाता है. इसलिए, ऐप्लिकेशन के बाहर की गई खरीदारी को हैंडल करने के सबसे सही तरीकों का पालन करना न भूलें.

अपनी सदस्यता का प्रमोशन करना

चुने गए उपयोगकर्ताओं को किसी मौजूदा सदस्यता को मुफ़्त में आज़माने की अवधि बढ़ाने के लिए, प्रोमो कोड बनाए जा सकते हैं. ज़्यादा जानने के लिए, प्रोमो कोड देखें.

मुफ़्त में आज़माने की सुविधा शुरू करने से पहले, Google Play यह पुष्टि करता है कि उपयोगकर्ता के पास पैसे चुकाने का मान्य तरीका है. कुछ उपयोगकर्ताओं को पुष्टि करने के लिए, पेमेंट के तरीके पर रोक लगाई गई या शुल्क लिया गया दिख सकता है. यह रोक या शुल्क कुछ समय के लिए होता है. बाद में, इसे वापस ले लिया जाता है या रिफ़ंड कर दिया जाता है.

मुफ़्त में आज़माने की अवधि खत्म होने के बाद, उपयोगकर्ता के पेमेंट के तरीके से सदस्यता की पूरी कीमत ले ली जाती है.

अगर कोई उपयोगकर्ता मुफ़्त में आज़माने की अवधि के दौरान किसी भी समय सदस्यता रद्द करता है, तो भी मुफ़्त में आज़माने की अवधि खत्म होने तक उसकी सदस्यता चालू रहती है. इसके लिए, उपयोगकर्ता से कोई शुल्क नहीं लिया जाता.

रद्द करना, रिफ़ंड करना या रद्द करना

किसी सदस्यता को रद्द करने, रिफ़ंड करने या रद्द करने के लिए, Google Play Developer API का इस्तेमाल किया जा सकता है. यह सुविधा Google Play Console में भी उपलब्ध है.

  • रद्द करना: उपयोगकर्ता, Google Play पर सदस्यता रद्द कर सकते हैं. आपके पास, उपयोगकर्ताओं को अपने ऐप्लिकेशन या वेबसाइट पर सदस्यता रद्द करने का विकल्प देने का भी विकल्प होता है. आपके ऐप्लिकेशन को रद्द करना सेक्शन में बताए गए तरीके से, सदस्यताओं को रद्द करना चाहिए.
  • रिफ़ंड: रिफ़ंड करने पर, उपयोगकर्ता सदस्यता का इस्तेमाल जारी रख सकता है. रिफ़ंड का इस्तेमाल तब किया जा सकता है, जब किसी तकनीकी गड़बड़ी की वजह से उपयोगकर्ता आपके प्रॉडक्ट को ऐक्सेस न कर पाए, लेकिन अब वह गड़बड़ी ठीक हो गई हो. ध्यान दें कि अगर आपको सबसे हाल ही के पेमेंट से ज़्यादा रिफ़ंड देना है या कुछ हिस्से का रिफ़ंड देना है, तो आपको Google Play Console का इस्तेमाल करना होगा.
  • रद्द करना: रद्द करने पर, उपयोगकर्ता के पास सदस्यता का ऐक्सेस तुरंत नहीं रहेगा. इसका इस्तेमाल तब किया जा सकता है, जब किसी तकनीकी गड़बड़ी की वजह से उपयोगकर्ता आपके प्रॉडक्ट को ऐक्सेस न कर पाए और वह प्रॉडक्ट का इस्तेमाल जारी न रखना चाहे. आपका ऐप्लिकेशन, रद्द करने में बताए गए तरीके से, सदस्यता रद्द करने की प्रक्रिया को मैनेज करना चाहिए.

यहां दी गई टेबल में, रद्द करने, रिफ़ंड करने, और रद्द करने के बीच के अंतर को दिखाया गया है.

रिन्यूअल की सुविधा बंद हो जाती है पैसे रिफ़ंड करना ऐक्सेस वापस लेना
रद्द करें हां नहीं नहीं
रिफ़ंड नहीं हां नहीं
रद्द करें हां हां हां

किसी सदस्य के लिए बिलिंग को कुछ समय के लिए रोकना

Google Play डेवलपर एपीआई में Purchases.subscriptions:defer का इस्तेमाल करके, अपने-आप रिन्यू होने वाली सदस्यता के लिए, अगली बिलिंग की तारीख को पहले से सेट किया जा सकता है. सदस्यता शुल्क के लिए तय की गई अवधि के दौरान, उपयोगकर्ता के पास आपके कॉन्टेंट का पूरा ऐक्सेस होता है. हालांकि, उससे कोई शुल्क नहीं लिया जाता. सदस्यता रिन्यू होने की तारीख को नई तारीख के तौर पर अपडेट कर दिया जाएगा.

प्रीपेड प्लान के लिए, सदस्यता खत्म होने का समय टालने के लिए, बिलिंग रोकने की सुविधा देने वाले एपीआई का इस्तेमाल किया जा सकता है.

पेमेंट में देरी की सुविधा की मदद से, ये काम किए जा सकते हैं:

  • उपयोगकर्ताओं को खास ऑफ़र के तौर पर, बिना किसी शुल्क के ऐक्सेस दें. जैसे, किसी फ़िल्म को खरीदने पर एक हफ़्ते के लिए मुफ़्त ऐक्सेस देना.
  • ग्राहकों को भरोसे के तौर पर मुफ़्त ऐक्सेस दें.

हर एपीआई कॉल के लिए, बिलिंग को कम से कम एक दिन और ज़्यादा से ज़्यादा एक साल तक के लिए टाला जा सकता है. बिलिंग को और भी आगे बढ़ाने के लिए, बिलिंग की नई तारीख से पहले एपीआई को फिर से कॉल किया जा सकता है.

उदाहरण के लिए, डार्सी ने Fishing Quarterly ऐप्लिकेशन के ऑनलाइन कॉन्टेंट की हर महीने की सदस्यता ली है. आम तौर पर, हर महीने की पहली तारीख को उनसे 1.25 पाउंड का बिल भेजा जाता है. मार्च में, उन्होंने ऐप्लिकेशन पब्लिशर के लिए ऑनलाइन सर्वे में हिस्सा लिया था. पब्लिशर ने अगला पेमेंट 15 मई तक के लिए टाल दिया है. इससे, क्रिएटर को छह हफ़्ते तक बिना पैसे चुकाए वीडियो अपलोड करने की सुविधा मिलती है. यह तारीख, क्रिएटर की बिलिंग की शेड्यूल की गई पिछली तारीख, यानी 1 अप्रैल से छह हफ़्ते बाद की है. अप्रैल या मई की शुरुआत के लिए, डार्सी से कोई शुल्क नहीं लिया गया और उसके पास अब भी कॉन्टेंट का ऐक्सेस है. 15 मई को, उससे महीने के लिए सदस्यता का सामान्य शुल्क 1.25 पाउंड लिया जाता है. अब उसकी सदस्यता का अगला रिन्यूअल 15 जून को होगा.

सदस्यता को टालने पर, उपयोगकर्ता को ईमेल या ऐप्लिकेशन में इसकी सूचना दी जा सकती है कि उसकी बिलिंग की तारीख बदल गई है.

पेमेंट अस्वीकार होने की समस्या हल करना

अगर सदस्यता रिन्यू करने के दौरान पेमेंट से जुड़ी समस्याएं आती हैं, तो Google कुछ समय के लिए सदस्यता को रिन्यू करने की कोशिश करता रहेगा. इसके बाद ही, वह सदस्यता रद्द करेगा. खाता वापस पाने की इस अवधि में, ग्रेस पीरियड के बाद खाते पर रोक लगाने की अवधि आ सकती है. इस दौरान, Google उपयोगकर्ता को ईमेल और सूचनाएं भेजता है, ताकि वह पैसे चुकाने का तरीका अपडेट कर सके.

पेमेंट अस्वीकार होने पर, सदस्यता के लिए ग्रेस पीरियड शुरू हो जाता है. हालांकि, इसके लिए ज़रूरी है कि ग्रेस पीरियड को कॉन्फ़िगर किया गया हो. ग्रेस पीरियड के दौरान, आपको यह पक्का करना चाहिए कि उपयोगकर्ता के पास सदस्यता के तहत मिलने वाले एनटाइटलमेंट का ऐक्सेस अब भी हो.

ग्रेस पीरियड खत्म होने के बाद, सदस्यता खाते पर रोक की अवधि में चली जाती है. खाते पर रोक लगाने के दौरान, आपको यह पक्का करना चाहिए कि उपयोगकर्ता के पास सदस्यता के तहत मिलने वाले एनटाइटलमेंट का ऐक्सेस न हो.

Google Play Console में जाकर, अपने-आप रिन्यू होने वाले हर बुनियादी प्लान के ग्रेस पीरियड और खाते पर रोक लगने की अवधि तय की जा सकती है. सदस्यता की अवधि, डिफ़ॉल्ट वैल्यू से कम बताने पर, ऐसी सदस्यताओं की संख्या में कमी आ सकती है जिनके लिए पेमेंट अस्वीकार होने के बाद, फिर से कोशिश करने पर पेमेंट मिल जाए.

पेमेंट अस्वीकार होने पर, सदस्यता को वापस पाने की संभावना को बढ़ाने के लिए, अपने उपयोगकर्ता को पेमेंट से जुड़ी समस्या के बारे में बताएं और उसे ठीक करने के लिए कहें.

ग्रेस पीरियड और खाता रोकना सेक्शन में बताए गए तरीके से, यह कार्रवाई खुद की जा सकती है. इसके अलावा, इन-ऐप्लिकेशन मैसेजिंग एपीआई को लागू किया जा सकता है. इसमें Google, आपके ऐप्लिकेशन में उपयोगकर्ताओं को मैसेज दिखाता है.

इन-ऐप्लिकेशन मैसेज

अगर आपने InAppMessageCategoryId.TRANSACTIONAL की मदद से, ऐप्लिकेशन में मैसेज करने की सुविधा चालू की है, तो Google Play, ग्रेस पीरियड और खाते के रोके जाने के दौरान, उपयोगकर्ताओं को मैसेज दिखाएगा. साथ ही, उन्हें ऐप्लिकेशन से बाहर निकले बिना पेमेंट करने का मौका देगा. ऐसा हर दिन एक बार किया जाएगा.

स्नैकबार में, उपयोगकर्ता को पेमेंट से जुड़ी समस्या ठीक करने के लिए सूचना देना
20वीं इमेज. स्नैकबार, जिसमें उपयोगकर्ता को पेमेंट से जुड़ी समस्या ठीक करने के लिए कहा गया है.

हमारा सुझाव है कि जब भी उपयोगकर्ता ऐप्लिकेशन खोले, तब इस एपीआई को कॉल करें. इससे यह तय किया जा सकेगा कि मैसेज दिखाया जाना चाहिए या नहीं.

अगर उपयोगकर्ता ने अपनी सदस्यता वापस पा ली है, तो आपको खरीदारी टोकन के साथ 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_PENDING की स्थिति से शुरू होती है और SUBSCRIPTION_STATE_ACTIVE की स्थिति में बदल जाती है. अगर लेन-देन की समयसीमा खत्म हो जाती है या उपयोगकर्ता ने उसे रद्द कर दिया है, तो वह SUBSCRIPTION_STATE_PENDING_PURCHASE_EXPIRED पर चला जाता है. लेन-देन पूरा होने के बाद ही, उपयोगकर्ता के एनटाइटलमेंट को अपडेट करना चाहिए.

लंबित लेन-देन वाली शुरुआती खरीदारी के लिए, सदस्यता की स्थिति में बदलाव करना आसान है. जब उपयोगकर्ता किसी ऐसे लेन-देन को शुरू करता है जो अभी तक पूरा नहीं हुआ है, तो आपके ऐप्लिकेशन को Purchase के साथ PENDING स्टेटस मिलता है. लेन-देन पूरा होने पर, आपके ऐप्लिकेशन को Purchase फिर से मिलता है. साथ ही, इसकी स्थिति PURCHASED पर अपडेट हो जाती है. आपके RTDN क्लाइंट को, SUBSCRIPTION_PURCHASED टाइप वाला एक SubscriptionNotification मैसेज भेजा जाता है. खरीदारी की पुष्टि करने के लिए सामान्य प्रोसेस अपनाएं, उपयोगकर्ता को कॉन्टेंट का ऐक्सेस दें, और खरीदारी की पुष्टि करें. अगर लेन-देन की समयसीमा खत्म हो जाती है या उसे रद्द कर दिया जाता है, तो आपके RTDN क्लाइंट को SubscriptionNotification टाइप वाला SUBSCRIPTION_PENDING_PURCHASE_CANCELED मैसेज भेजा जाता है. ऐसे मामलों में, उपयोगकर्ता के पास कॉन्टेंट का ऐक्सेस कभी नहीं होना चाहिए.

टॉप-अप, अपग्रेड या डाउनग्रेड करने पर, पुरानी और नई सदस्यताओं की स्थिति में बदलाव होता है. जब उपयोगकर्ता, टॉप-अप, अपग्रेड या डाउनग्रेड करने के लिए कोई लेन-देन शुरू करता है, तो आपके ऐप्लिकेशन को PendingPurchaseUpdate ऑब्जेक्ट के साथ, पुरानी सदस्यता के लिए Purchase मिलता है. इस दौरान, उपयोगकर्ता के पास अब भी पुरानी सदस्यता है और उसे नई सदस्यता नहीं मिली है. PendingPurchaseUpdate ऑब्जेक्ट पर getProducts() और getPurchaseToken() को कॉल करने पर, नई सदस्यता के प्रॉडक्ट आईडी और खरीदारी टोकन दिखते हैं. लेन-देन पूरा होने के बाद, आपके ऐप्लिकेशन को एक Purchase मिलता है. इसमें नई सदस्यता के लिए, टॉप-लेवल परचेज़ टोकन सेट होता है और स्थिति PURCHASED पर सेट होती है. आपके RTDN क्लाइंट को SubscriptionNotification मैसेज भेजा जाता है, जिसमें टाइप SUBSCRIPTION_PURCHASED होता है. सिर्फ़ इस समय, आपको खरीदारी के पुराने टोकन को नए टोकन से बदलना चाहिए और कॉन्टेंट के लिए उपयोगकर्ता के ऐक्सेस को अपडेट करना चाहिए. अगर लेन-देन की समयसीमा खत्म हो जाती है या उसे रद्द कर दिया जाता है, तो आपके RTDN क्लाइंट को SubscriptionNotification मैसेज भेजा जाता है. इस मैसेज का टाइप SUBSCRIPTION_PENDING_PURCHASE_CANCELED होता है. ऐसे मामलों में, उपयोगकर्ता के पास अब भी पुरानी सदस्यता के कॉन्टेंट का ऐक्सेस होना चाहिए.