सिर्फ़ अन्य बिलिंग सिस्टम के लिए, इन-ऐप्लिकेशन इंटिग्रेशन के दिशा-निर्देश

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

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

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

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

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

  • आपको एक नए तरीके को कॉल करना होगा, ताकि यह पता चल सके कि आपका ऐप्लिकेशन सिर्फ़ अन्य बिलिंग सिस्टम का इस्तेमाल करता है: enableAlternativeBillingOnly.

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

Kotlin

var billingClient = BillingClient.newBuilder(context)
    .enableAlternativeBillingOnly()
    .build()

Java

private BillingClient billingClient = BillingClient.newBuilder(context)
    .enableAlternativeBillingOnly()
    .build();

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

उपलब्धता की जांच की जा रही है

आपका ऐप्लिकेशन, isAlternativeBillingOnlyAvailableAsync को कॉल करके यह पुष्टि करे कि अन्य बिलिंग सिस्टम ही उपलब्ध है.

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

Kotlin

billingClient.isAlternativeBillingOnlyAvailableAsync(object :
    AlternativeBillingOnlyAvailabilityListener {
    override fun onAlternativeBillingOnlyAvailabilityResponse(
        billingResult: BillingResult
    ) {
        if (billingResult.responseCode != BillingResponseCode.OK) {
            // Handle failures such as retrying due to network errors,
            // handling alternative billing only being unavailable, etc.
            return
        }

        // Alternative billing only is available. Continue with steps in
        // the guide.
    }
})

Java


billingClient.isAlternativeBillingOnlyAvailable(
    new AlternativeBillingOnlyAvailabilityListener() {
        @Override
        public void onAlternativeBillingOnlyAvailabilityResponse(
            BillingResult billingResult) {
            if (billingResult.getResponseCode() != BillingResponseCode.OK) {
                 // Handle failures such as retrying due to network errors,
                 // handling alternative billing only being unavailable,
                 // etc.
                return;
            }

            // Alternative billing only is available. Continue with steps in
            // the guide.
        }
    });

उपयोगकर्ताओं के लिए जानकारी वाला डायलॉग

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

Kotlin

// An activity reference from which the alternative billing only information
// dialog will be launched.
val activity: Activity = this.activity

val listener: AlternativeBillingOnlyInformationDialogListener =
    AlternativeBillingOnlyInformationDialogListener { billingResult ->
        // check billingResult
    }

val billingResult =
    billingClient.showAlternativeBillingOnlyInformationDialog(
        activity,
        listener
    )

Java


// An activity reference from which the alternative billing only information
// dialog will be launched.
Activity activity = ...;

AlternativeBillingOnlyInformationDialogListener listener =
    new AlternativeBillingOnlyInformationDialogListener() {
        @Override
        public void onAlternativeBillingOnlyInformationDialogResponse(
            BillingResult billingResult) {
                // check billingResult
            }
    };

BillingResult billingResult =
    billingClient.showAlternativeBillingOnlyInformationDialog(activity,
        listener);

अगर यह तरीका BillingResponseCode.OK दिखाता है, तो आपका ऐप्लिकेशन लेन-देन जारी रख सकता है. अगर BillingResponseCode.USER_CANCELED है, तो आपके ऐप्लिकेशन को showAlternativeBillingOnlyInformationDialog को कॉल करना चाहिए, ताकि उपयोगकर्ता को डायलॉग फिर से दिखाया जा सके. अन्य रिस्पॉन्स कोड के लिए, रिस्पॉन्स हैंडलिंग सेक्शन देखें.

Google Play को लेन-देन की जानकारी देना

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

Kotlin

