सदस्यता का लाइफ़साइकल

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

अपने-आप रिन्यू होने वाली सदस्यताओं का लाइफ़साइकल मैनेज करना

जब किसी उपयोगकर्ता की सदस्यता की स्थिति बदलती है, तो आपके बैकएंड सर्वर को एक SubscriptionNotification मैसेज मिलता है

पहली इमेज. अपने-आप रिन्यू होने वाली सदस्यता की खरीदारी के लिए, लाइफ़साइकल की स्थितियां और ट्रांज़िशन इवेंट.

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

खरीदारी का टोकन, सदस्यता के साइन अप से लेकर खत्म होने के 60 दिनों बाद तक मान्य होता है. इस तारीख के बाद, Google Play Developer API को कॉल करने के लिए, खरीदारी टोकन का इस्तेमाल नहीं किया जा सकेगा.

अपने-आप रिन्यू होने वाली नई सदस्यताएं खरीदना

जब कोई उपयोगकर्ता सदस्यता खरीदता है, तो आपके RTDN क्लाइंट को SubscriptionNotification मैसेज भेजा जाता है. इस मैसेज का टाइप SUBSCRIPTION_PURCHASED होता है. चाहे आपको यह सूचना मिले या आपने PurchasesUpdatedListener के ज़रिए इन-ऐप्लिकेशन खरीदारी रजिस्टर की हो या अपने ऐप्लिकेशन के onResume() तरीके से खरीदारी को मैन्युअल तरीके से फ़ेच किया हो, आपको नई खरीदारी को अपने सुरक्षित बैकएंड में प्रोसेस करना चाहिए. ऐसा करने के लिए, इन चरणों का अनुसरण करें:

  1. सदस्यता का ऐसा संसाधन पाने के लिए, purchases.subscriptionsv2.get एंडपॉइंट से क्वेरी करें जिसमें सदस्यता की मौजूदा स्थिति शामिल हो.
  2. पक्का करें कि subscriptionState फ़ील्ड की वैल्यू SUBSCRIPTION_STATE_ACTIVE हो.
  3. खरीदारी की पुष्टि करें.
  4. उपयोगकर्ता को कॉन्टेंट का ऐक्सेस दें. अगर खरीदारी के समय setObfuscatedAccountId और setObfuscatedProfileId का इस्तेमाल करके आइडेंटिफ़ायर सेट किए गए थे, तो सदस्यता संसाधन के ExternalAccountIdentifiers ऑब्जेक्ट की मदद से, खरीदारी से जुड़े उपयोगकर्ता खाते की पहचान की जा सकती है.

Play Billing Library में, सदस्यता की पुष्टि करने का तरीका भी शामिल है, acknowledgePurchase(). साथ ही, पुष्टि की स्थिति देखने का तरीका भी शामिल है, isAcknowledged(). हालांकि, हमारा सुझाव है कि बेहतर सुरक्षा के लिए, खरीदारी की प्रोसेस को अपने बैकएंड में मैनेज करें.

नई खरीदारी के लिए सदस्यता का संसाधन, नीचे दिए गए उदाहरण जैसा दिखता है:

{
  "kind": "androidpublisher#subscriptionPurchaseV2",
  "startTime": "2022-04-22T18:39:58.270Z",
  "regionCode": "US",
  "subscriptionState": "SUBSCRIPTION_STATE_ACTIVE",
  "latestOrderId": "GPA.3333-4137-0319-36762",
  "acknowledgementState": "ACKNOWLEDGEMENT_STATE_PENDING", // need to acknowledge new purchases
  "lineItems": [
    {
      "productId": "sub_variant_plan01",
      "expiryTime": next_renewal_date,
      "autoRenewingPlan": {
        "autoRenewEnabled": true
      }
    }
  ],
}

सदस्यता रिन्यू करना

बिना किस्त वाली, अपने-आप रिन्यू होने वाली सदस्यताओं के लिए, सदस्यता रिन्यू होने पर SUBSCRIPTION_RENEWED सूचना भेजी जाती है. किस्तों में पैसे चुकाकर ली जाने वाली सदस्यताओं के लिए, बिलिंग की तारीख को हर बार पैसे चुकाने पर, आपको SUBSCRIPTION_RENEWED सूचना भेजी जाती है. पक्का करें कि उपयोगकर्ता के पास अब भी सदस्यता का एनटाइटलमेंट है. इसके बाद, Google Play Developer API से मिले सदस्यता संसाधन में दिए गए नए expiryTime की मदद से, सदस्यता की स्थिति अपडेट करें. सदस्यता का रिसॉर्स, नीचे दिए गए उदाहरण जैसा दिखता है:

