इस दस्तावेज़ में, Play Billing Library के एपीआई को इंटिग्रेट करने का तरीका बताया गया है. इससे ज़रूरी शर्तें पूरी करने वाले ऐप्लिकेशन में, बाहरी बिलिंग सिस्टम का इस्तेमाल किया जा सकता है. इस प्रोग्राम के बारे में ज़्यादा जानने के लिए, प्रोग्राम की ज़रूरी शर्तें देखें.
Play Billing Library सेटअप करना
अपने Android ऐप्लिकेशन में Play Billing Library की डिपेंडेंसी जोड़ें. बाहरी बिलिंग सिस्टम के एपीआई इस्तेमाल करने के लिए, आपको 8.3 या इससे नए वर्शन का इस्तेमाल करना होगा. अगर आपको पिछले वर्शन से माइग्रेट करना है, तो इंटिग्रेशन शुरू करने से पहले अपग्रेड करने के लिए, माइग्रेशन गाइड में दिए गए निर्देशों का पालन करें.
बिलिंग क्लाइंट शुरू करना
इंटिग्रेशन की प्रोसेस के शुरुआती चरण, Google Play Billing इंटिग्रेशन गाइड में बताए गए चरणों के जैसे ही होते हैं. हालांकि, BillingClient को शुरू करते समय कुछ बदलाव किए जाते हैं:
- आपको एक नया
enableBillingProgram(EnableBillingProgramParams)तरीका कॉल करना होगा, ताकि यह पता चल सके कि आपको बाहरी पेमेंट सिस्टम का इस्तेमाल करना है. - आपको
DeveloperProvidedBillingListenerरजिस्टर करना होगा. इससे उन मामलों को मैनेज किया जा सकेगा जिनमें उपयोगकर्ता आपकी वेबसाइट या पेमेंट ऐप्लिकेशन पर पेमेंट करने का विकल्प चुनता है.
यहां दिए गए उदाहरण में, इन बदलावों के साथ BillingClient को शुरू करने का तरीका बताया गया है:
Kotlin
val purchasesUpdatedListener =
PurchasesUpdatedListener { billingResult, purchases ->
// Handle new Google Play purchase.
}
val developerProvidedBillingListener =
DeveloperProvidedBillingListener { details ->
// Handle user selection for developer provided billing option.
}
val billingClient = BillingClient.newBuilder(context)
.setListener(purchasesUpdatedListener)
.enablePendingPurchases()
.enableBillingProgram(
EnableBillingProgramParams.newBuilder()
.setBillingProgram(BillingProgram.EXTERNAL_PAYMENTS)
.setDeveloperProvidedBillingListener(developerProvidedBillingListener)
.build())
.build()
Java
private PurchasesUpdatedListener purchasesUpdatedListener = new PurchasesUpdatedListener() {
@Override
public void onPurchasesUpdated(BillingResult billingResult, List<Purchase> purchases) {
// Handle new Google Play purchase.
}
};
private DeveloperProvidedBillingListener developerProvidedBillingListener =
new DeveloperProvidedBillingListener() {
@Override
public void onUserSelectedDeveloperBilling(
DeveloperProvidedBillingDetails details) {
// Handle user selection for developer provided billing option.
}
};
private BillingClient billingClient = BillingClient.newBuilder(context)
.setListener(purchasesUpdatedListener)
.enablePendingPurchases()
.enableBillingProgram(
EnableBillingProgramParams.newBuilder()
.setBillingProgram(BillingProgram.EXTERNAL_PAYMENTS)
.setDeveloperProvidedBillingListener(developerProvidedBillingListener)
.build())
.build();
Google Play से कनेक्ट करें
BillingClient को शुरू करने के बाद, Google Play से कनेक्ट करें में दिए गए तरीके से Google Play से कनेक्ट करें.
उपयोगकर्ता के लिए ज़रूरी शर्तें देखना
Google Play से कनेक्ट करने के बाद, isBillingProgramAvailableAsync() तरीके को कॉल करके यह पता लगाया जा सकता है कि उपयोगकर्ता, बाहरी पेमेंट सिस्टम के प्रोग्राम में शामिल होने की ज़रूरी शर्तें पूरी करता है या नहीं. अगर उपयोगकर्ता ज़रूरी शर्तें पूरी करता है, तो यह तरीका BillingResponseCode.OK दिखाता है.
यहां दिए गए उदाहरण में, ज़रूरी शर्तें पूरी करने की स्थिति की जांच करने का तरीका बताया गया है:
Kotlin
billingClient.isBillingProgramAvailableAsync(
BillingProgram.EXTERNAL_PAYMENTS,
object : BillingProgramAvailabilityListener {
override fun onBillingProgramAvailabilityResponse(
billingProgram: Int, billingResult: BillingResult) {
if (billingResult.responseCode != BillingResponseCode.OK) {
// Handle failures such as retrying due to network errors,
// handling external payments unavailable, etc.
return
}
// External payments are available. Can proceed with generating an
// external transaction token.
})
Java
billingClient.isBillingProgramAvailableAsync(
BillingProgram.EXTERNAL_PAYMENTS,
new BillingProgramAvailabilityListener() {
@Override
public void onBillingProgramAvailabilityResponse(
int billingProgram, BillingResult billingResult) {
if (billingResult.getResponseCode() != BillingResponseCode.OK) {
// Handle failures such as retrying due to network errors,
// handling external payments unavailable, etc.
return;
}
// External payments are available. Can proceed with generating an external transaction token.
}
});
अन्य रिस्पॉन्स कोड के लिए, आपका ऐप्लिकेशन किस तरह से जवाब देगा, इस बारे में जानने के लिए रिस्पॉन्स हैंडलिंग सेक्शन देखें. अगर Kotlin एक्सटेंशन का इस्तेमाल किया जा रहा है, तो Kotlin कोरूटीन का इस्तेमाल किया जा सकता है. इससे आपको अलग से लिसनर तय करने की ज़रूरत नहीं पड़ती.
उपलब्ध प्रॉडक्ट दिखाना
Google Play के बिलिंग सिस्टम के इंटिग्रेशन की तरह ही, उपयोगकर्ता को उपलब्ध प्रॉडक्ट दिखाए जा सकते हैं. जब आपका उपयोगकर्ता, खरीदारी के लिए उपलब्ध प्रॉडक्ट देख लेता है और उनमें से किसी एक को खरीदने के लिए चुनता है, तब बाहरी पेमेंट सिस्टम का इस्तेमाल करके पेमेंट करने की सुविधा लॉन्च करें. इसके बारे में बाहरी पेमेंट सिस्टम का इस्तेमाल करके पेमेंट करने की सुविधा लॉन्च करना सेक्शन में बताया गया है.
बाहरी लेन-देन का टोकन तैयार करना
Google Play को बाहरी लेन-देन की जानकारी देने के लिए, आपके पास Play Billing Library से जनरेट किया गया बाहरी लेन-देन का टोकन होना चाहिए. जब भी उपयोगकर्ता, बाहरी बिलिंग सिस्टम के एपीआई के ज़रिए किसी बाहरी वेबसाइट या ऐप्लिकेशन पर जाता है, तब एक नया बाहरी लेन-देन टोकन जनरेट किया जाना चाहिए. इसके लिए, createBillingProgramReportingDetailsAsync API को कॉल करें. टोकन को launchBillingFlow को कॉल करने से ठीक पहले जनरेट किया जाना चाहिए.
Kotlin
val params =
BillingProgramReportingDetailsParams.newBuilder()
.setBillingProgram(BillingProgram.EXTERNAL_PAYMENTS)
.build()
billingClient.createBillingProgramReportingDetailsAsync(
params,
object : BillingProgramReportingDetailsListener {
override fun onCreateBillingProgramReportingDetailsResponse(
billingResult: BillingResult,
billingProgramReportingDetails: BillingProgramReportingDetails?) {
if (billingResult.responseCode != BillingResponseCode.OK) {
// Handle failures such as retrying due to network errors.
return
}
val externalTransactionToken =
billingProgramReportingDetails?.externalTransactionToken
// Persist the external transaction token locally. Pass it to
// the external website using DeveloperBillingOptionParams when
// launchBillingFlow is called.
}
})
Java
BillingProgramReportingDetailsParams params =
BillingProgramReportingDetailsParams.newBuilder()
.setBillingProgram(BillingProgram.EXTERNAL_PAYMENTS)
.build();
billingClient.createBillingProgramReportingDetailsAsync(
params,
new BillingProgramReportingDetailsListener() {
@Override
public void onCreateBillingProgramReportingDetailsResponse(
BillingResult billingResult,
@Nullable BillingProgramReportingDetails
billingProgramReportingDetails) {
if (billingResult.getResponseCode() != BillingResponseCode.OK) {
// Handle failures such as retrying due to network errors.
return;
}
String transactionToken =
billingProgramReportingDetails.getExternalTransactionToken();
// Persist the external transaction token locally. Pass it to
// the external website using DeveloperBillingOptionParams when
// launchBillingFlow is called.
}
});
अगर Kotlin एक्सटेंशन का इस्तेमाल किया जा रहा है, तो Kotlin कोरूटीन का इस्तेमाल किया जा सकता है. इससे आपको अलग से लिसनर तय करने की ज़रूरत नहीं पड़ती.
पेमेंट के बाहरी तरीके इस्तेमाल करने की सुविधा लॉन्च करना
Google Play के बिलिंग सिस्टम के साथ इंटिग्रेट करके, खरीदारी का फ़्लो लॉन्च करने के जैसा ही launchBillingFlow() कॉल करके, बाहरी बिलिंग सिस्टम का फ़्लो लॉन्च करें. हालांकि, इसमें एक अतिरिक्त पैरामीटर DeveloperBillingOptionParams दिया गया है. इससे पता चलता है कि आपका ऐप्लिकेशन, इस खरीदारी के लिए बाहरी बिलिंग सिस्टम का फ़्लो चालू करना चाहता है.
DeveloperBillingOptionParams में यह जानकारी होनी चाहिए:
billingProgramकोEXTERNAL_PAYMENTSबिलिंग प्रोग्राम पर सेट किया गया हैlinkURIको लिंक के डेस्टिनेशन पर सेट किया गया हैlaunchModeकोLAUNCH_IN_EXTERNAL_BROWSER_OR_APPपर सेट करें, अगर Google Play को लिंक लॉन्च करना है. इसके अलावा, अगर आपके ऐप्लिकेशन को लिंक लॉन्च करना है, तो इसेCALLER_WILL_LAUNCH_LINKपर सेट करें.
जब आपका ऐप्लिकेशन, DeveloperBillingOptionParams के साथ launchBillingFlow() को कॉल करता है, तब Google Play का बिलिंग सिस्टम यह जांच करता है:
- सिस्टम यह जांच करता है कि उपयोगकर्ता के Google Play खाते में सेट किया गया देश, बाहरी पेमेंट की सुविधा वाले देशों में शामिल है या नहीं. अगर उपयोगकर्ता के Google Play खाते में सेट किया गया देश, बाहरी बिलिंग सिस्टम के साथ काम करता है, तो Google Play यह जांच करता है कि BillingClient के कॉन्फ़िगरेशन के आधार पर, बाहरी बिलिंग सिस्टम चालू है या नहीं. साथ ही, यह भी जांच करता है कि
DeveloperBillingOptionParamsउपलब्ध कराया गया है या नहीं.- अगर बाहरी पेमेंट सिस्टम की सुविधा चालू की गई है, तो खरीदारी के फ़्लो में उपयोगकर्ता की पसंद का यूज़र एक्सपीरियंस (यूएक्स) दिखता है.
- अगर बाहरी पेमेंट की सुविधा चालू नहीं है, तो खरीदारी के फ़्लो में Google Play के बिलिंग सिस्टम का स्टैंडर्ड यूज़र एक्सपीरियंस (यूएक्स) दिखता है. इसमें उपयोगकर्ता को विकल्प नहीं मिलता.
- अगर उपयोगकर्ता के Google Play खाते में देश के तौर पर सेट किया गया देश, इस सुविधा के साथ काम नहीं करता है, तो खरीदारी के फ़्लो में Google Play के बिलिंग सिस्टम का स्टैंडर्ड यूज़र एक्सपीरियंस (यूएक्स) दिखेगा. इसमें उपयोगकर्ता को कोई विकल्प नहीं मिलेगा.
उपयोगकर्ता के Play खाते में देश का नाम, उस देश का होना चाहिए जहां यह सुविधा उपलब्ध है |
उपयोगकर्ता के Play खाते से जुड़ा देश, इस सुविधा के लिए ज़रूरी शर्तें पूरी नहीं करता |
|
पेमेंट के बाहरी तरीके चालू हों (BillingClient setup और launchBillingFlow) |
उपयोगकर्ता को उपयोगकर्ता की पसंद का यूज़र एक्सपीरियंस (यूएक्स) दिखता है |
उपयोगकर्ता को Google Play के बिलिंग सिस्टम का स्टैंडर्ड यूज़र एक्सपीरियंस दिखता है |
बाहरी पेमेंट सिस्टम चालू नहीं है. ऐसा तब होता है, जब BillingClient सेटअप के दौरान इसे चालू नहीं किया गया हो या launchBillingFlow को DeveloperBillingOptionParams नहीं दिया गया हो |
उपयोगकर्ता को Google Play के बिलिंग सिस्टम का स्टैंडर्ड यूज़र एक्सपीरियंस दिखता है |
उपयोगकर्ता को Google Play के बिलिंग सिस्टम का स्टैंडर्ड यूज़र एक्सपीरियंस दिखता है |
नीचे दिए गए स्निपेट में, DeveloperBillingOptionParams बनाने का तरीका बताया गया है:
Kotlin
val developerBillingOptionParams =
DeveloperBillingOptionParams.newBuilder()
.setBillingProgram(BillingProgram.EXTERNAL_PAYMENTS)
.setLinkUri("https://www.example.com/external/purchase")
.setLaunchMode(
DeveloperBillingOptionParams.LaunchMode.LAUNCH_IN_EXTERNAL_BROWSER_OR_APP)
.build()
Java
DeveloperBillingOptionParams developerBillingOptionParams =
DeveloperBillingOptionParams.newBuilder()
.setBillingProgram(BillingProgram.EXTERNAL_PAYMENTS)
.setLinkUri("https://www.example.com/external/purchase")
.setLaunchMode(
DeveloperBillingOptionParams.LaunchMode.LAUNCH_IN_EXTERNAL_BROWSER_OR_APP)
.build();
उपयोगकर्ता के चुने गए विकल्प को मैनेज करना
खरीदारी के बाकी फ़्लो को मैनेज करने का तरीका अलग-अलग होता है. यह इस बात पर निर्भर करता है कि उपयोगकर्ता ने Google Play के बिलिंग सिस्टम को चुना है या आपकी वेबसाइट पर पेमेंट करने का विकल्प चुना है.
जब उपयोगकर्ता आपकी वेबसाइट या पेमेंट ऐप्लिकेशन पर पेमेंट करने का विकल्प चुनता है
अगर उपयोगकर्ता आपकी वेबसाइट पर पेमेंट करने का विकल्प चुनता है, तो Google Play, DeveloperProvidedBillingListener को कॉल करता है. इससे ऐप्लिकेशन को सूचना मिलती है कि उपयोगकर्ता ने आपकी वेबसाइट या पेमेंट ऐप्लिकेशन पर पेमेंट करने का विकल्प चुना है. खास तौर पर, onUserSelectedDeveloperBilling() तरीके को कॉल किया जाता है.
अगर आपका ऐप्लिकेशन launchMode को LAUNCH_IN_EXTERNAL_BROWSER_OR_APP पर सेट करता है, तो Google Play लिंक लॉन्च करेगा. अगर launchMode को CALLER_WILL_LAUNCH_LINK पर सेट किया गया था, तो लिंक लॉन्च करने की ज़िम्मेदारी आपके ऐप्लिकेशन की है.
उपयोगकर्ताओं को पेमेंट ऐप्लिकेशन से लिंक करते समय, यह जांच करना आपकी ज़िम्मेदारी है कि उपयोगकर्ता ने अपने डिवाइस पर पेमेंट ऐप्लिकेशन पहले से इंस्टॉल किया हो.
इस टोकन का इस्तेमाल करके, इस विकल्प की वजह से हुए किसी भी लेन-देन की रिपोर्ट करें. इसके बारे में बैकएंड इंटिग्रेशन गाइड में बताया गया है.
जब उपयोगकर्ता Google Play का बिलिंग सिस्टम चुनता है
अगर उपयोगकर्ता Google Play के बिलिंग सिस्टम को चुनता है, तो वह Google Play के ज़रिए खरीदारी जारी रखता है.
- Google Play के बिलिंग सिस्टम के ज़रिए की गई नई इन-ऐप्लिकेशन खरीदारी को मैनेज करने के बारे में ज़्यादा जानने के लिए, लाइब्रेरी इंटिग्रेशन गाइड में खरीदारी प्रोसेस करना देखें.
- सदस्यता खरीदने के बारे में ज़्यादा जानकारी के लिए, सदस्यता मैनेज करने की गाइड में नई सदस्यताएं देखें.
सदस्यता में होने वाले बदलावों को मैनेज करना
पेमेंट के बाहरी सिस्टम का इस्तेमाल करने वाले डेवलपर के लिए, खरीदारी को Google Play के बिलिंग सिस्टम के ज़रिए प्रोसेस करना होगा. इसके अलावा, उपयोगकर्ता की पसंद के आधार पर, externalTransactionId के साथ इसकी शिकायत करनी होगी. डेवलपर की वेबसाइट के ज़रिए प्रोसेस की गई मौजूदा सदस्यताओं में बदलाव, सदस्यता खत्म होने तक उसी बिलिंग सिस्टम के ज़रिए किए जा सकते हैं.
इस सेक्शन में, सदस्यता में बदलाव करने से जुड़े कुछ सामान्य मामलों को मैनेज करने का तरीका बताया गया है.
अपग्रेड और डाउनग्रेड करने के फ़्लो
सदस्यता के प्लान में बदलाव करने की प्रोसेस अलग-अलग होनी चाहिए. जैसे, अपग्रेड और डाउनग्रेड करने की प्रोसेस अलग-अलग होनी चाहिए. यह इस बात पर निर्भर करता है कि सदस्यता मूल रूप से Google Play के बिलिंग सिस्टम से खरीदी गई थी या डेवलपर की वेबसाइट से.
ऐसे ऐड-ऑन जिन्हें मौजूदा सदस्यता के साथ जोड़ा जाता है, जिनके लिए पेमेंट का एक ही तरीका इस्तेमाल किया जाता है, और जिनके लिए बार-बार लिए जाने वाले शुल्क एक जैसे होते हैं उन्हें अपग्रेड के तौर पर मैनेज किया जाता है. अन्य ऐड-ऑन के लिए, उपयोगकर्ताओं के पास यह चुनने का विकल्प होना चाहिए कि उन्हें कौनसे बिलिंग सिस्टम का इस्तेमाल करना है. launchBillingFlow() का इस्तेमाल करके, खरीदारी का नया तरीका शुरू करें. इसके बारे में बाहरी पेमेंट सिस्टम का इस्तेमाल शुरू करना लेख में बताया गया है.
डेवलपर की वेबसाइट या पेमेंट ऐप्लिकेशन से खरीदी गई सदस्यताएं
जिन सदस्यताओं को मूल रूप से डेवलपर की वेबसाइट या उपयोगकर्ता की पसंद के पेमेंट ऐप्लिकेशन के ज़रिए खरीदा गया था उन्हें अपग्रेड या डाउनग्रेड करने का अनुरोध करने वाले लोगों को, डेवलपर की वेबसाइट या पेमेंट ऐप्लिकेशन पर जाना चाहिए. उन्हें उपयोगकर्ता की पसंद के पेमेंट ऐप्लिकेशन को फिर से चुनने की ज़रूरत नहीं होनी चाहिए.
इसके लिए, जब उपयोगकर्ता अपग्रेड या डाउनग्रेड करने का अनुरोध करे, तब launchBillingFlow() को कॉल करें. SubscriptionUpdateParams ऑब्जेक्ट में अन्य पैरामीटर तय करने के बजाय, setOriginalExternalTransactionId() का इस्तेमाल करें. साथ ही, मूल खरीदारी के लिए बाहरी लेन-देन का आईडी दें.
इस कॉल में DeveloperBillingOptionParams भी दिया जाना चाहिए. इससे उपयोगकर्ता को विकल्प चुनने की स्क्रीन नहीं दिखती है. ऐसा इसलिए, क्योंकि अपग्रेड और डाउनग्रेड के लिए, ओरिजनल खरीदारी के लिए उपयोगकर्ता का विकल्प सुरक्षित रखा जाता है. आपको इस लेन-देन के लिए, नया बाहरी लेन-देन टोकन जनरेट करना होगा. इसके बारे में यहां बताया गया है.
अगर डेवलपर की वेबसाइट या पेमेंट ऐप्लिकेशन का इस्तेमाल करके सदस्यता को अपग्रेड या डाउनग्रेड किया जाता है, तो आपको नए लेन-देन की जानकारी देनी होगी. इसके लिए, आपको बाहरी लेन-देन के उस टोकन का इस्तेमाल करना होगा जो सदस्यता खरीदने के लिए किए गए पिछले कॉल से मिला था.
Google Play के बिलिंग सिस्टम से खरीदी गई सदस्यताएं
इसी तरह, जिन उपयोगकर्ताओं ने उपयोगकर्ता की पसंद के बिलिंग सिस्टम (यूज़र चॉइस बिलिंग) प्रोग्राम के तहत, Google Play के बिलिंग सिस्टम से मौजूदा सदस्यता खरीदी है उन्हें Google Play Billing के स्टैंडर्ड फ़्लो के बारे में बताया जाना चाहिए. launchBillingFlow को कॉल करते समय, DeveloperBillingOptionParams को सेट नहीं किया जाना चाहिए.
सदस्यता रद्द करना और उसे वापस लाना
उपयोगकर्ताओं के पास, अपनी सदस्यता को किसी भी समय रद्द करने का विकल्प होना चाहिए. जब कोई उपयोगकर्ता सदस्यता रद्द करता है, तो एनटाइटलमेंट को तब तक रद्द नहीं किया जा सकता, जब तक कि सदस्यता की अवधि खत्म नहीं हो जाती. उदाहरण के लिए, अगर कोई उपयोगकर्ता महीने के बीच में मासिक सदस्यता रद्द करता है, तो उसके पास सेवा का ऐक्सेस तब तक बना रहता है, जब तक उसे हटा नहीं दिया जाता. यह अवधि करीब दो हफ़्ते होती है. इस अवधि के दौरान, सदस्यता तकनीकी रूप से अब भी चालू रहती है. इसलिए, उपयोगकर्ता सेवा का इस्तेमाल कर सकता है.
ऐसा अक्सर होता है कि उपयोगकर्ता, सदस्यता चालू रहने की इस अवधि के दौरान सदस्यता रद्द करने का फ़ैसला बदल देते हैं. इस गाइड में, इसे वापस लाना कहा गया है. यहां दिए गए सेक्शन में, External Payments API इंटिग्रेशन में सदस्यता वापस पाने से जुड़ी स्थितियों को मैनेज करने का तरीका बताया गया है.
डेवलपर की वेबसाइट से खरीदी गई सदस्यताएं
अगर आपके पास रद्द की गई सदस्यता के लिए कोई बाहरी लेन-देन आईडी है, तो सदस्यता को वापस लाने के लिए launchBillingFlow() को कॉल करना ज़रूरी नहीं है. इसलिए, इस तरह की सदस्यता को चालू करने के लिए इसका इस्तेमाल नहीं किया जाना चाहिए. अगर कोई उपयोगकर्ता रद्द की गई सदस्यता की अवधि खत्म होने से पहले उसे फिर से चालू करता है, तो उस समय कोई लेन-देन नहीं होता. मौजूदा साइकल खत्म होने और अगले रिन्यूअल के समय, रिन्यूअल की रिपोर्ट भेजना जारी रखें. इसमें ऐसे मामले शामिल हैं जहां सदस्यता वापस पाने के दौरान, उपयोगकर्ता को क्रेडिट मिलता है या रिन्यूअल के लिए खास कीमत मिलती है. उदाहरण के लिए, उपयोगकर्ता को सदस्यता जारी रखने के लिए बढ़ावा देने वाला प्रमोशन.
Google Play के बिलिंग सिस्टम से खरीदी गई सदस्यताएं
आम तौर पर, उपयोगकर्ता Google Play के बिलिंग सिस्टम पर जाकर सदस्यताएं वापस पा सकते हैं. Google Play के बिलिंग सिस्टम से खरीदी गई रद्द की गई सदस्यताओं के लिए, उपयोगकर्ता सदस्यता रद्द करने की कार्रवाई को पहले जैसा कर सकता है. ऐसा तब किया जा सकता है, जब सदस्यता Google Play की फिर से सदस्यता लें सुविधा के ज़रिए चालू हो. ऐसे में, आपको अपने बैकएंड में SUBSCRIPTION_RESTARTED रीयल टाइम डेवलपर सूचना मिलती है. साथ ही, नया परचेज़ टोकन जारी नहीं किया जाता. सदस्यता जारी रखने के लिए, ओरिजनल टोकन का इस्तेमाल किया जाता है. Google Play के बिलिंग सिस्टम में सदस्यता को वापस लाने का तरीका जानने के लिए, सदस्यता मैनेज करने से जुड़ी गाइड में सदस्यता वापस लाना लेख पढ़ें.
launchBillingFlow() को कॉल करके, ऐप्लिकेशन से Google Play के बिलिंग सिस्टम में सदस्यता वापस पाने की सुविधा को ट्रिगर किया जा सकता है. इसे करने का तरीका जानने के लिए, सदस्यता खत्म होने से पहले - ऐप्लिकेशन में लेख पढ़ें. जिन उपयोगकर्ताओं ने मूल खरीदारी के लिए, उपयोगकर्ता के पास मौजूद विकल्प वाला फ़्लो पूरा किया था (जिसे रद्द कर दिया गया था, लेकिन अब भी चालू है), सिस्टम अपने-आप उनके चुने गए विकल्प का पता लगाता है. साथ ही, इन खरीदारी को वापस लाने के लिए उपयोगकर्ता इंटरफ़ेस दिखाता है. उन्हें Google Play के ज़रिए सदस्यता को फिर से खरीदने की पुष्टि करने के लिए कहा जाता है. हालांकि, उन्हें उपयोगकर्ता के विकल्प चुनने के फ़्लो से फिर से नहीं गुज़रना पड़ता. इस मामले में, उपयोगकर्ता के लिए नया परचेज़ टोकन जारी किया जाता है.
आपके बैकएंड को SUBSCRIPTION_PURCHASED रीयल टाइम डेवलपर सूचना मिलती है. साथ ही, नई खरीदारी की स्थिति के लिए linkedPurchaseToken की वैल्यू, अपग्रेड या डाउनग्रेड के मामले में सेट की जाती है. इसमें रद्द की गई सदस्यता के लिए पुराना परचेज़ टोकन शामिल होता है.
फिर से ली गई सदस्यताएं
अगर सदस्यता पूरी तरह से खत्म हो जाती है, तो उपयोगकर्ता को फिर से सदस्यता लेनी होगी. सदस्यता, रद्द होने या पेमेंट पूरा न होने की वजह से खत्म हो सकती है. पेमेंट पूरा न होने की वजह से, खाते पर रोक लग सकती है.
ऐप्लिकेशन के ज़रिए भी सदस्यता को फिर से चालू किया जा सकता है. इसके लिए, आपको साइन अप करने की सामान्य प्रक्रिया अपनानी होगी. उपयोगकर्ताओं के पास यह चुनने का विकल्प होना चाहिए कि उन्हें किस बिलिंग सिस्टम का इस्तेमाल करना है. इस मामले में, launchBillingFlow() को कॉल किया जा सकता है. इसके बारे में पेमेंट के बाहरी तरीके इस्तेमाल करने की सुविधा लॉन्च करना लेख में बताया गया है.
जवाब मैनेज करना
गड़बड़ी होने पर, isBillingProgramAvailableAsync() , createBillingProgramReportingDetailsAsync(), launchBillingFlow() तरीके, BillingResponseCode.OK के अलावा कोई BillingResponseCode दे सकते हैं. इन रिस्पॉन्स कोड को इस तरह से हैंडल करें:
BillingResponseCode.ERROR: यह एक इंटरनल गड़बड़ी है. लेन-देन या बाहरी वेबसाइट खोलने की प्रोसेस को आगे न बढ़ाएं. एपीआई को फिर से कॉल करके, अनुरोध को फिर से भेजें.BillingResponseCode.FEATURE_NOT_SUPPORTED: मौजूदा डिवाइस पर Play Store, बाहरी पेमेंट सिस्टम वाले एपीआई के साथ काम नहीं करता. लेन-देन या बाहरी वेबसाइट खोलने की प्रोसेस को आगे न बढ़ाएं.BillingResponseCode.DEVELOPER_ERROR: अनुरोध में कोई गड़बड़ी है. आगे बढ़ने से पहले, गड़बड़ी का पता लगाने और उसे ठीक करने के लिए, डीबग मैसेज का इस्तेमाल करें.BillingResponseCode.USER_CANCELED: बाहरी वेबसाइट या ऐप्लिकेशन को खोलने की प्रोसेस को आगे न बढ़ाएं. अगली बार जब उपयोगकर्ता को ऐप्लिकेशन से बाहर ले जाने की कोशिश की जाए, तब जानकारी वाला डायलॉग बॉक्स दिखाने के लिए,launchBillingFlow()को फिर से कॉल करें.BillingResponseCode.BILLING_UNAVAILABLE: यह लेन-देन, बाहरी पेमेंट के लिए ज़रूरी शर्तें पूरी नहीं करता. इसलिए, इस प्रोग्राम के तहत डेवलपर बिलिंग की सुविधा उपलब्ध नहीं होगी. ऐसा इसलिए हो सकता है, क्योंकि उपयोगकर्ता इस प्रोग्राम के लिए ज़रूरी शर्तों को पूरा नहीं करता या आपके खाते को इस प्रोग्राम में रजिस्टर नहीं किया गया है. अगर ऐसा है, तो Play Developer Console में जाकर, देखें कि आपने रजिस्टर किया है या नहीं.BillingResponseCode.NETWORK_ERROR,BillingResponseCode.SERVICE_DISCONNECTED,BillingResponseCode.SERVICE_UNAVAILABLE: ये कुछ समय के लिए होने वाली गड़बड़ियां हैं. इन्हें फिर से कोशिश करने की सही नीति के तहत ठीक किया जाना चाहिए.SERVICE_DISCONNECTEDके मामले में, फिर से कोशिश करने से पहले Google Play से कनेक्शन फिर से बनाएं.
पेमेंट के बाहरी तरीकों के लिंक की जांच करना
बाहरी पेमेंट सिस्टम के इंटिग्रेशन की जांच करने के लिए, लाइसेंस टेस्टर का इस्तेमाल किया जाना चाहिए. लाइसेंस टेस्टर खातों से शुरू किए गए लेन-देन के लिए, आपको इनवॉइस नहीं भेजा जाएगा. लाइसेंस टेस्टर को कॉन्फ़िगर करने के बारे में ज़्यादा जानकारी के लिए, ऐप्लिकेशन का लाइसेंस देने के साथ इन-ऐप्लिकेशन बिलिंग की जांच करना लेख पढ़ें.
अगले चरण
ऐप्लिकेशन में इंटिग्रेशन पूरा करने के बाद, अपने बैकएंड को इंटिग्रेट किया जा सकता है.