एक बार खरीदने वाले प्रॉडक्ट का लाइफ़साइकल, शुल्क लेकर सदस्यता देने वाले प्रॉडक्ट के मुकाबले आसान होता है. हालांकि, इसमें कई स्टेट और ट्रांज़िशन इवेंट होते हैं. आपके बैकएंड को इन्हें सही तरीके से हैंडल करना होता है.
वन-टाइम प्रॉडक्ट की नई खरीदारी
बिलिंग फ़्लो पूरा होने के बाद, आपका ऐप्लिकेशन नई खरीदारी के बारे में जानकारी इन तरीकों से पा सकता है:
Real-time developer notificationsसेट अप करें औरGet all notifications for subscriptions and one-time productsको चालू करें, ताकि आपको खरीदारी की स्थिति के बारे में अपडेट मिलते रहें.- खरीदारी के अपडेट अपने-आप पाने के लिए,
PurchasesUpdatedListenerइंटरफ़ेस कोBillingClientसे लागू करें. BillingClient.queryPurchasesAsync()तरीके को कॉल करें.
नई खरीदारी की जानकारी मिलने के बाद, getPurchaseState तरीके या
purchases.productsv2.getproductpurchasev2 in Play Developer API का इस्तेमाल करें
ताकि नई खरीदारी के पेमेंट की स्थिति का पता लगाया जा सके.
डेवलपर से जुड़ी रीयल-टाइम सूचनाएं
जब कोई उपयोगकर्ता, वन-टाइम प्रॉडक्ट की खरीदारी करता है या उसे रद्द करता है, तो Google Play
OneTimeProductNotification मैसेज भेजता है.
अपने बैकएंड में खरीदारी की स्थिति को अपडेट करने के लिए,
purchases.productsv2.getproductpurchasev2
तरीके को कॉल करें. इसके लिए,
OneTimeProductNotification ऑब्जेक्ट में दिए गए परचेज़ टोकन का इस्तेमाल करें. यह तरीका, परचेज़ टोकन के हिसाब से, खरीदारी और इस्तेमाल की स्थिति की नई जानकारी देता है.
जब कोई प्री-ऑर्डर पूरा हो जाता है और उसकी खरीदारी की स्थिति बदलकर PURCHASED हो जाती है, तो आपके क्लाइंट को आरटीडीएन भेजा जाता है. आरटीडीएन मिलने के बाद, प्री-ऑर्डर की खरीदारी को प्रोसेस करें. इसके लिए, अपने बैकएंड में वन-टाइम प्रॉडक्ट की खरीदारी को प्रोसेस करना लेख में दिया गया तरीका अपनाएं.
लेन-देन से जुड़े आरटीडीएन को अपने सुरक्षित बैकएंड में हैंडल करें.
पूरे किए गए लेन-देन को हैंडल करना
जब कोई उपयोगकर्ता, वन-टाइम प्रॉडक्ट की खरीदारी पूरी करता है, तो Google Play, ONE_TIME_PRODUCT_PURCHASED टाइप वाला OneTimeProductNotification मैसेज भेजता है.
आरटीडीएन मिलने के बाद, खरीदारी को प्रोसेस करें. इसके लिए, अपने बैकएंड में वन-टाइम प्रॉडक्ट की खरीदारी को प्रोसेस करना
लेख में दिया गया तरीका अपनाएं.
रद्द किए गए लेन-देन को हैंडल करना
अगर आपने डेवलपर से जुड़ी रीयल-टाइम सूचनाएं पाने के लिए कॉन्फ़िगर किया है, तो वन-टाइम प्रॉडक्ट की खरीदारी रद्द होने पर, Google Play, ONE_TIME_PRODUCT_CANCELED टाइप वाला OneTimeProductNotification मैसेज भेजता है. उदाहरण के लिए, ऐसा तब हो सकता है, जब उपयोगकर्ता तय समय में पेमेंट न करे या डेवलपर या ग्राहक के अनुरोध पर खरीदारी रद्द कर दी जाए. जब आपके बैकएंड सर्वर को यह सूचना मिलती है, तो खरीदारी की नई स्थिति पाने के लिए, purchases.productsv2.getproductpurchasev2
तरीके को कॉल करें. इसके बाद, अपने बैकएंड को अपडेट करें.
इसमें उपयोगकर्ता के एनटाइटलमेंट भी शामिल हैं.
अगर Purchased स्थिति में मौजूद, वन-टाइम प्रॉडक्ट की खरीदारी का रिफ़ंड किया जाता है, तो आपको
Voided Purchases API की मदद से भी इसकी जानकारी मिलेगी.
अपने बैकएंड में वन-टाइम प्रॉडक्ट की खरीदारी को प्रोसेस करना
अगर आपको ONE_TIME_PRODUCT_PURCHASED
आरटीडीएन
का इस्तेमाल करके, नई खरीदारी का पता चला है या आपको
PurchasesUpdatedListenerके ज़रिए इन-ऐप्लिकेशन इसकी जानकारी मिली है या आपने अपने ऐप्लिकेशन के onResume() तरीके में मैन्युअल तरीके से
खरीदारी की जानकारीफ़ेच की है, तो आपको
नई खरीदारी को प्रोसेस करना होगा. हमारा सुझाव है कि सुरक्षा को बेहतर बनाने के लिए, खरीदारी को प्रोसेस करने की सुविधा को अपने बैकएंड में हैंडल करें.
वन-टाइम प्रॉडक्ट की नई खरीदारी को प्रोसेस करने के लिए, यह तरीका अपनाएं:
-
purchases.productsv2.getproductpurchasev2एंडपॉइंट को क्वेरी करें, ताकि वन-टाइम प्रॉडक्ट की खरीदारी की नई स्थिति मिल सके. खरीदारी के लिए इस तरीके को कॉल करने के लिए, आपको अपने ऐप्लिकेशन याONE_TIME_PRODUCT_PURCHASEDआरटीडीएन से, उससे जुड़ाpurchaseTokenचाहिए. getPurchaseState()को कॉल करें और पक्का करें कि खरीदारी की स्थितिPURCHASEDहो.- खरीदारी की पुष्टि करें.
- उपयोगकर्ता को कॉन्टेंट का ऐक्सेस दें. खरीदारी से जुड़े उपयोगकर्ता खाते की पहचान,
purchases.productsv2.getproductpurchasev2केobfuscatedExternalAccountIdफ़ील्ड से की जा सकती है. हालांकि, ऐसा तब किया जा सकता है, जब खरीदारी करते समयsetObfuscatedAccountId()का इस्तेमाल करके, कोई खाता सेट किया गया हो.- ऐसे प्रॉडक्ट की खरीदारी के लिए जिन्हें इस्तेमाल नहीं किया जा सकता, कॉन्टेंट की डिलीवरी की पुष्टि करने के लिए
purchases.products.acknowledgeतरीके को कॉल करें. `acknowledgementState` फ़ील्ड की जांच करकेacknowledgementStateपक्का करें कि खरीदारी की पुष्टि पहले न की गई हो. - अगर प्रॉडक्ट को इस्तेमाल किया जा सकता है, तो
purchases.products.consumeतरीके को कॉल करके, आइटम को इस्तेमाल किया गया के तौर पर मार्क करें, ताकि उपयोगकर्ता इसे इस्तेमाल करने के बाद फिर से खरीद सके. इस तरीके से, खरीदारी की पुष्टि भी हो जाती है.
- ऐसे प्रॉडक्ट की खरीदारी के लिए जिन्हें इस्तेमाल नहीं किया जा सकता, कॉन्टेंट की डिलीवरी की पुष्टि करने के लिए
Play Billing Library में, खरीदारी की पुष्टि करने और इस्तेमाल करने के तरीके भी उपलब्ध हैं. इनकी मदद से, अपने ऐप्लिकेशन से खरीदारी को प्रोसेस किया जा सकता है. हालांकि, हमारा सुझाव है कि अगर आपके पास सुरक्षित तरीके से लागू करने के लिए कोई बैकएंड है, तो उसमें खरीदारी को प्रोसेस करने की सुविधा को हैंडल करें.