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

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

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

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

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

  • 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() तरीके में मैन्युअल तरीके से खरीदारी की जानकारीफ़ेच की है, तो आपको नई खरीदारी को प्रोसेस करना होगा. हमारा सुझाव है कि सुरक्षा को बेहतर बनाने के लिए, खरीदारी को प्रोसेस करने की सुविधा को अपने बैकएंड में हैंडल करें.

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

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

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