इस दस्तावेज़ में, ज़रूरी शर्तें पूरी करने वाले ऐप्लिकेशन में पेमेंट के बाहरी तरीके इस्तेमाल करने की सुविधा देने के लिए, 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(PendingPurchasesParams.newBuilder().enableOneTimeProducts().build()) .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 से कनेक्ट करना
उपयोगकर्ता की ज़रूरी शर्तें पूरी करने की जांच करना
Google Play से कनेक्ट करने के बाद, यह देखने के लिए कि उपयोगकर्ता,
पेमेंट के बाहरी तरीके इस्तेमाल करने के प्रोग्राम की ज़रूरी शर्तें पूरी करता है या नहीं,
isBillingProgramAvailableAsync() तरीका कॉल करें. अगर उपयोगकर्ता ज़रूरी शर्तें पूरी करता है, तो यह तरीका
BillingResponseCode.OK दिखाता है.
यहां दिए गए उदाहरण में, ज़रूरी शर्तें पूरी करने की जांच करने का तरीका बताया गया है:
Kotlin
billingClient.isBillingProgramAvailableAsync( BillingProgram.EXTERNAL_PAYMENTS, object : BillingProgramAvailabilityListener { override fun onBillingProgramAvailabilityResponse( billingResult: BillingResult, billingProgramAvailabilityDetails: BillingProgramAvailabilityDetails ) { 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 एपीआई को कॉल करके किया जा सकता है. टोकन, 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 कोरोटीन का इस्तेमाल किया जा सकता है. इससे आपको अलग से कोई लिसनर तय नहीं करना पड़ेगा.
पेमेंट के बाहरी तरीके इस्तेमाल करने की सुविधा लॉन्च करना
पेमेंट के बाहरी तरीके इस्तेमाल करने की सुविधा लॉन्च करने के लिए, launchBillingFlow()
`launchBillingFlow()` को कॉल करें. यह तरीका, Google Play के बिलिंग
सिस्टम इंटिग्रेशन के साथ खरीदारी की प्रोसेस लॉन्च करने के तरीके जैसा ही है. हालांकि, इसमें एक और पैरामीटर
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 सेट अप और 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".toUri()) .setLaunchMode( DeveloperBillingOptionParams.LaunchMode.LAUNCH_IN_EXTERNAL_BROWSER_OR_APP ) .build()
Java
DeveloperBillingOptionParams developerBillingOptionParams =
DeveloperBillingOptionParams.newBuilder()
.setBillingProgram(BillingProgram.EXTERNAL_PAYMENTS)
.setLinkUri(Uri.parse("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 को सेट नहीं किया जाना चाहिए.
सदस्यताएं रद्द करना और बहाल करना
उपयोगकर्ताओं के पास अपनी सदस्यता रद्द करने का विकल्प होना चाहिए. जब कोई उपयोगकर्ता सदस्यता रद्द करता है, तो सदस्यता के फ़ायदे मिलने की समयसीमा, पैसे चुकाई गई अवधि खत्म होने तक बढ़ाई जा सकती है. उदाहरण के लिए, अगर कोई उपयोगकर्ता महीने के बीच में, महीने की सदस्यता रद्द करता है, तो उसके पास करीब दो हफ़्तों तक सेवा का ऐक्सेस बना रह सकता है. इसके बाद, उसका ऐक्सेस हटा दिया जाता है. इस दौरान, सदस्यता तकनीकी तौर पर चालू रहती है. इसलिए, उपयोगकर्ता सेवा का इस्तेमाल कर सकता है.
ऐसा अक्सर होता है कि उपयोगकर्ता, सदस्यता रद्द करने के फ़ैसले को वापस ले लेते हैं. ऐसा वे सदस्यता रद्द करने की अवधि के दौरान करते हैं. इस गाइड में, इसे सदस्यता बहाल करना कहा गया है. यहां दिए गए सेक्शन में, पेमेंट के बाहरी तरीके इस्तेमाल करने के एपीआई के इंटिग्रेशन में, सदस्यता बहाल करने के परिदृश्यों को मैनेज करने का तरीका बताया गया है.
डेवलपर की वेबसाइट से खरीदी गई सदस्यताएं
अगर आपके पास रद्द की गई सदस्यता के लिए, पेमेंट के बाहरी तरीके इस्तेमाल करने के लिए आईडी है, तो सदस्यता बहाल करने के लिए launchBillingFlow() को कॉल करना ज़रूरी नहीं है. इसलिए, इस तरह की सदस्यता को चालू करने के लिए, इस तरीके का इस्तेमाल नहीं किया जाना चाहिए. अगर कोई उपयोगकर्ता, रद्द की गई सदस्यता की चालू अवधि के दौरान अपनी सदस्यता बहाल करता है, तो उस समय कोई लेन-देन नहीं होता. मौजूदा साइकल खत्म होने और अगला रिन्यूअल होने पर, रिन्यूअल की रिपोर्ट करना जारी रखा जा सकता है. इसमें वे मामले शामिल हैं जहां उपयोगकर्ता को सदस्यता बहाल करने के लिए क्रेडिट या रिन्यूअल की खास कीमत मिलती है. उदाहरण के लिए, उपयोगकर्ता को अपनी सदस्यता जारी रखने के लिए बढ़ावा देने वाला प्रमोशन.
Google Play के बिलिंग सिस्टम से खरीदी गई सदस्यताएं
आम तौर पर, उपयोगकर्ता Google Play के बिलिंग सिस्टम पर सदस्यताएं बहाल कर सकते हैं. रद्द की गई ऐसी सदस्यताएं जो Google Play's बिलिंग सिस्टम पर खरीदी गई थीं उनके लिए, उपयोगकर्ता Google Play की फिर से सदस्यता लें सुविधा का इस्तेमाल करके, सदस्यता चालू रहने के दौरान रद्द करने के फ़ैसले को वापस ले सकता है. ऐसे में, आपको अपने बैकएंड में, SUBSCRIPTION_RESTARTED की रीयल टाइम डेवलपर सूचना मिलती है. साथ ही, खरीदारी का नया टोकन जारी नहीं किया जाता. सदस्यता जारी रखने के लिए, ओरिजनल टोकन का इस्तेमाल किया जाता है. Google Play के बिलिंग सिस्टम में, सदस्यता बहाल करने की सुविधा को मैनेज करने का तरीका जानने के लिए, सदस्यता बहाल करना लेख देखें. यह लेख सदस्यता मैनेज करने की गाइड में है.
launchBillingFlow() को कॉल करके, ऐप्लिकेशन से Google Play के बिलिंग सिस्टम में सदस्यता बहाल करने की प्रोसेस भी शुरू की जा सकती है. इसे करने का तरीका जानने के लिए,
सदस्यता की समयसीमा खत्म होने से पहले - इन-ऐप्लिकेशन लेख देखें. जिन उपयोगकर्ताओं ने ओरिजनल खरीदारी के लिए, उपयोगकर्ता के लिए उपलब्ध बिलिंग सिस्टम चुनने की प्रोसेस पूरी की थी (जिसे रद्द कर दिया गया है, लेकिन वह अब भी चालू है), उनके लिए सिस्टम अपने-आप उनकी पसंद का पता लगा लेता है और इन खरीदारी को बहाल करने के लिए, यूज़र इंटरफ़ेस (यूआई) दिखाता है. उनसे Google Play के ज़रिए सदस्यता की फिर से खरीदारी की पुष्टि करने के लिए कहा जाता है. हालांकि, उन्हें उपयोगकर्ता की पसंद के हिसाब से बिलिंग सिस्टम चुनने की प्रोसेस से दोबारा नहीं गुज़रना पड़ता. इस मामले में, उपयोगकर्ता के लिए खरीदारी का नया टोकन जारी किया जाता है.
आपके बैकएंड को SUBSCRIPTION_PURCHASED की रीयल टाइम डेवलपर सूचना मिलती है. साथ ही, खरीदारी की नई स्थिति के लिए, linkedPurchaseToken की वैल्यू, अपग्रेड या डाउनग्रेड के मामले में सेट की जाती है. इसमें, रद्द की गई सदस्यता के लिए, खरीदारी का पुराना टोकन इस्तेमाल किया जाता है.
फिर से सदस्यता लेना
अगर किसी सदस्यता की समयसीमा पूरी तरह खत्म हो जाती है, तो उपयोगकर्ता को फिर से सदस्यता लेनी होगी. ऐसा तब होता है, जब सदस्यता रद्द कर दी जाती है या पेमेंट अस्वीकार कर दिया जाता है और उसे ठीक नहीं किया जाता (खाते पर लगी रोक की अवधि खत्म हो जाती है).
ऐप्लिकेशन के ज़रिए भी फिर से सदस्यता लेने की सुविधा चालू की जा सकती है. इसके लिए, इसे सामान्य साइन-अप की तरह प्रोसेस किया जाता है. उपयोगकर्ताओं के पास यह चुनने का विकल्प होना चाहिए कि वे किस बिलिंग सिस्टम का इस्तेमाल करना चाहते हैं. इस मामले में, launchBillingFlow() को कॉल किया जा सकता है. इसके लिए, पेमेंट के बाहरी तरीके इस्तेमाल करने की सुविधा लॉन्च करना लेख में दिया गया तरीका अपनाएं.
जवाब मैनेज करना
गड़बड़ी होने पर, isBillingProgramAvailableAsync() ,
createBillingProgramReportingDetailsAsync(), launchBillingFlow() के तरीके
BillingResponseCode के अलावा कोई दूसरा BillingResponseCode.OK दिखा सकते हैं. इन रिस्पॉन्स कोड को इस तरह मैनेज करें:
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 से फिर से कनेक्शन बनाएं.
पेमेंट के बाहरी तरीकों के लिंक की जांच करना
पेमेंट के बाहरी तरीके इस्तेमाल करने के इंटिग्रेशन की जांच करने के लिए, लाइसेंस टेस्टर का इस्तेमाल किया जाना चाहिए. लाइसेंस टेस्टर खातों से शुरू किए गए लेन-देन के लिए, आपको इनवॉइस नहीं भेजा जाएगा. लाइसेंस टेस्टर को कॉन्फ़िगर करने के बारे में ज़्यादा जानने के लिए, ऐप्लिकेशन का लाइसेंस देने के साथ इन-ऐप्लिकेशन बिलिंग की जांच करना लेख देखें.
अगले चरण
ऐप्लिकेशन में इंटिग्रेशन पूरा करने के बाद, बैकएंड को इंटिग्रेट किया जा सकता है.