एक बार खरीदने वाले प्रॉडक्ट का लाइफ़साइकल, सदस्यता वाले प्रॉडक्ट के मुकाबले आसान होता है. हालांकि, अब भी कई स्थितियां और ट्रांज़िशन इवेंट होते हैं जिन्हें आपके बैकएंड को सही तरीके से हैंडल करना होता है.
सिर्फ़ एक बार पैसे चुकाकर की जाने वाली नई खरीदारी
उपयोगकर्ता के बिलिंग फ़्लो को पूरा करने के बाद, आपका ऐप्लिकेशन नई खरीदारी के बारे में जानकारी देख सकता है. इसके लिए, इनमें से कोई एक तरीका अपनाएं:
- खरीदारी की स्थिति के बारे में अपडेट पाने के लिए,
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() तरीके में खरीदारियों को मैन्युअल तरीके से फ़ेच किया है, तो आपको नई खरीदारी को प्रोसेस करना होगा. हमारा सुझाव है कि बेहतर सुरक्षा के लिए, खरीदारी की प्रोसेस को अपने बैकएंड में मैनेज करें.
एक बार की जाने वाली नई खरीदारी को प्रोसेस करने के लिए, यह तरीका अपनाएं:
- प्रॉडक्ट को एक बार खरीदने की स्थिति के बारे में ताज़ा जानकारी पाने के लिए,
purchases.productsv2.getproductpurchasev2एंडपॉइंट से क्वेरी करें. खरीदारी के लिए इस तरीके को कॉल करने के लिए, आपको अपने ऐप्लिकेशन याpurchaseTokenआरटीडीएन से, उससे जुड़ाpurchaseTokenचाहिए.ONE_TIME_PRODUCT_PURCHASED getPurchaseState()को कॉल करें और पक्का करें कि खरीदारी की स्थितिPURCHASEDहै.- खरीदारी की पुष्टि करें.
- उपयोगकर्ता को कॉन्टेंट का ऐक्सेस दें. खरीदारी से जुड़े उपयोगकर्ता खाते की पहचान,
purchases.productsv2.getproductpurchasev2केobfuscatedExternalAccountIdफ़ील्ड से की जा सकती है. ऐसा तब किया जा सकता है, जब खरीदारी करते समयsetObfuscatedAccountId()का इस्तेमाल करके कोई खाता सेट किया गया हो.- ऐसे प्रॉडक्ट की खरीदारी के लिए,
purchases.products.acknowledgeतरीके का इस्तेमाल करके, कॉन्टेंट की डिलीवरी की पुष्टि करें.acknowledgementStateफ़ील्ड में जाकर, यह पक्का करें कि खरीदारी को पहले स्वीकार न किया गया हो. - अगर प्रॉडक्ट इस्तेमाल किया जा सकता है, तो
purchases.products.consumeतरीके का इस्तेमाल करके, आइटम को 'इस्तेमाल किया गया' के तौर पर मार्क करें. इससे उपयोगकर्ता, आइटम को इस्तेमाल करने के बाद उसे फिर से खरीद पाएगा. इस तरीके से, खरीदारी की पुष्टि भी हो जाती है.
- ऐसे प्रॉडक्ट की खरीदारी के लिए,
Play Billing Library में, खरीदारी की पुष्टि करने और उसे इस्तेमाल करने के तरीके भी उपलब्ध हैं. इनकी मदद से, अपने ऐप्लिकेशन से खरीदारी प्रोसेस की जा सकती है. हालांकि, हम सुझाव देते हैं कि अगर आपके पास बैकएंड है, तो प्रोसेसिंग को अपने बैकएंड में मैनेज करें, ताकि इसे ज़्यादा सुरक्षित तरीके से लागू किया जा सके.