billingClient.createAlternativeBillingOnlyReportingDetailsAsync(object :
    AlternativeBillingOnlyReportingDetailsListener {
    override fun onAlternativeBillingOnlyTokenResponse(
        billingResult: BillingResult,
        alternativeBillingOnlyReportingDetails: AlternativeBillingOnlyReportingDetails?
    ) {
        if (billingResult.responseCode != BillingResponseCode.OK) {
            // Handle failures such as retrying due to network errors.
            return
        }

        val externalTransactionToken =
            alternativeBillingOnlyReportingDetails?.externalTransactionToken

        // Send transaction token to backend and report to Google Play.
    }
})

Java


billingClient.createAlternativeBillingOnlyReportingDetailsAsync(
    new AlternativeBillingOnlyReportingDetailsListener() {
        @Override
        public void onAlternativeBillingOnlyTokenResponse(
            BillingResult billingResult,
            @Nullable AlternativeBillingOnlyReportingDetails
                alternativeBillingOnlyReportingDetails) {
            if (billingResult.getResponseCode() != BillingResponseCode.OK) {
                // Handle failures such as retrying due to network errors.
                return;
            }

            String transactionToken =
                alternativeBillingOnlyReportingDetails
                .getExternalTransactionToken();

            // Send transaction token to backend and report to Google Play.
        }
    });

जवाब मैनेज करना

ऊपर दिए गए तरीके isAlternativeBillingOnlyAvailableAsync(), showAlternativeBillingOnlyInformationDialog() और createAlternativeBillingOnlyReportingDetailsAsync() गड़बड़ियों के मामले में, BillingResponseCode.OK के अलावा अन्य जवाब दे सकते हैं. गड़बड़ियों को ठीक करने का सुझाव यहां दिया गया है:

  • ERROR: यह एक इंटरनल गड़बड़ी है. ट्रांजै़क्शन के साथ आगे न बढ़ें. उपयोगकर्ता के अगली बार खरीदारी करने की कोशिश करने पर, जानकारी वाला डायलॉग बॉक्स दिखाने के लिए, showAlternativeBillingOnlyInformationDialog() को कॉल करके फिर से कोशिश करें.
  • FEATURE_NOT_SUPPORTED: फ़िलहाल, इस डिवाइस पर Play Store, अन्य बिलिंग सिस्टम वाले एपीआई के साथ काम नहीं करता. ट्रांजै़क्शन के साथ आगे न बढ़ें.
  • USER_CANCELED: लेन-देन को आगे न बढ़ाएं. कॉल showAlternativeBillingOnlyInformationDialog() फिर से करें, ताकि अगली बार जब उपयोगकर्ता खरीदारी करने की कोशिश करे, तो उसे जानकारी वाला डायलॉग दिखे.
  • BILLING_UNAVAILABLE: यह लेन-देन, सिर्फ़ वैकल्पिक बिलिंग सिस्टम के लिए ज़रूरी शर्तें पूरी नहीं करता. इसलिए, इसे इस प्रोग्राम के तहत प्रोसेस नहीं किया जाना चाहिए. ऐसा इसलिए हो सकता है, क्योंकि उपयोगकर्ता उस देश में नहीं है जहां यह प्रोग्राम उपलब्ध है. इसके अलावा, ऐसा तब भी हो सकता है, जब आपका खाता इस प्रोग्राम में रजिस्टर न हुआ हो. अगर ऐसा नहीं है, तो Play Console में जाकर देखें कि आपने प्रोग्राम में रजिस्टर किया है या नहीं.
  • DEVELOPER_ERROR: अनुरोध में कोई गड़बड़ी है. आगे बढ़ने से पहले, गड़बड़ी की पहचान करने और उसे ठीक करने के लिए, डीबग मैसेज का इस्तेमाल करें.
  • NETWORK_ERROR, SERVICE_DISCONNECTED, SERVICE_UNAVAILABLE: ये कुछ समय के लिए होने वाली गड़बड़ियां हैं. इसलिए, आपको फिर से कोशिश करनी चाहिए. SERVICE_DISCONNECTED के मामले में, फिर से कोशिश करने से पहले Google Play से कनेक्शन फिर से बनाएं.

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

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

अगले चरण

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