सिर्फ़ एक बार खरीदे जाने वाले प्रॉडक्ट की लाइफ़साइकल

एक बार खरीदे जाने वाले प्रॉडक्ट की लाइफ़साइकल, शुल्क लेकर सदस्यता देने वाले प्रॉडक्ट की तुलना में आसान होती है. हालांकि, अब भी कई ऐसी स्थितियां और ट्रांज़िशन इवेंट होते हैं जिन्हें आपके बैकएंड को ठीक से मैनेज करना होता है.

एक बार खरीदने के लिए, लाइफ़साइकल की स्थितियां और ट्रांज़िशन इवेंट.
इमेज 1 एक बार की जाने वाली खरीदारी के लिए, लाइफ़साइकल की स्थितियां और ट्रांज़िशन इवेंट.

वन-टाइम प्रॉडक्ट की नई खरीदारी

उपयोगकर्ता के बिलिंग फ़्लो पूरा करने के बाद, आपका ऐप्लिकेशन नई खरीदारी के बारे में जानकारी देख सकता है. इसके लिए, इनमें से कोई एक तरीका अपनाएं:

  • खरीदारी की स्थिति के बारे में अपडेट पाने के लिए, Real-time developer notifications सेट अप करें और Get all notifications for subscriptions and one-time products को चालू करें.
  • खरीदारी से जुड़े अपडेट अपने-आप पाने के लिए, BillingClient से PurchasesUpdatedListener इंटरफ़ेस लागू करें.
  • BillingClient.queryPurchasesAsync() तरीके को कॉल करें.

नई खरीदारी मिलने के बाद, getPurchaseState तरीके या purchases.productsv2.getproductpurchasev2 in Play Developer API

इस कुकी का इस्तेमाल, नई खरीदारी के पेमेंट की स्थिति का पता लगाने के लिए किया जाता है.

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

जब कोई उपयोगकर्ता वन-टाइम प्रॉडक्ट खरीदता है या उसकी खरीदारी रद्द करता है, तो Google Play OneTimeProductNotification मैसेज भेजता है. बैकएंड पर खरीदारी की स्थिति अपडेट करने के लिए, OneTimeProductNotification ऑब्जेक्ट में दिए गए परचेज़ टोकन का इस्तेमाल करके, purchases.productsv2.getproductpurchasev2 तरीके को कॉल करें. इस तरीके से, खरीदारी के टोकन के आधार पर, खरीदारी और इस्तेमाल की स्थिति की जानकारी मिलती है.

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

आपको लेन-देन से जुड़े आरटीडीएन को अपने सुरक्षित बैकएंड में मैनेज करना चाहिए.

पूरे हो चुके लेन-देन मैनेज करना

जब कोई उपयोगकर्ता वन-टाइम प्रॉडक्ट की खरीदारी पूरी करता है, तो Google Play ONE_TIME_PRODUCT_PURCHASED टाइप वाला OneTimeProductNotification मैसेज भेजता है. यह आरटीडीएन मिलने पर, खरीदारी को प्रोसेस करें. इसके लिए, अपने बैकएंड में वन-टाइम प्रॉडक्ट की खरीदारी को प्रोसेस करना लेख में बताया गया तरीका अपनाएं.

रद्द किए गए लेन-देन मैनेज करना

जब वन-टाइम प्रॉडक्ट की खरीदारी रद्द की जाती है, तो Google Play, OneTimeProductNotification मैसेज भेजता है. इसमें ONE_TIME_PRODUCT_CANCELED टाइप की जानकारी होती है. ऐसा तब होता है, जब आपने डेवलपर से जुड़ी रीयल-टाइम सूचनाएं पाने के लिए कॉन्फ़िगर किया हो. उदाहरण के लिए, ऐसा तब हो सकता है, जब उपयोगकर्ता तय समयसीमा के अंदर पेमेंट न करे या डेवलपर या ग्राहक के अनुरोध पर खरीदारी रद्द कर दी जाए. जब आपके बैकएंड सर्वर को यह सूचना मिलती है, तो खरीदारी की मौजूदा स्थिति पाने के लिए, purchases.productsv2.getproductpurchasev2 तरीके को कॉल करें. इसके बाद, अपने बैकएंड को अपडेट करें. इसमें उपयोगकर्ता के एनटाइटलमेंट भी शामिल हैं.

