उपयोगकर्ताओं को उनकी पसंद का बिलिंग सिस्टम चुनने का विकल्प देने के लिए, इन-ऐप्लिकेशन इंटिग्रेशन के दिशा-निर्देश

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

Play Billing Library का सेटअप

अपने Android ऐप्लिकेशन में, Play Billing Library की डिपेंडेंसी जोड़ें. अन्य बिलिंग सिस्टम के एपीआई का इस्तेमाल करने के लिए, आपको वर्शन 5.2 या उससे नया वर्शन इस्तेमाल करना होगा. अगर आपको किसी पुराने वर्शन से माइग्रेट करना है, तो अन्य बिलिंग सिस्टम को लागू करने से पहले, माइग्रेशन गाइड में दिए गए निर्देशों का पालन करें.

Google Play से कनेक्ट करें

इंटिग्रेशन की प्रोसेस के शुरुआती चरण, Google Play Billing की इंटि101}ग्रेशन गाइड में बताए गए चरणों की तरह ही होते हैं. हालांकि, BillingClient को शुरू करते समय, कुछ बदलाव किए जाते हैं:

  • आपको यह बताने के लिए एक नया तरीका कॉल करना होगा कि आपको उपयोगकर्ता को बिलिंग के विकल्प उपलब्ध कराने हैं: enableUserChoiceBilling.
  • आपको उन मामलों को मैनेज करने के लिए, UserChoiceBillingListener रजिस्टर करना होगा जहां उपयोगकर्ता, अन्य बिलिंग सिस्टम चुनता है.

यहां दिए गए उदाहरण में, इन बदलावों के साथ BillingClient को शुरू करने का तरीका बताया गया है:

Kotlin

val purchasesUpdatedListener =
   PurchasesUpdatedListener { billingResult, purchases ->
       // Handle new Google Play purchase.
   }

val userChoiceBillingListener =
   UserChoiceBillingListener { userChoiceDetails ->
       // Handle alternative billing choice.
   }

val billingClient = BillingClient.newBuilder(context)
   .setListener(purchasesUpdatedListener)
   .enablePendingPurchases()
   .enableUserChoiceBilling(userChoiceBillingListener)
   .build()

Java

private PurchasesUpdatedListener purchasesUpdatedListener = new PurchasesUpdatedListener() {
    @Override
    public void onPurchasesUpdated(BillingResult billingResult, List<Purchase> purchases) {
        // Handle new Google Play purchase.
    }
};

private UserChoiceBillingListener userChoiceBillingListener = new UserChoiceBillingListener() {
    @Override
    public void userSelectedAlternativeBilling(
        UserChoiceDetails userChoiceDetails) {
        // Handle new Google Play purchase.
    }
};

private BillingClient billingClient = BillingClient.newBuilder(context)
    .setListener(purchasesUpdatedListener)
    .enablePendingPurchases()
    .enableUserChoiceBilling(userChoiceBillingListener)
    .build();

BillingClient को शुरू करने के बाद, आपको Google Play से कनेक्शन बनाना होगा. इसके बारे में इंटिग्रेशन गाइड में बताया गया है.

उपलब्ध प्रॉडक्ट दिखाना

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

उपयोगकर्ता की पसंद के बिलिंग सिस्टम का फ़्लो लॉन्च करना

launchBillingFlow() को कॉल करके, उपयोगकर्ता की पसंद के बिलिंग सिस्टम का फ़्लो लॉन्च करें. यह Google Play के बिलिंग सिस्टम के इंटिग्रेशन के साथ, खरीदारी का फ़्लो लॉन्च करने जैसा ही है. इसमें आपको ProductDetails इंस्टेंस और offerToken देना होता है. यह इंस्टेंस और टोकन, उस प्रॉडक्ट और ऑफ़र से जुड़ा होता है जिसे उपयोगकर्ता खरीदना चाहता है. अगर उपयोगकर्ता, Google Play के बिलिंग सिस्टम को चुनता है, तो इस जानकारी का इस्तेमाल, खरीदारी के फ़्लो को जारी रखने के लिए किया जाता है.

