वन-टाइम प्रॉडक्ट के लिए मल्टी-प्रोडक्ट

इस दस्तावेज़ में, Play Billing Library (पीबीएल) की एक से ज़्यादा प्रॉडक्ट वाली सुविधा के साथ अपने ऐप्लिकेशन को इंटिग्रेट करने का तरीका बताया गया है.

एक बार इस्तेमाल होने वाले प्रॉडक्ट (ओटीपी) के लिए मल्टी-प्रॉडक्ट की सुविधा का इस्तेमाल करके, एक बार इस्तेमाल होने वाले कई प्रॉडक्ट को एक यूनिट में जोड़ा जा सकता है. इसके बाद, बंडल किए गए इन प्रॉडक्ट को एक साथ खरीदा, बिल किया, और मैनेज किया जा सकता है. प्रॉडक्ट की खरीदारी को बढ़ावा देने के लिए, बंडल किए गए इन ओटीपी के लिए छूट वाले ऑफ़र भी बनाए जा सकते हैं.

ज़रूरी बातें

वन-टाइम प्रॉडक्ट बंडल बनाते समय, इन बातों का ध्यान रखें:

  • वन-टाइम प्रॉडक्ट बंडल में सदस्यताएं नहीं हो सकतीं.
  • एक बार खरीदे जाने वाले प्रॉडक्ट बंडल में, डिजिटल कॉन्टेंट और सेवा का कॉम्बिनेशन नहीं हो सकता.
  • बंडल किए गए वन-टाइम प्रॉडक्ट, तुरंत डाउनलोड करने के लिए उपलब्ध होने चाहिए. उदाहरण के लिए, वन-टाइम प्रॉडक्ट बंडल को पहले से ऑर्डर नहीं किया जा सकता, क्योंकि इसे तुरंत डाउनलोड नहीं किया जा सकता.
  • वन-टाइम प्रॉडक्ट के लिए, एक से ज़्यादा प्रॉडक्ट वाले ऑफ़र में किराये पर खरीदने का विकल्प उपलब्ध नहीं है.

Play Billing Library के साथ इंटिग्रेट करना

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

खरीदारी का फ़्लो लॉन्च करना

एक से ज़्यादा वन-टाइम प्रॉडक्ट के लिए, खरीदारी का फ़्लो लॉन्च करने के लिए, यह तरीका अपनाएं:

  1. QueryProductDetailsParams.Builder.setProductList तरीके का इस्तेमाल करके, वन-टाइम प्रॉडक्ट की एक सूची बनाएं.

  2. BillingClient.queryProductDetailsAsync तरीके का इस्तेमाल करके, अपने सभी वन-टाइम प्रॉडक्ट फ़ेच करें.

    यहां दिए गए सैंपल में, वन-टाइम प्रॉडक्ट की पूरी सूची पाने का तरीका बताया गया है:

    Java

    billingClient.queryProductDetailsAsync(
    queryProductDetailsParams,
    new ProductDetailsResponseListener() {
      public void onProductDetailsResponse(
          BillingResult billingResult, QueryProductDetailsResult productDetailsResult) {
        // check billingResult
        // …
        // process productDetailsList returned by QueryProductDetailsResult
        ImmutableList productDetailsList = productDetailsResult.getProductDetailsList();
        for (ProductDetails productDetails : productDetailsList) {
          for (OneTimePurchaseOfferDetails oneTimePurchaseOfferDetails :
              productDetails.getOneTimePurchaseOfferDetailsList()) {
                 // …
          }
        }
      }
    });
  3. हर वन-टाइम प्रॉडक्ट के लिए, ProductDetails ऑब्जेक्ट सेट करें.

  4. BillingFlowParams.Builder.setProductDetailsParamsList तरीके का इस्तेमाल करके, वन-टाइम प्रॉडक्ट की जानकारी दें. BillingFlowParams क्लास, खरीदारी के फ़्लो की जानकारी देती है.

    यहां दिए गए सैंपल में, एक से ज़्यादा प्रॉडक्ट के लिए, ओटीपी की मदद से की जाने वाली खरीदारी के लिए बिलिंग फ़्लो लॉन्च करने का तरीका बताया गया है:

    Java

    BillingClient billingClient =
       BillingClient.newBuilder()
        // set other options
        .build();
    // ProductDetails obtained from queryProductDetailsAsync().
    ProductDetails productDetails1 = ...;
    ProductDetails productDetails2 = ...;
    ArrayList productDetailsList = new ArrayList<>();
    productDetailsList.add(productDetails1);
    productDetailsList.add(productDetails2);
    BillingFlowParams billingFlowParams =
    BillingFlowParams.newBuilder()
        .setProductDetailsParamsList(productDetailsList)
        .build();
    billingClient.launchBillingFlow(billingFlowParams);