{
  "kind": "androidpublisher#subscriptionPurchaseV2",
  "startTime": "2022-04-22T18:39:58.270Z",
  "regionCode": "US",
  "subscriptionState": "SUBSCRIPTION_STATE_ACTIVE",
  "latestOrderId": "GPA.3333-4137-0319-36762",
  "acknowledgementState": "ACKNOWLEDGEMENT_STATE_ACKNOWLEDGED",
  "lineItems": [
    {
      "productId": "sub_variant_plan01",
      "expiryTime": next_renewal_date,
      "autoRenewingPlan": {
        "autoRenewEnabled": true
      }
    }
  ]
}

आपको सदस्यता के रिन्यूअल की पुष्टि करने की ज़रूरत नहीं है.

ग्रेस पीरियड

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

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

सदस्यता की स्थिति को अपने बैकएंड के साथ सिंक करने से, आपको पेमेंट अस्वीकार होने के बारे में ज़्यादा जानकारी मिलती है. साथ ही, अनचाहे चर्न आउट को कम करने के लिए, आपको ज़्यादा जानकारी मिलती है. जब उपयोगकर्ता ग्रेस पीरियड में प्रवेश करता है, तब सूचना पाने के लिए, SUBSCRIPTION_IN_GRACE_PERIOD टाइप वाले SubscriptionNotification मैसेज सुनें. जब उपयोगकर्ता ग्रेस पीरियड में होता है, तो सदस्यता के संसाधन में autoRenewEnabled = true होता है. Google Play, ग्रेस पीरियड खत्म होने तक expiryTime वैल्यू को डाइनैमिक तौर पर बढ़ाता रहता है. ऐसा इसलिए होता है, क्योंकि एनटाइटलमेंट तब तक बना रहना चाहिए, जब तक उपयोगकर्ता उसे रद्द नहीं कर देता या ग्रेस पीरियड की तय अवधि खत्म नहीं हो जाती. इस अवधि के दौरान subscriptionState फ़ील्ड की वैल्यू SUBSCRIPTION_STATE_IN_GRACE_PERIOD है. सदस्यता का संसाधन, नीचे दिए गए उदाहरण जैसा दिखता है:

{
  "kind": "androidpublisher#subscriptionPurchaseV2",
  ...
  "subscriptionState": "SUBSCRIPTION_STATE_IN_GRACE_PERIOD",
  ...
  "lineItems": [
    {
      "productId": "sub_variant_plan01",
      "expiryTime": timestamp_in_future,
      "autoRenewingPlan": {
        "autoRenewEnabled": true
      }
    }
  ],
}

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

उपयोगकर्ता के पेमेंट का तरीका ठीक करने के बाद, सदस्यता रिन्यू हो जाती है. रिन्यूअल की तारीख वही रहती है जो सदस्यता खरीदते समय तय की गई थी. सदस्यता रिन्यू करना सेक्शन में बताए गए तरीके से, रिन्यूअल को मैनेज किया जा सकता है.

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

ग्रेस पीरियड के दौरान खाते का ऐक्सेस और उसे वापस पाना

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

दूसरी इमेज. किसी ऐसी सदस्यता की टाइमलाइन जो ग्रेस पीरियड में जाती है और खत्म होने से पहले ठीक हो जाती है.

इन बातों का ध्यान रखना ज़रूरी है:

  • ग्रेस पीरियड के दौरान, उपयोगकर्ता के पास सदस्यता के फ़ायदों का ऐक्सेस बना रहेगा.
  • जब ग्रेस पीरियड के दौरान सदस्यता वापस ली जाती है, तो रिन्यूअल की तारीख रिसेट नहीं होती.
  • अगर ग्रेस पीरियड को बढ़ाया जाता है, जैसे कि सात दिन से 14 दिन, तो ग्रेस पीरियड के दौरान मौजूद उपयोगकर्ताओं को सदस्यता के फ़ायदों का ऐक्सेस ज़्यादा समय तक मिलता है.
  • ग्रेस पीरियड कम करने पर, जिन उपयोगकर्ताओं का ग्रेस पीरियड, नए ग्रेस पीरियड से ज़्यादा है उनकी सदस्यता के फ़ायदे तुरंत रद्द कर दिए जाते हैं. उदाहरण के लिए, अगर ग्रेस पीरियड को 14 दिन से घटाकर 7 दिन कर दिया जाता है, तो पुराने ग्रेस पीरियड के 8 से 14 दिन के बीच के उपयोगकर्ताओं की सदस्यता के फ़ायदे तुरंत रद्द कर दिए जाते हैं.
  • सदस्यता चालू रहती है और साइलेंट ग्रेस पीरियड खत्म होने तक, आपको ग्रेस पीरियड का आरटीडीएन नहीं मिलेगा