जब डेवलपर launchBillingFlow() को कॉल करते हैं, तो Google Play का बिलिंग सिस्टम यह जांच करता है:

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

उपयोगकर्ता का Play का देश, इस सुविधा के लिए ज़रूरी शर्तें पूरी करता है

उपयोगकर्ता का Play का देश, इस सुविधा के लिए ज़रूरी शर्तें पूरी नहीं करता है

BillingClient के सेटअप के दौरान, enableUserChoiceBilling को कॉल किया गया

उपयोगकर्ता को, उपयोगकर्ता की पसंद के हिसाब से यूएक्स दिखता है

उपयोगकर्ता को, Google Play के बिलिंग सिस्टम का स्टैंडर्ड यूएक्स दिखता है

BillingClient के सेटअप के दौरान, enableUserChoiceBilling को कॉल नहीं किया गया

उपयोगकर्ता को, Google Play के बिलिंग सिस्टम का स्टैंडर्ड यूएक्स दिखता है

उपयोगकर्ता को, Google Play के बिलिंग सिस्टम का स्टैंडर्ड यूएक्स दिखता है

उपयोगकर्ता के चुने गए विकल्प को मैनेज करना

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

जब उपयोगकर्ता, अन्य बिलिंग सिस्टम चुनता है

अगर उपयोगकर्ता, अन्य बिलिंग सिस्टम चुनता है, तो Google Play, UserChoiceBillingListener को कॉल करता है. इससे ऐप्लिकेशन को सूचना मिलती है कि उसे अन्य बिलिंग सिस्टम में, खरीदारी का फ़्लो लॉन्च करना है. खास तौर पर, userSelectedAlternativeBilling() तरीके को कॉल किया जाता है.

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

UserChoiceBillingListener को ये कार्रवाइयां करनी चाहिए:

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

अगर उपयोगकर्ता, अन्य बिलिंग सिस्टम का इस्तेमाल करके खरीदारी पूरी करता है, तो आपको Google Play को लेन-देन की रिपोर्ट करनी होगी. इसके लिए, अपने बैकएंड से Google Play Developer API को 24 घंटे के अंदर कॉल करें. साथ ही, externalTransactionToken और लेन-देन की अन्य जानकारी दें. ज़्यादा जानकारी के लिए, बैकएंड इंटिग्रेशन गाइड देखें.

यहां दिए गए उदाहरण में, UserChoiceBillingListener को लागू करने का तरीका बताया गया है:

Kotlin

private val userChoiceBillingListener =
    UserChoiceBillingListener { userChoiceDetails ->
        // Get the products being purchased by the user.
        val products = userChoiceDetails.products

        // Send external transaction token to developer backend server
        // this devBackend object is for demonstration purposes,
        // developers can implement this step however best fits their
        // app to backend communication.
        devBackend.sendExternalTransactionStarted(
            userChoiceDetails.externalTransactionToken,
            user
        )

        // Launch alternative billing
        // ...
        // The developer backend handles reporting the transaction
        // to Google Play's backend once the alternative billing
        // purchase is completed.
    }

Java

private userChoiceBillingListener userChoiceBillingListener = new UserChoiceBillingListener() {
    @Override
    public void userSelectedAlternativeBilling(
           UserChoiceDetails userChoiceDetails) {
       // Get the products being purchased by the user.
       List<Product> products =
              userChoiceDetails.getProducts();

       // Send external transaction token to developer backend server
       // this devBackend object is for demonstration purposes,
       // developers can implement this step however best fits their
       // app to backend communication.
       devBackend.sendExternalTransactionStarted(
              userChoiceDetails.getExternalTransactionToken(),
              user
       );

       // Launch alternative billing
       // ...
       // The developer backend handles reporting the transaction
       // to Google Play's backend once the alternative billing
       // purchase is completed.
    }
};