खरीदारी की प्रोसेस करना

एक से ज़्यादा प्रॉडक्ट के लिए, वन-टाइम प्रॉडक्ट की खरीदारी को प्रोसेस करने का तरीका, एक आइटम के लिए की गई मौजूदा खरीदारी को प्रोसेस करने के तरीके जैसा ही होता है. इसके बारे में Google Play Billing Library को अपने ऐप्लिकेशन में इंटिग्रेट करना लेख में बताया गया है. दोनों में सिर्फ़ यह अंतर होता है कि एक से ज़्यादा प्रॉडक्ट के लिए, वन-टाइम प्रॉडक्ट की खरीदारी के लिए, आपको सिर्फ़ एक प्रॉडक्ट के बजाय सभी प्रॉडक्ट के लिए एनटाइटलमेंट देना होता है. इससे खरीदार को एक ही खरीदारी में कई एनटाइटलमेंट मिल सकते हैं. एक से ज़्यादा प्रॉडक्ट के लिए ओटीपी की मदद से की गई खरीदारी में, कई आइटम मिलते हैं. इन्हें Google Play Billing Library में Purchase.getProducts() का इस्तेमाल करके वापस पाया जा सकता है. इसके बाद, Google Play Developer API के purchases.products.get में मौजूद lineItems सूची का इस्तेमाल करके वापस पाया जा सकता है.

डेवलपर से जुड़ी रीयल-टाइम सूचनाएं

एक से ज़्यादा प्रॉडक्ट के लिए ओटीपी से की जाने वाली खरीदारी के लिए, RTDN में sku फ़ील्ड नहीं दिया गया है. एक से ज़्यादा प्रॉडक्ट के लिए, ओटीपी का इस्तेमाल करके की गई खरीदारी. इसलिए, खरीदारी का डेटा पाने के लिए, Play Developer API का इस्तेमाल किया जा सकता है. साथ ही, इसमें मौजूद सभी आइटम देखे जा सकते हैं.

रिफ़ंड

एक से ज़्यादा प्रॉडक्ट के लिए ओटीपी की मदद से की गई खरीदारी में, उपयोगकर्ता अलग-अलग आइटम के लिए रिफ़ंड का अनुरोध नहीं कर सकते. साथ ही, आपके पास भी अलग-अलग आइटम के लिए रिफ़ंड जारी करने का विकल्प नहीं होता. हालांकि, एक से ज़्यादा प्रॉडक्ट के लिए ओटीपी खरीदने पर, पूरे ऑर्डर के लिए रिफ़ंड का अनुरोध किया जा सकता है और रिफ़ंड दिया जा सकता है. अगर आपको किसी उपयोगकर्ता के लिए, एक से ज़्यादा प्रॉडक्ट के लिए की गई ओटीपी खरीदारी रद्द करनी है, तो खरीदारी से जुड़े सभी एनटाइटलमेंट रद्द कर दिए जाएंगे.

वित्तीय रिपोर्टिंग और समाधान

आय की रिपोर्ट का इस्तेमाल करके, एक से ज़्यादा प्रॉडक्ट के लिए ओटीपी की चालू खरीदारी का मिलान, Google Payoffs और Google Play पर किए गए लेन-देन से करें. लेन-देन की हर लाइन आइटम का एक ऑर्डर आईडी होता है. एक से ज़्यादा प्रॉडक्ट के लिए ओटीपी की खरीदारी करने पर, कमाई और अनुमानित बिक्री की रिपोर्ट में हर लेन-देन के लिए अलग-अलग लाइनें शामिल होंगी. इनमें हर आइटम के लिए, शुल्क, टैक्स, और रिफ़ंड जैसे लेन-देन की जानकारी होगी. हालांकि, इन सभी लाइनों में एक ही ऑर्डर आईडी होगा.

Play Console में मौजूद डैशबोर्ड के लिए:

  • कंसोल के वित्तीय रिपोर्टिंग सेक्शन में दिए गए रेवेन्यू के आंकड़े, अलग-अलग प्रॉडक्ट के हिसाब से दिखाए जाते हैं.

  • ऑर्डर मैनेजमेंट में, एक से ज़्यादा प्रॉडक्ट के लिए ओटीपी से की गई खरीदारी की जानकारी दिखती है. साथ ही, खरीदे गए सामान की सूची भी दिखती है. ऑर्डर मैनेजमेंट की मदद से, किसी उपयोगकर्ता की खरीदारी को रद्द किया जा सकता है, उसका ऐक्सेस वापस लिया जा सकता है या उसे पूरा रिफ़ंड दिया जा सकता है.