साइलेंट ग्रेस पीरियड

ग्रेस पीरियड को 0 दिन पर सेट किया जा सकता है. हालांकि, Play कम से कम एक दिन तक इंतज़ार करेगा, ताकि पेमेंट दोबारा करने के लिए ज़रूरत के मुताबिक समय मिल सके. इस साइलेंट ग्रेस पीरियड की मदद से, पेमेंट प्रोसेस करने के लिए एक सुरक्षा कवच मिलता है. इस 24‑घंटे की अवधि के दौरान, सदस्यता ACTIVE स्थिति में बनी रहती है.

सदस्यता की स्थिति में होने वाले बदलावों के बारे में अप-टू-डेट रहने का सबसे अच्छा तरीका यह है कि आप रीयल-टाइम डेवलपर सूचनाओं (आरटीडीएन) को सुनें और उन पर प्रतिक्रिया दें. सदस्यता की ज़्यादा सटीक स्थिति पाने के लिए, सदस्यता खत्म होने के समय के बजाय, आरटीडीएन के समय पर purchases.subscriptionsv2.get() तरीका आज़माएं.

24 घंटे के साइलेंट ग्रेस पीरियड के बाद, सदस्यता की स्थिति के आधार पर, आपको इनमें से कोई एक सूचना मिलेगी:

  • SUBSCRIPTION_ON_HOLD (अगर चालू है)
  • SUBSCRIPTION_CANCELED (अगर रद्द किया गया है)
  • SUBSCRIPTION_EXPIRED (अगर समयसीमा खत्म हो गई है)
  • SUBSCRIPTION_RENEWED (अगर रिन्यूअल हो गया है)

सदस्यता की नई स्थिति जानने के लिए, 24 घंटे के साइलेंट ग्रेस पीरियड के बाद, किसी भी समय subscriptionV2.get() का इस्तेमाल किया जा सकता है.

खाते पर रोक लगने की अवधि

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

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

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

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

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

डेवलपर से जुड़ी रीयल-टाइम सूचनाओं की मदद से, आपको SUBSCRIPTION_ON_HOLD टाइप वाला SubscriptionNotification मैसेज मिलता है. यह मैसेज तब मिलता है, जब किसी सदस्य के खाते पर रोक लगाई जाती है. सदस्यता की नई जानकारी पाने के लिए, अपने सुरक्षित बैकएंड सर्वर से purchases.subscriptionsv2.get तरीका कॉल करें. खाते पर रोक लगाए जाने के दौरान, सदस्यता के संसाधन के expiryTime फ़ील्ड को किसी पुराने टाइमस्टैंप पर सेट किया जाता है. साथ ही, subscriptionState फ़ील्ड को SUBSCRIPTION_STATE_ON_HOLD पर सेट किया जाता है:

{
  "kind": "androidpublisher#subscriptionPurchaseV2",
  ...
  "subscriptionState": "SUBSCRIPTION_STATE_ON_HOLD",
  ...
  "lineItems": [
    {
      "productId": "sub_variant_plan01",
      "expiryTime": timestamp_in_past,
      ...
    }
  ],
}

ऐक्सेस वापस पाने के लिए, उपयोगकर्ताओं को पेमेंट का तरीका ठीक करना होगा. Play, खाते में रोके गए पैसों के बारे में उपयोगकर्ताओं को बताता है. साथ ही, आपको भी उन्हें पेमेंट के तरीके को ठीक करने के लिए कहना चाहिए.

उपयोगकर्ता के पेमेंट का तरीका ठीक करने के बाद, सदस्यता फिर से चालू हो जाती है. इसके बाद, आपको सदस्यता वाले कॉन्टेंट का ऐक्सेस वापस देना होगा. इस मामले में, खरीदारी का टोकन वही होता है जो खाते पर रोक लगाए जाने से पहले था. ऐसा इसलिए होता है, क्योंकि उसी खरीदारी को वापस लाया जा रहा है. साथ ही, आपको SUBSCRIPTION_RECOVERED टाइप वाला आरटीडीएन मिलता है.