जब उपयोगकर्ता, Google Play के बिलिंग सिस्टम को चुनता है

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

  • Google Play के बिलिंग सिस्टम के ज़रिए, ऐप्लिकेशन में की जाने वाली नई खरीदारी को मैनेज करने के बारे में ज़्यादा जानने के लिए, लाइब्रेरी इंटिग्रेशन गाइड में खरीदारी की प्रोसेस करना लेख देखें.
  • सदस्यता की खरीदारी के बारे में ज़्यादा जानकारी पाने के लिए, सदस्यता मैनेज करने की गाइड में नई सदस्यताएं लेख देखें.

सदस्यता में होने वाले बदलावों को मैनेज करना

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

इस सेक्शन में, सदस्यता में होने वाले बदलावों के कुछ सामान्य परिदृश्यों को मैनेज करने का तरीका बताया गया है.

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

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

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

अन्य बिलिंग सिस्टम के ज़रिए खरीदी गई सदस्यताएं

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

ऐसा करने के लिए, जब उपयोगकर्ता अपग्रेड या डाउनग्रेड का अनुरोध करे, तब launchBillingFlow() को कॉल करें. पैरामीटर में SubscriptionUpdateParams ऑब्जेक्ट तय करने के बजाय, setOriginalExternalTransactionId का इस्तेमाल करें. साथ ही, मूल खरीदारी के लिए, बाहरी लेन-देन का आईडी दें. इससे, उपयोगकर्ता की पसंद की स्क्रीन नहीं दिखती है. ऐसा इसलिए, क्योंकि अपग्रेड और डाउनग्रेड के लिए, मूल खरीदारी के लिए उपयोगकर्ता की पसंद को सेव रखा जाता है. इस मामले में, launchBillingFlow() को कॉल करने पर, लेन-देन के लिए बाहरी लेन-देन का नया टोकन जनरेट होता है. इसे कॉलबैक से वापस पाया जा सकता है.

Kotlin

// The external transaction ID from the current
// alternative billing subscription.
val externalTransactionId = //... ;

val billingFlowParams = BillingFlowParams.newBuilder()
    .setProductDetailsParamsList(
        listOf(
            BillingFlowParams.ProductDetailsParams.newBuilder()
                // Fetched using queryProductDetailsAsync.
                .setProductDetails(productDetailsNewPlan)
                // offerIdToken can be found in
                // ProductDetails=>SubscriptionOfferDetails.
                .setOfferToken(offerTokenNewPlan)
                .build()
        )
    )
    .setSubscriptionUpdateParams(
        BillingFlowParams.SubscriptionUpdateParams.newBuilder()
            .setOriginalExternalTransactionId(externalTransactionId)
            .build()
        )
    .build()

val billingResult = billingClient.launchBillingFlow(activity, billingFlowParams)

// When the user selects the alternative billing flow,
// the UserChoiceBillingListener is triggered.

Java

// The external transaction ID from the current
// alternative billing subscription.
String externalTransactionId = //... ;

BillingFlowParams billingFlowParams =
    BillingFlowParams.newBuilder()
        .setProductDetailsParamsList(
            ImmutableList.of(
                ProductDetailsParams.newBuilder()
                    // Fetched using queryProductDetailsAsync.
                    .setProductDetails(productDetailsNewPlan)
                    // offerIdToken can be found in
                    // ProductDetails=>SubscriptionOfferDetails
                    .setOfferToken(offerTokenNewPlan)
                    .build()
                )
            )
        .setSubscriptionUpdateParams(
            SubscriptionUpdateParams.newBuilder()
                .setOriginalExternalTransactionId(externalTransactionId)
                .build()
            )
        .build();

BillingResult billingResult = billingClient.launchBillingFlow(activity, billingFlowParams);

// When the user selects the alternative billing flow,
// the UserChoiceBillingListener is triggered.

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

Google Play के बिलिंग सिस्टम के ज़रिए खरीदी गई सदस्यताएं

