इस गाइड में, अपने ऐप्लिकेशन में उपयोगकर्ता के लिए उपलब्ध बिलिंग सिस्टम के तहत, अन्य बिलिंग सिस्टम की सुविधा देने के लिए, एपीआई को इंटिग्रेट करने का तरीका बताया गया है.
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(PendingPurchasesParams.newBuilder().enableOneTimeProducts().build()) .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 = "your_external_transaction_id" 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 के बिलिंग सिस्टम के ज़रिए, सदस्यता के लेवल को अपग्रेड या डाउनग्रेड करने के लिए, खरीदारी का फ़्लो लॉन्च करने का तरीका बताया गया है:
नए प्लान के लिए, चुने गए ऑफ़र का
offerTokenपता करें:Kotlin
val offerTokenNewPlan = productDetailsNewPlan.getSubscriptionOfferDetails() ?.getOrNull(selectedOfferIndex) ?.offerToken ?: ""
Java
String offerTokenNewPlan = productDetailsNewPlan .getSubscriptionOfferDetails(selectedOfferIndex) .getOfferToken();Google Play के बिलिंग सिस्टम को सही जानकारी भेजें, ताकि नई खरीदारी को प्रोसेस किया जा सके. इसमें मौजूदा सदस्यता के लिए, खरीदारी का टोकन भी शामिल करें:
Kotlin
val billingFlowParams = BillingFlowParams.newBuilder() .setProductDetailsParamsList( listOf( BillingFlowParams.ProductDetailsParams.newBuilder() // Fetched using queryProductDetailsAsync .setProductDetails(productDetailsNewPlan) .setSubscriptionProductReplacementParams( SubscriptionProductReplacementParams.newBuilder() .setReplacementMode( SubscriptionProductReplacementParams.ReplacementMode.CHARGE_FULL_PRICE ) .setOldProductId("old_product_id") .build() ) // offerIdToken can be found in // ProductDetails=>SubscriptionOfferDetails. .setOfferToken(offerTokenNewPlan) .build() ) ) .setSubscriptionUpdateParams( BillingFlowParams.SubscriptionUpdateParams.newBuilder() // purchaseToken can be found in // Purchase#getPurchaseToken .setOldPurchaseToken(oldToken) .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 एट्रिब्यूट, पुरानी
सदस्यता की खरीदारी से लिंक होता है, ताकि इसे बंद किया जा सके. ऐसा करने का सुझाव दिया जाता है.
सदस्यताएं रद्द करना और उन्हें बहाल करना
उपयोगकर्ताओं के पास अपनी सदस्यता रद्द करने का विकल्प होना चाहिए. जब कोई उपयोगकर्ता सदस्यता रद्द करता है, तो एनटाइटलमेंट को खत्म करने की प्रोसेस, पैसे चुकाई गई अवधि खत्म होने तक टाली जा सकती है. उदाहरण के लिए, अगर कोई उपयोगकर्ता महीने की सदस्यता को महीने के बीच में रद्द करता है, तो उसके पास करीब दो हफ़्तों तक सेवा का ऐक्सेस जारी रह सकता है. इसके बाद, उसका ऐक्सेस हटा दिया जाता है. इस दौरान, सदस्यता तकनीकी तौर पर अब भी चालू रहती है. इसलिए, उपयोगकर्ता सेवा का इस्तेमाल कर सकता है.
ऐसा अक्सर होता है कि उपयोगकर्ता, सदस्यता चालू रहने की अवधि के दौरान, सदस्यता रद्द करने का फ़ैसला वापस ले लेते हैं. इस गाइड में, इसे बहाल करना कहा गया है. यहां दिए गए सेक्शन में, अन्य बिलिंग सिस्टम के एपीआई के इंटिग्रेशन में, सदस्यता बहाल करने से जुड़े परिदृश्यों को मैनेज करने का तरीका बताया गया है.
अन्य बिलिंग सिस्टम के ज़रिए खरीदी गई सदस्यताएं
अगर आपके पास रद्द की गई सदस्यता के लिए, बाहरी लेन-देन का आईडी है, तो सदस्यता बहाल करने के लिए, launchBillingFlow() को कॉल करना ज़रूरी नहीं है. इसलिए, इस तरह की सदस्यता को चालू करने के लिए इसका इस्तेमाल नहीं किया जाना चाहिए. अगर कोई उपयोगकर्ता, रद्द की गई सदस्यता की अवधि खत्म होने से पहले ही अपनी सदस्यता बहाल कर लेता है, तो उस समय कोई लेन-देन नहीं होता. जब मौजूदा साइकल खत्म हो जाती है और अगला रिन्यूअल होता है, तब रिन्यूअल की रिपोर्ट की जा सकती है. इसमें वे मामले शामिल हैं जहां उपयोगकर्ता को सदस्यता बहाल करने के लिए क्रेडिट या रिन्यूअल की खास कीमत मिलती है. उदाहरण के लिए, उपयोगकर्ता को अपनी सदस्यता जारी रखने के लिए बढ़ावा देने वाला कोई प्रमोशन.
Google Play के बिलिंग सिस्टम के ज़रिए खरीदी गई सदस्यताएं
आम तौर पर, उपयोगकर्ता Google Play के बिलिंग सिस्टम पर सदस्यताएं बहाल कर सकते हैं. रद्द की गई ऐसी सदस्यताएं जिन्हें मूल रूप से Google Play के बिलिंग
सिस्टम पर खरीदा गया था उनके लिए, उपयोगकर्ता Google Play की फिर से सदस्यता लें सुविधा का इस्तेमाल करके, सदस्यता चालू रहने के दौरान, सदस्यता रद्द करने का फ़ैसला वापस ले सकता है. ऐसे में, आपके बैकएंड को SUBSCRIPTION_RESTARTED रीयल टाइम डेवलपर सूचना मिलती है. साथ ही, खरीदारी का नया टोकन जारी नहीं किया जाता. सदस्यता जारी रखने के लिए, मूल टोकन का इस्तेमाल किया जाता है. Google
Play के बिलिंग सिस्टम में, सदस्यता बहाल करने की सुविधा को मैनेज करने का तरीका जानने के लिए, सदस्यता मैनेज करने की गाइड में सदस्यताएं बहाल करना लेख देखें.
ऐप्लिकेशन से, Google Play के बिलिंग सिस्टम में सदस्यता बहाल करने की प्रोसेस शुरू की जा सकती है. इसके लिए, launchBillingFlow() को कॉल करें. इसे करने का तरीका जानने के लिए, सदस्यता की अवधि खत्म होने से पहले -
इन-ऐप्लिकेशन लेख देखें. जिन उपयोगकर्ताओं ने मूल खरीदारी के लिए, उपयोगकर्ता के लिए उपलब्ध बिलिंग सिस्टम के फ़्लो का इस्तेमाल किया था (जिसे रद्द कर दिया गया है, लेकिन वह अब भी चालू है), सिस्टम अपने-आप उनके चुने गए विकल्प का पता लगा लेता है और इन खरीदारी को बहाल करने के लिए, उपयोगकर्ता इंटरफ़ेस दिखाता है. उनसे Google Play के ज़रिए सदस्यता की फिर से खरीदारी की पुष्टि करने के लिए कहा जाता है. हालांकि, उन्हें उपयोगकर्ता की पसंद के बिलिंग सिस्टम (यूज़र चॉइस बिलिंग) के फ़्लो का इस्तेमाल फिर से नहीं करना पड़ता. इस मामले में, उपयोगकर्ता के लिए खरीदारी का नया टोकन जारी किया जाता है. आपके बैकएंड को SUBSCRIPTION_PURCHASED रीयल टाइम डेवलपर सूचना मिलती है. साथ ही, सदस्यता के लेवल को अपग्रेड या डाउनग्रेड करने के मामले में, खरीदारी की नई स्थिति के लिए linkedPurchaseToken की वैल्यू सेट की जाती है. इसमें, रद्द की गई सदस्यता के लिए, खरीदारी का पुराना टोकन शामिल होता है.
सदस्यताएं फिर से लेना
अगर कोई सदस्यता पूरी तरह से खत्म हो जाती है, चाहे वह रद्द होने की वजह से हो या पेमेंट अस्वीकार होने की वजह से, जिसमें रिकवरी न हो (खाते पर लगी रोक की अवधि खत्म हो गई हो), तो उपयोगकर्ता को एनटाइटलमेंट फिर से शुरू करने के लिए, फिर से सदस्यता लेनी होगी.
ऐप्लिकेशन के ज़रिए भी सदस्यता फिर से ली जा सकती है. इसके लिए, इसे सामान्य साइन-अप की तरह प्रोसेस किया जाता है. उपयोगकर्ताओं के पास यह चुनने का विकल्प होना चाहिए कि वे किस बिलिंग सिस्टम का इस्तेमाल करना चाहते हैं. launchBillingFlow() को इस मामले में कॉल किया जा सकता है. इसके बारे में, उपयोगकर्ता की पसंद के बिलिंग सिस्टम (यूज़र चॉइस बिलिंग) का फ़्लो लॉन्च करना लेख में बताया गया है.
अन्य बिलिंग सिस्टम की जांच करना
अन्य बिलिंग सिस्टम के इंटिग्रेशन की जांच करने के लिए, लाइसेंस टेस्टर का इस्तेमाल किया जाना चाहिए. लाइसेंस टेस्टर खातों से शुरू किए गए लेन-देन के लिए, आपको इनवॉइस नहीं भेजा जाएगा. लाइसेंस टेस्टर कॉन्फ़िगर करने के बारे में ज़्यादा जानने के लिए, ऐप्लिकेशन का लाइसेंस देने के साथ इन-ऐप्लिकेशन बिलिंग की जांच करना लेख देखें.
अगले चरण
इन-ऐप्लिकेशन इंटिग्रेशन पूरा करने के बाद, बैकएंड को integrate your backend किया जा सकता है.