किस्त में पैसे चुकाकर ली जाने वाली सदस्यताओं के लिए, पेमेंट के हर प्रयास पर पेमेंट अस्वीकार होने और पैसे वापस आने की स्थिति हो सकती है.

सदस्यता वापस मिलने के बाद, Play Billing Library queryPurchasesAsync() तरीके से सदस्यता को फिर से दिखाती है. अगर किसी उपयोगकर्ता के पास सदस्यता का एनटाइटलमेंट है या नहीं, यह पता करने के लिए इस तरीके का इस्तेमाल किया जाता है, तो आपका ऐप्लिकेशन खाते के रोके जाने की स्थिति से सदस्यता को अपने-आप वापस ला देगा.

सदस्यता वापस मिलने और उपयोगकर्ता को ऐक्सेस वापस मिलने पर सूचना पाने के लिए, SUBSCRIPTION_RECOVERED टाइप के SubscriptionNotification मैसेज को सुनें. अगर इस सूचना के बाद सदस्यता के लिए क्वेरी की जाती है, तो expiryTime फ़ील्ड को आने वाले समय में टाइमस्टैंप पर सेट किया जाता है और subscriptionState फ़ील्ड को फिर से SUBSCRIPTION_STATE_ACTIVE पर सेट किया जाता है:

{
  "kind": "androidpublisher#subscriptionPurchaseV2",
  ...
  "subscriptionState": "SUBSCRIPTION_STATE_ACTIVE",
  ...
  "lineItems": [
    {
      "productId": "sub_variant_plan01",
      "expiryTime": next_renewal_date,
      ...
    }
  ],
}

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

{
  "kind": "androidpublisher#subscriptionPurchaseV2",
  ...
  "subscriptionState": "SUBSCRIPTION_STATE_CANCELED",
  ...
  "lineItems": [
    {
      "productId": "sub_variant_plan01",
      "expiryTime": timestamp_in_past,
      ...
    }
  ],
}

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

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

खाते पर रोक लगने के बाद, उसका ऐक्सेस और उसे वापस पाना

तीसरे चित्र में, खाते को होल्ड में रखने और फिर उपयोगकर्ता के पेमेंट का तरीका ठीक करने पर, सदस्यता वापस पाने की टाइमलाइन दिखाई गई है.

तीसरी इमेज. ऐसी सदस्यता की टाइमलाइन जिस पर खाते पर रोक लगाई गई है और वह रोक हटने से पहले ही वापस आ गई है.

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

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

इन बातों का ध्यान रखना ज़रूरी है:

  • किसी सदस्यता को खाते में रोके जाने से पहले, Google Play 48 घंटे तक पेमेंट करने के तरीके से शुल्क लेने की कोशिश करता है. इस दौरान, उपयोगकर्ता के पास सदस्यता के फ़ायदे रहते हैं. फिर से कोशिश करने की यह अवधि खत्म होने के बाद, सदस्यता को खाते पर रोक लगा दी जाती है. साथ ही, उपयोगकर्ता को सदस्यता के फ़ायदों का ऐक्सेस नहीं मिलता.
  • जब सदस्यता को रोके जाने की स्थिति से, पैसे चुकाने के तरीके के काम न करने पर उसे फिर से शुरू किया जाता है, तो सदस्यता सीधे खाते पर रोक लगने की स्थिति में चली जाती है.
  • जब खाते पर लगी रोक हट जाती है, तो सदस्यता रिन्यू होने की तारीख रीसेट हो जाती है.

समय सीमा खत्म होना

सदस्यता की समयसीमा खत्म होने के बाद, उपयोगकर्ता के पास सदस्यता का ऐक्सेस नहीं होना चाहिए. ऐसे में, SUBSCRIPTION_EXPIRED टाइप वाला SubscriptionNotification मैसेज भेजा जाता है. यह सूचना मिलने पर, सदस्यता से जुड़ा सबसे नया संसाधन पाने के लिए, Google Play Developer API से क्वेरी करें. subscriptionState के SUBSCRIPTION_STATE_EXPIRED होने की पुष्टि करने के बाद, एनटाइटलमेंट हटाएं और अपने बैकएंड में खरीदारी की स्थिति को अमान्य के तौर पर रजिस्टर करें. सदस्यता का रिसॉर्स, नीचे दिए गए उदाहरण जैसा दिखता है:

{
  "kind": "androidpublisher#subscriptionPurchaseV2",
  ...
  "subscriptionState": "SUBSCRIPTION_STATE_EXPIRED",
  ...
  "lineItems": [
    {
      "productId": "sub_variant_plan01",
      "expiryTime": expiration_time_in_past,
      ...
    }
  ],
}

