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

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

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

सिर्फ़ एक बार पैसे चुकाकर की जाने वाली नई खरीदारी

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

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

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