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

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

Play Billing Library सेटअप करना

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

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

इंटिग्रेशन की प्रोसेस के शुरुआती चरण, Google Play Billing इंटिग्रेशन गाइड में बताए गए चरणों के जैसे ही होते हैं. हालांकि, 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 खाते से जुड़ा देश, इस सुविधा के लिए ज़रूरी शर्तें पूरी नहीं करता

enableUserChoiceBilling को BillingClient सेटअप के दौरान कॉल किया जाता है

उपयोगकर्ता को उपयोगकर्ता की पसंद का यूज़र एक्सपीरियंस (यूएक्स) दिखता है

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

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

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

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

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

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

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

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

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

UserChoiceBillingListener को ये काम करने होंगे:

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

अगर उपयोगकर्ता, अन्य बिलिंग सिस्टम का इस्तेमाल करके खरीदारी करता है, तो आपको 24 घंटे के अंदर, Google Play को लेन-देन की जानकारी देनी होगी. इसके लिए, अपने बैकएंड से Google Play Developer API को कॉल करें. साथ ही, 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() को इस मामले में कॉल किया जा सकता है. इसके बारे में लोगों की पसंद के बिलिंग सिस्टम का फ़्लो लॉन्च करना लेख में बताया गया है.

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

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

अगले चरण

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