रद्द की गई सदस्यताएं

कोई उपयोगकर्ता, Play के सदस्यता केंद्र से अपनी सदस्यता को अपनी मर्ज़ी से रद्द कर सकता है. इसके अलावा, अगर खाता रोके जाने के बाद भी खाता वापस नहीं मिलता है, तो उसकी सदस्यता अपने-आप रद्द हो जाएगी. डेवलपर, purchases.subscriptions.cancel का इस्तेमाल करके भी सदस्यता रद्द कर सकते हैं. सदस्यता रद्द होने के बाद, उपयोगकर्ता के पास मौजूदा बिलिंग साइकल के खत्म होने तक कॉन्टेंट का ऐक्सेस बना रहता है. बिलिंग साइकल खत्म होने पर, ऐक्सेस रद्द कर दिया जाना चाहिए.

अपने-आप रिन्यू होने वाली सदस्यता को रद्द करने पर, SUBSCRIPTION_CANCELED सूचना ट्रिगर होती है. जब आपको यह सूचना मिलती है, तो Google Play Developer API से मिले सदस्यता संसाधन में subscriptionState फ़ील्ड को SUBSCRIPTION_STATE_CANCELED पर सेट किया जाता है. साथ ही, expiryTime फ़ील्ड में वह तारीख होती है जब उपयोगकर्ता को सदस्यता का ऐक्सेस नहीं मिलेगा. अगर वह तारीख बीत चुकी है, तो उपयोगकर्ता को एनटाइटलमेंट तुरंत हटा देना चाहिए. उदाहरण के लिए, ऐसा तब हो सकता है, जब कोई उपयोगकर्ता पेमेंट अस्वीकार होने की वजह से खाते पर रोक लगाए जाने के दौरान, सदस्यता रद्द कर दे.

रद्द की गई खरीदारी के लिए सदस्यता का संसाधन, नीचे दिए गए उदाहरण जैसा दिखता है:

{
  "kind": "androidpublisher#subscriptionPurchaseV2",
  ...
  "subscriptionState": "SUBSCRIPTION_STATE_CANCELED",
  ...
  "lineItems": [
    {
      "productId": "sub_variant_plan01",
      "expiryTime": expiration_time,
      ...
    }
  ],
}

किस्तों में पैसे चुकाकर ली जाने वाली सदस्यताओं के लिए, उपयोगकर्ता के सदस्यता रद्द करने पर SUBSCRIPTION_CANCELLATION_SCHEDULED सूचना भेजी जाती है. ऐसा तब किया जाता है, जब सदस्यता की अवधि के दौरान पेमेंट बाकी हों. सदस्यता रद्द करने का अनुरोध अभी तक स्वीकार नहीं किया गया है. यह अनुरोध, कमिटमेंट की मौजूदा अवधि खत्म होने के बाद लागू होगा. यह सूचना मिलने पर, Google Play Developer API से मिले सदस्यता संसाधन में, subscriptionState फ़ील्ड को SUBSCRIPTION_STATE_ACTIVE पर सेट किया जाता है. ऐसा इसलिए होता है, क्योंकि क़िस्त वाली सदस्यता, कमिटमेंट की अवधि खत्म होने तक चालू रहती है. हालांकि, pendingCancellation ऑब्जेक्ट खाली है. SUBSCRIPTION_CANCELED सूचना भेजी जाती है. इसके बाद, कमिटमेंट की अवधि खत्म होने पर SUBSCRIPTION_EXPIRED सूचना भेजी जाती है.

किस्तों में पैसे चुकाकर ली जाने वाली सदस्यता को रद्द करने का अनुरोध, सदस्यता के संसाधन के तौर पर दिखता है. यह इस उदाहरण की तरह दिखता है:

{
  "kind": "androidpublisher#subscriptionPurchaseV2",
  ...
  "subscriptionState": "SUBSCRIPTION_STATE_ACTIVE",
  ...
  "lineItems": [
    {
      "productId": "sub_plan01",
      "expiryTime": expiration_time,
      "autoRenewingPlan": {
        "autoRenewEnabled": true,
        "recurringPrice": {
          "currencyCode": "USD",
          "units": "1",
          "nanos": 990000000
        },
        "installmentDetails": {
          "initialCommittedPaymentsCount": 6,
          "remainingCommittedPaymentsCount": 5,
          "pendingCancellation": {}
      ...
        }
      }
    }
  ],
}

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