अगर Purchased स्थिति में मौजूद वन-टाइम प्रॉडक्ट की खरीदारी का रिफ़ंड किया जाता है, तो आपको Voided Purchases API का इस्तेमाल करके भी इसकी जानकारी दी जाएगी.

अपने बैकएंड में, वन-टाइम प्रॉडक्ट की खरीदारी को प्रोसेस करना

अगर आपने ONE_TIME_PRODUCT_PURCHASED आरटीडीएन का इस्तेमाल करके नई खरीदारी का पता लगाया है या आपको ऐप्लिकेशन में PurchasesUpdatedListener के ज़रिए इसकी सूचना मिली है या आपने अपने ऐप्लिकेशन के onResume() तरीके में खरीदारियों को मैन्युअल तरीके से फ़ेच किया है, तो आपको नई खरीदारी को प्रोसेस करना होगा. हमारा सुझाव है कि बेहतर सुरक्षा के लिए, खरीदारी की प्रोसेस को अपने बैकएंड में मैनेज करें.

एक बार में की जाने वाली नई खरीदारी को प्रोसेस करने के लिए, यह तरीका अपनाएं:

  1. वन-टाइम प्रॉडक्ट की खरीदारी की नई स्थिति जानने के लिए, purchases.productsv2.getproductpurchasev2 एंडपॉइंट पर क्वेरी करें. खरीदारी के लिए इस तरीके को कॉल करने के लिए, आपको अपने ऐप्लिकेशन या ONE_TIME_PRODUCT_PURCHASED आरटीडीएन से, इससे जुड़ा purchaseToken चाहिए.
  2. getPurchaseState() को कॉल करें और पक्का करें कि खरीदारी की स्थिति PURCHASED हो.
  3. खरीदारी की पुष्टि करना.
  4. उपयोगकर्ता को कॉन्टेंट का ऐक्सेस दें. अगर खरीदारी करते समय setObfuscatedAccountId() का इस्तेमाल करके कोई खाता सेट किया गया था, तो purchases.productsv2.getproductpurchasev2 में मौजूद obfuscatedExternalAccountId फ़ील्ड से, खरीदारी से जुड़े उपयोगकर्ता खाते की पहचान की जा सकती है.
    1. इस्तेमाल न किए जा सकने वाले प्रॉडक्ट की खरीदारी के लिए, कॉन्टेंट की डिलीवरी की पुष्टि करें. इसके लिए, purchases.products.acknowledge तरीके को कॉल करें. पक्का करें कि खरीदारी की पुष्टि पहले न की गई हो. इसके लिए, acknowledgementState फ़ील्ड देखें.
    2. अगर प्रॉडक्ट इस्तेमाल किया जा सकता है, तो purchases.products.consume तरीके को कॉल करके, आइटम को इस्तेमाल किए गए के तौर पर मार्क करें. इससे उपयोगकर्ता, आइटम को इस्तेमाल करने के बाद उसे फिर से खरीद सकता है. यह तरीका, खरीदारी की पुष्टि भी करता है.

Play Billing Library में, खरीदारी की पुष्टि करने और इस्तेमाल करने के तरीके भी उपलब्ध हैं. इनकी मदद से, ऐप्लिकेशन में की गई खरीदारी को प्रोसेस किया जा सकता है. हालांकि, हम सुझाव देते हैं कि अगर आपके पास बैकएंड है, तो प्रोसेसिंग को बैकएंड में हैंडल करें, ताकि इसे ज़्यादा सुरक्षित तरीके से लागू किया जा सके.