डेवलपर पेलोड

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

इस सुविधा के उपलब्ध होने के बाद, हमने डेवलपर पेलोड को बंद कर दिया है. इसकी शुरुआत, Google Play Billing Library के वर्शन 2.2 से हुई है. डेवलपर पेलोड से जुड़े तरीकों को वर्शन 2.2 में बंद कर दिया गया था. इन्हें वर्शन 3.0 में हटा दिया गया है. ध्यान दें कि आपका ऐप्लिकेशन, लाइब्रेरी के पुराने वर्शन या AIDL का इस्तेमाल करके की गई खरीदारी के लिए, डेवलपर पेलोड को वापस पा सकता है.

बदलावों की पूरी सूची देखने के लिए, Google Play Billing Library 2.2 के रिलीज़ नोट और Google Play Billing Library 3.0 के रिलीज़ नोट देखें.

खरीदारी की पुष्टि की सेटिंग

यह पक्का करने के लिए कि खरीदारी असली हो और उसे धोखाधड़ी से न किया गया हो या दोबारा न किया गया हो, Google, खरीदारी की पुष्टि करने के लिए, Google Play Developer APIs के साथ-साथ खरीदारी के टोकन (इसे getPurchaseToken() ऑब्जेक्ट में Purchaseतरीके से हासिल किया जाता है) का इस्तेमाल करने का सुझाव देता है. ज़्यादा जानकारी के लिए, धोखाधड़ी और बुरे बर्ताव से निपटना लेख पढ़ें.

खरीदारी का एट्रिब्यूशन

कई ऐप्लिकेशन, खास तौर पर गेम को यह पक्का करना होता है कि खरीदारी को, गेम में मौजूद उस किरदार/अवतार या इन-ऐप्लिकेशन उपयोगकर्ता प्रोफ़ाइल से सही तरीके से एट्रिब्यूट किया जाए जिसने खरीदारी शुरू की है. Google Play Billing Library 2.2 से, आपका ऐप्लिकेशन खरीदारी का डायलॉग लॉन्च करते समय, Google को खाते और प्रोफ़ाइल के धुंधले किए गए आइडेंटिफ़ायर पास कर सकता है. साथ ही, खरीदारी वापस पाने पर उन्हें वापस पा सकता है.

BillingFlowParams में setObfuscatedAccountId() और setObfuscatedProfileId() पैरामीटर का इस्तेमाल करें. साथ ही, Purchase ऑब्जेक्ट में getAccountIdentifiers() तरीके का इस्तेमाल करके उन्हें वापस पाएं.

getAccountIdentifiers()

मेटाडेटा को खरीदारी से जोड़ना

Google, खरीदारी के बारे में मेटाडेटा को किसी सुरक्षित बैकएंड सर्वर पर सेव करने का सुझाव देता है. इस सर्वर को आप ही मैनेज करते हैं. खरीदारी के इस मेटाडेटा को, खरीदारी के टोकन से जोड़ा जाना चाहिए. यह टोकन, getPurchaseToken तरीके का इस्तेमाल करके हासिल किया गया है. यह तरीका Purchase ऑब्जेक्ट में है. खरीदारी के टोकन और मेटाडेटा को अपने बैकएंड पर पास करके, इस डेटा को सेव किया जा सकता है. ऐसा तब किया जाता है, जब खरीदारी के सफल होने के बाद, आपका PurchasesUpdatedListener कॉल किया जाता है.

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

अगर आपका PurchasesUpdatedListener कॉल किए जाने से पहले, खरीदारी के फ़्लो में रुकावट आती है, तो आपका ऐप्लिकेशन फिर से शुरू होने और BillingClient.queryPurchasesAsync() को कॉल करने के बाद, खरीदारी का पता लगा लेगा. इसके बाद, मेटाडेटा देखने, मेटाडेटा को खरीदारी के टोकन से जोड़ने, और खरीदारी को प्रोसेस करना जारी रखने के लिए, Purchase ऑब्जेक्ट के getPurchaseTime(), getSku(), और getPurchaseToken() तरीकों से वापस पाई गई वैल्यू को अपने बैकएंड सर्वर पर भेजा जा सकता है. ध्यान दें कि आपने शुरुआत में जो टाइमस्टैंप सेव किया था वह Purchase ऑब्जेक्ट के getPurchaseTime() की वैल्यू से पूरी तरह मेल नहीं खाएगा, इसलिए, आपको इनकी तुलना अनुमानित तरीके से करनी होगी. उदाहरण के लिए, यह देखा जा सकता है कि वैल्यू एक-दूसरे के तय समय के अंदर हैं या नहीं.