अगर कोई सदस्यता रद्द कर दी गई है, लेकिन उसकी समयसीमा खत्म नहीं हुई है, तो उसे queryPurchasesAsync() से रिफ़ंड किया जाता है. आपके पास अपने ऐप्लिकेशन में एक मैसेज दिखाने का विकल्प होता है. इसमें उपयोगकर्ता को यह जानकारी दी जाती है कि उसकी सदस्यता रद्द कर दी गई है. साथ ही, सदस्यता खत्म होने की तारीख भी दी जाती है.

सहमति रद्द करना

सदस्यता रद्द करने की कई वजहें हो सकती हैं. जैसे, आपका बैकएंड, purchases.subscriptionsv2.revoke का इस्तेमाल करके सदस्यता रद्द कर सकता है या खरीदारी के लिए किया गया शुल्क वापस ले सकता है. इस स्थिति में, उपयोगकर्ता का एनटाइटलमेंट तुरंत रद्द करें. ऐसा होने पर, SubscriptionNotification मैसेज टाइप के साथ SUBSCRIPTION_REVOKED मैसेज भेजा जाता है. यह सूचना मिलने पर, Google Play Developer API से मिले सदस्यता रिसॉर्स में subscriptionState फ़ील्ड को SUBSCRIPTION_STATE_EXPIRED पर सेट किया जाता है.

रद्द की गई खरीदारी के लिए सदस्यता का संसाधन, नीचे दिए गए उदाहरण जैसा दिखता है:

{
  "kind": "androidpublisher#subscriptionPurchaseV2",
  ...
  "subscriptionState": "SUBSCRIPTION_STATE_EXPIRED",
  ...
  "lineItems": [
    {
      "productId": "sub_variant_plan01",
      "expiryTime": expiration_time,
      ...
    }
  ]
}

बाद में पैसे चुकाकर ली जाने वाली सदस्यताएं

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

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

बाद में शुरू होने वाली सदस्यता के लिए सदस्यता संसाधन, नीचे दिए गए उदाहरण जैसा दिखता है:

{
  "kind": "androidpublisher#subscriptionPurchaseV2",
  ...
  "subscriptionState": "SUBSCRIPTION_STATE_ACTIVE",
  ...
  "lineItems": [
    {
      "productId": "sub_variant_plan01",
      "expiryTime": timestamp_in_future,
      ...
    }
  ],
}

रोकी गई सदस्यताएं

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

बार-बार रिन्यू होने वाली सदस्यता हर हफ़्ते हर महीने तीन महीने छह महीने सालाना
वीडियो को रोकने के लिए उपलब्ध समय* एक हफ़्ता
दो हफ़्ते
तीन हफ़्ते
चार हफ़्ते
एक महीना
दो महीने
तीन महीने
एक महीना
दो महीने
तीन महीने
एक महीना
दो महीने
तीन महीने
लागू नहीं
*किराये में कभी भी बदलाव हो सकता है.

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

पांचवीं इमेज. कोई उपयोगकर्ता अपनी सदस्यता को रोकता है और फिर से चालू करता है.
छठी इमेज. कोई उपयोगकर्ता अपनी सदस्यता रोकता है और फिर उसका खाता रोक दिया जाता है.

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

जब किसी उपयोगकर्ता की सदस्यता रोकी जाती है, तो Play Billing Library, queryPurchasesAsync() तरीके से सदस्यता वापस नहीं करती. अगर सदस्यता फिर से शुरू की जाती है, तो queryPurchasesAsync() तरीका इसे फिर से दिखाता है.

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

जब कोई उपयोगकर्ता अपनी सदस्यता रोकने की प्रोसेस शुरू करता है, तब SUBSCRIPTION_PAUSE_SCHEDULE_CHANGED टाइप वाला SubscriptionNotification मैसेज भेजा जाता है. इस दौरान, उपयोगकर्ता के पास रिन्यूअल की अगली तारीख तक अपनी सदस्यता का ऐक्सेस रहेगा. साथ ही, सदस्यता के संसाधन में autoRenewEnabled = true मौजूद होगा. इस समय subscriptionState फ़ील्ड की वैल्यू SUBSCRIPTION_STATE_ACTIVE है.