इसी तरह, जिन उपयोगकर्ताओं ने उपयोगकर्ता की पसंद के बाद, Google Play के बिलिंग सिस्टम के ज़रिए अपनी मौजूदा सदस्यता खरीदी है उन्हें Google Play के बिलिंग सिस्टम में, अपग्रेड या डाउनग्रेड का फ़्लो दिखना चाहिए. यहां दिए गए निर्देशों में, Google Play के बिलिंग सिस्टम के ज़रिए, अपग्रेड या डाउनग्रेड के लिए खरीदारी का फ़्लो लॉन्च करने का तरीका बताया गया है:

  1. नए प्लान के लिए, चुने गए ऑफ़र का offerToken ढूंढें:

    Kotlin

    val offerTokenNewPlan = productDetailsNewPlan
         .getSubscriptionOfferDetails(selectedOfferIndex)
         .getOfferToken()
    

    Java

    String offerTokenNewPlan = productDetailsNewPlan
            .getSubscriptionOfferDetails(selectedOfferIndex)
            .getOfferToken();
    
  2. नई खरीदारी को प्रोसेस करने के लिए, Google Play के बिलिंग सिस्टम को सही जानकारी भेजें. इसमें मौजूदा सदस्यता के लिए, खरीदारी का टोकन शामिल करें:

    Kotlin

    val billingFlowParams =
        BillingFlowParams.newBuilder()
            .setProductDetailsParamsList(
                listOf(
                    BillingFlowParams.ProductDetailsParams.newBuilder()
                        // Fetched using queryProductDetailsAsync
                        .setProductDetails(productDetailsNewPlan)
                        // offerIdToken can be found in
                        // ProductDetails=>SubscriptionOfferDetails.
                        .setOfferToken(offerTokenNewPlan)
                        .build()
                    )
            )
            .setSubscriptionUpdateParams(
                BillingFlowParams.SubscriptionUpdateParams.newBuilder()
                    // purchaseToken can be found in
                    // Purchase#getPurchaseToken
                    .setOldPurchaseToken(oldToken)
                    .setReplaceProrationMode(BillingFlowParams.ProrationMode.IMMEDIATE_AND_CHARGE_FULL_PRICE)
                    .build()
            )
            .build()
    
    val billingResult = billingClient.launchBillingFlow(activity, billingFlowParams)
    

    Java

    BillingFlowParams billingFlowParams =
        BillingFlowParams.newBuilder()
            .setProductDetailsParamsList(
                ImmutableList.of(
                    ProductDetailsParams.newBuilder()
                        // Fetched using queryProductDetailsAsync
                        .setProductDetails(productDetailsNewPlan)
                        // offerIdToken can be found in
                        // ProductDetails=>SubscriptionOfferDetails.
                        .setOfferToken(offerTokenNewPlan)
                        .build()
                )
            )
            .setSubscriptionUpdateParams(
                SubscriptionUpdateParams.newBuilder()
                    // purchaseToken can be found in
                    // Purchase#getPurchaseToken
                    .setOldPurchaseToken(oldToken)
                    .setReplaceProrationMode(BillingFlowParams.ProrationMode.IMMEDIATE_AND_CHARGE_FULL_PRICE)
                    .build()
            )
            .build();
    
    BillingResult billingResult = billingClient.launchBillingFlow(activity, billingFlowParams);
    

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

सदस्यताएं रद्द करना और उन्हें बहाल करना

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

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

अन्य बिलिंग सिस्टम के ज़रिए खरीदी गई सदस्यताएं

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

Google Play के बिलिंग सिस्टम के ज़रिए खरीदी गई सदस्यताएं

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

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

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

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

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

अन्य बिलिंग सिस्टम की जांच करना

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

अगले चरण

ऐप्लिकेशन में इंटिग्रेशन पूरा करने के बाद, अपने बैकएंड को इंटिग्रेट किया जा सकता है .