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

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

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

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

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

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

नई खरीदारी मिलने के बाद, पेमेंट की स्थिति जानने के लिए, getPurchaseState या purchases.products.get in Play Developer API का इस्तेमाल करें.

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

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

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

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

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

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

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

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

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

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

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

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

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

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