रोक लगने पर, SUBSCRIPTION_PAUSED टाइप वाला SubscriptionNotification मैसेज भेजा जाता है. ऐसा होने पर, उपयोगकर्ता को अपनी सदस्यता का ऐक्सेस नहीं मिलना चाहिए. साथ ही, सदस्यता के संसाधन में autoRenewEnabled = true होना चाहिए और subscriptionState फ़ील्ड SUBSCRIPTION_STATE_PAUSED पर सेट होना चाहिए. PausedStateContext ऑब्जेक्ट की जांच करके, यह देखा जा सकता है कि सदस्यता कब फिर से रिन्यू होगी.

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

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

फिर से सदस्यता लें

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

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

इस बटन पर हमेशा फिर से सदस्यता लें लेबल होता है. हालांकि, यह सदस्यता की स्थिति पर निर्भर करता है कि बटन किस तरह काम करेगा.

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

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

समयसीमा खत्म होने से पहले फ़ाइलें वापस लाना

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

अगर आपका ऐप्लिकेशन, सदस्यता की स्थिति को बैकएंड के साथ सिंक करता है, तो आपको SUBSCRIPTION_RESTARTED टाइप वाले SubscriptionNotification मैसेज के लिए सुनना चाहिए. यह आरटीडीएन मिलने के बाद, आपका ऐप्लिकेशन इस सूचना का जवाब दे सकता है. साथ ही, यह रिकॉर्ड कर सकता है कि सदस्यता अब रिन्यू होने के लिए सेट है. इसके बाद, ऐप्लिकेशन में सदस्यता वापस पाने के मैसेज दिखने बंद हो जाएंगे. सदस्यता का रिसॉर्स, इस उदाहरण की तरह दिखता है:

{
  "kind": "androidpublisher#subscriptionPurchaseV2",
  ...
  "subscriptionState": "SUBSCRIPTION_STATE_ACTIVE",
  ...
  "lineItems": [
    {
      "productId": "sub_variant_plan01",
      "expiryTime": next_renewal_date
      ...
    }
  ],
}

सदस्यता खत्म होने के बाद फिर से सदस्यता लेना

अगर Google Play Console या एपीआई का इस्तेमाल करके, अपने-आप रिन्यू होने वाले बुनियादी प्लान को कॉन्फ़िगर किया गया है, ताकि उपयोगकर्ता फिर से सदस्यता ले सकें, तो वे Google Play Store में जाकर, समयसीमा खत्म हो चुकी सदस्यता को फिर से खरीद सकते हैं.

ये नई खरीदारी हैं. Google Play, एक नया खरीदारी टोकन जारी करता है. साथ ही, आपके बैकएंड को SUBSCRIPTION_PURCHASED टाइप वाला आरटीडीएन मिलता है. इस तरह की आउट-ऑफ़-ऐप्लिकेशन खरीदारी के लिए, खरीदारी की स्थिति में उस मामले में मूल खरीदारी से जुड़ा linkedPurchaseToken शामिल नहीं होता, क्योंकि मूल सदस्यता की समयसीमा पूरी तरह से खत्म हो गई है. ये नई खरीदारी हैं, जिन्हें आपके बैकएंड को किसी भी अन्य खरीदारी की तरह प्रोसेस करना होगा और उनकी पुष्टि करनी होगी.

सदस्यता को अपग्रेड, डाउनग्रेड, और फिर से सदस्यता लेना

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

इसके अलावा, Google Play Developer API से मिले सदस्यता के संसाधन में एक linkedPurchaseToken फ़ील्ड होता है. इससे उस पुरानी खरीदारी का पता चलता है जिससे उपयोगकर्ता ने सदस्यता को अपग्रेड, डाउनग्रेड या फिर से सदस्यता ली है. उस फ़ील्ड में मौजूद परचेज़ टोकन का इस्तेमाल करके, पुरानी सदस्यता देखी जा सकती है. साथ ही, मौजूदा उपयोगकर्ता खाते की पहचान की जा सकती है, ताकि नई खरीदारी को उसी खाते से जोड़ा जा सके.

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

अगर उपयोगकर्ता ने अपग्रेड, डाउनग्रेड या फिर से सदस्यता खरीदी है, तो इसे नई खरीदारी माना जाएगा. आपको इसकी पुष्टि करनी होगी. ऐसा करने के लिए, Google Play Developer API का इस्तेमाल करने का सुझाव दिया जाता है. सदस्यता का रिसॉर्स, नीचे दिए गए उदाहरण जैसा दिखता है:

{
  "kind": "androidpublisher#subscriptionPurchaseV2",
  ...
  "subscriptionState": "SUBSCRIPTION_STATE_ACTIVE",
  "linkedPurchaseToken": old_purchase_token,
  ...
  "lineItems": [
    {
      "productId": "sub_variant_plan01",
      "expiryTime": next_renewal_date,
      "autoRenewingPlan": {
        "autoRenewEnabled": true
      }
    }
  ],
}

कीमत में बदलाव

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

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

ऑप्ट-इन करने पर कीमत में बदलाव करने के लिए, उपयोगकर्ता की पुष्टि को मैनेज करना

जब कोई उपयोगकर्ता सदस्यता की कीमत में बढ़ोतरी स्वीकार करता है, तो आपको SUBSCRIPTION_PRICE_CHANGED_CONFIRMED टाइप वाला SubscriptionNotification मैसेज मिलता है. कीमत बढ़ने पर ऑप्ट-आउट करने की सुविधा के तहत कीमत में होने वाली गिरावट या सदस्यता की कीमत में होने वाली बढ़ोतरी के रिन्यू होने पर, आपको SubscriptionNotification मैसेज मिलेगा. इसमें टाइप SUBSCRIPTION_RENEWED होगा. इस सूचना को किसी भी दूसरे रीन्यूअल की तरह ही समझें.

ऐसे मामलों को हैंडल करना जहां ऑप्ट-इन करने पर कीमत में हुई बढ़ोतरी को स्वीकार नहीं किया गया है

अगर किसी उपयोगकर्ता ने बढ़ी हुई कीमत पर रिन्यूअल करने से पहले, ऑप्ट-इन करके कीमत में बढ़ोतरी को स्वीकार नहीं किया है, तो उसकी सदस्यता अपने-आप रद्द हो जाएगी. साथ ही, आपको SUBSCRIPTION_CANCELED टाइप वाला SubscriptionNotification मैसेज मिलेगा. इस इवेंट को रद्द करने के बारे में बताए गए तरीके के मुताबिक मैनेज करें.

सदस्यता की कीमत में होने वाली बढ़ोतरी से ऑप्ट-आउट करने के लिए, उपयोगकर्ता भी इसी तरीके का इस्तेमाल करके अपनी सदस्यताएं रद्द कर सकते हैं.

प्रीपेड प्लान के लाइफ़साइकल को मैनेज करना

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

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

आठवीं इमेज. सदस्यता खरीदारी के लिए, लाइफ़साइकल की स्थितियां और ट्रांज़िशन इवेंट.

प्रीपेड प्लान की सदस्यता खरीदने पर, आपके आरटीडीएन क्लाइंट को SUBSCRIPTION_PURCHASED टाइप वाला SubscriptionNotification मैसेज भेजा जाता है. इसमें हर टॉप-अप भी शामिल है. प्रीपेड प्लान की सदस्यता की मौजूदा स्थिति देखने के लिए, purchases.subscriptionsv2.get तरीका अपनाएं.

टॉप-अप खरीदारी के लिए, नया परचेज़ टोकन जारी किया जाता है. साथ ही, आपको सदस्यता की खरीदारी की नई स्थिति के हिस्से के तौर पर, linkedPurchaseToken फ़ील्ड में पिछला परचेज़ टोकन मिलता है. खरीदारी का टोकन, सदस्यता के लिए साइन अप करने की तारीख से लेकर, समयसीमा खत्म होने के 60 दिनों बाद तक मान्य होता है. इस तारीख के बाद, Google Play Developer API को कॉल करने के लिए, खरीदारी टोकन का इस्तेमाल नहीं किया जा सकेगा.

प्रीपेड प्लान की खरीदारी के लिए सदस्यता का संसाधन, नीचे दिए गए उदाहरण जैसा दिखता है:

{
  "kind": "androidpublisher#subscriptionPurchaseV2",
  "startTime": "2022-04-22T18:39:58.270Z",
  "regionCode": "US",
  "subscriptionState": "SUBSCRIPTION_STATE_ACTIVE",
  "latestOrderId": "GPA.3333-4137-0319-36762",
  "acknowledgementState": "ACKNOWLEDGEMENT_STATE_ACKNOWLEDGED",
  "lineItems": [
    {
      "productId": "prepaid_plan01",
      "expiryTime": expiry_date,
      "prepaidPlan": {
        "allowExtendAfterTime": timestamp_after_which_topups_are_allowed
      }
    }
  ]
}

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

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

प्रीपेड प्लान अपने-आप रिन्यू नहीं होते. इसलिए, इन्हें रद्द नहीं किया जा सकता. अगर किसी उपयोगकर्ता को प्रीपेड प्लान रद्द करना है, तो वह प्लान की समयसीमा खत्म होने तक इंतज़ार कर सकता है.