अगर आपका PWA Google Play पर मौजूद है और आपको ऐप्लिकेशन में मौजूद प्रॉडक्ट या सदस्यताएं बेचकर उससे कमाई करनी है, तो Play की नीति के तहत, आपको Play Billing को लागू करना होगा. आपको अपने PWA में दो एपीआई लागू करने होंगे: Digital Goods API और Payment Request API.
Digital Goods API
Digital Goods API, आपके ऐप्लिकेशन और Google Play के बीच एक इंटरफ़ेस है. इसकी मदद से, Play Console में ऐप्लिकेशन में मौजूद प्रॉडक्ट और सदस्यताओं के लिए डाली गई डिजिटल प्रॉडक्ट और उनकी जानकारी को वापस पाया जा सकता है. साथ ही, किसी उपयोगकर्ता की ओर से की गई मौजूदा खरीदारी को भी वापस पाया जा सकता है. अगर आपने अब तक Play Console में, ऐप्लिकेशन में खरीदने के लिए प्रॉडक्ट या सदस्यताएं नहीं जोड़ी हैं, तो Play Billing के लिए Play Console का सेटअप ज़रूर करें.
30 नवंबर, 2021 को ChromeOS 96 रिलीज़ किया गया था. इसमें Digital Goods API 2.0 को लागू किया गया था.
Digital Goods API के पहले वर्शन का ऑरिजिन ट्रायल 30 जनवरी, 2022 को खत्म हो गया. इसलिए, अब इसे बंद कर दिया गया है और सिर्फ़ API का v2 वर्शन उपलब्ध है.
ChromeOS 103 को 23 जून, 2022 को रिलीज़ किया गया था. इसमें Digital Goods API 2.1 को लागू किया गया था. इस रिलीज़ में कोई भी ऐसा बदलाव नहीं किया गया है जिससे मौजूदा सिस्टम पर असर पड़े. इसमें सिर्फ़ नई मेथड और अतिरिक्त फ़ील्ड शामिल हैं: listPurchaseHistory() और itemType.
ऑरिजिन ट्रायल के लिए रजिस्टर करना
ध्यान दें: फ़िलहाल, Digital Goods API को Origin Trial के ज़रिए ऐक्सेस किया जा सकता है. यह एक ऐसा तरीका है जिससे डेवलपर को नए वेब एपीआई का ऐक्सेस, रिलीज़ होने से पहले ही मिल जाता है. आपको Digital Goods API v2 के ओरिजिन ट्रायल के लिए रजिस्टर करना होगा और टोकन का अनुरोध करना होगा. इस टोकन को आपको अपने ओरिजिन के किसी भी पेज पर देना होगा.
ऑरिजिन ट्रायल के लिए रजिस्टर करने पर, आपको “इस तारीख तक मान्य है” तारीख दिखेगी. इस तारीख तक, आपका टोकन काम करेगा. मुफ़्त में आज़माने की अवधि में बने रहने के लिए, उस तारीख के आस-पास अपने टोकन रिन्यू करना न भूलें. ऑरिजिन ट्रायल के तौर पर उपलब्ध कराए गए एपीआई में बदलाव हो सकता है. इसलिए, यह पक्का करें कि आपको उस ऑरिजिन ट्रायल में हुए नए बदलावों के बारे में पता हो जिसमें आपने हिस्सा लिया है. अगर आपको कोई समस्या आती है, तो डिजिटल प्रॉडक्ट के एपीआई से जुड़ा दस्तावेज़ देखें.
Payment Request API
खरीदारी करने पर, Payment Request API पेमेंट के लेन-देन को मैनेज करता है. यह आइटम की उस जानकारी का इस्तेमाल करता है जो Digital Goods API देता है. इससे, पेमेंट के सही तरीके का इस्तेमाल करके इन-ऐप्लिकेशन खरीदारी की जा सकती है. हमारे मामले में, यह तरीका Google Play Billing है.
Digital Goods API की सुविधा का पता लगाना
यह पता लगाया जा सकता है कि आपने अपनी वेबसाइट पर, ऑरिजिन ट्रायल के ज़रिए एपीआई को सही तरीके से चालू किया है या नहीं. इसके लिए, window ऑब्जेक्ट में getDigitalGoodsService तरीके की जांच करें.
if ('getDigitalGoodsService' in window) { // Digital Goods API is supported! } else { console.log('DigitalGoodsService is not available.'); // Use another payment method }
Google Play Billing सेवा से कनेक्ट करना
डिजिटल प्रॉडक्ट के एपीआई को अलग-अलग ब्राउज़र और डिजिटल स्टोर के साथ काम करने के लिए डिज़ाइन किया गया था. यह पेमेंट के अनुरोध वाले एपीआई की तरह ही है, जो किसी भी ब्राउज़र पर काम करता है और इसका इस्तेमाल पेमेंट की सुविधा देने वाली अलग-अलग कंपनियों के साथ किया जा सकता है. Google Play Billing से जुड़ी सेवा का इंस्टेंस पाने के लिए, "https://play.google.com/billing" को पेमेंट के तरीके के तौर पर getDigitalGoodsService() स्ट्रिंग पास करें.
अगर इस तरीके से गड़बड़ी होती है, तो Google Play Billing के पेमेंट का तरीका उपलब्ध नहीं है. उदाहरण के लिए, उपयोगकर्ता ब्राउज़र के ज़रिए आपके PWA को ऐक्सेस कर रहा है. इसके बजाय, आपको लेन-देन के लिए पेमेंट का कोई दूसरा तरीका उपलब्ध कराना चाहिए.
if ('getDigitalGoodsService' in window) { // Digital Goods API is supported! try { const service = await window.getDigitalGoodsService('https://play.google.com/billing'); // Google Play Billing service is available } catch (error) { // Google Play Billing service is not available. Use another payment flow. } }
आइटम की जानकारी पाना
Digital Goods सेवा को Google Play से कनेक्ट करने के बाद, प्रॉडक्ट और खरीदारी के बारे में जानकारी पाने के लिए, एपीआई का इस्तेमाल किया जा सकता है.
getDetails() तरीके से, Play Console में सेट अप किए गए आइटम के बारे में जानकारी मिलती है. प्रॉडक्ट का टाइटल, ब्यौरा, और कीमत जैसी जानकारी, आपके ऐप्लिकेशन के यूज़र इंटरफ़ेस (यूआई) में उपयोगकर्ता को दिखनी चाहिए. इससे उन्हें पता चलेगा कि खरीदारी के लिए क्या उपलब्ध है और उसकी कीमत कितनी है.
getDetails() तरीके के लिए, आइटम आईडी की एक सूची की ज़रूरत होगी. यह सूची, Play Console में बनाए गए ऐप्लिकेशन में खरीदने के लिए उपलब्ध प्रॉडक्ट और सदस्यताओं के प्रॉडक्ट आईडी से मेल खानी चाहिए.
const itemDetails = await service.getDetails(['product_1', 'product_2', 'product_3']); for (const item of itemDetails) { // Display item information to user displayItem(item.title, item.description, item.price); }
उपयोगकर्ता की स्थानीय भाषा के हिसाब से सही कीमत पाने के लिए, आपको कुछ और फ़ॉर्मैटिंग करनी होगी:
const localePrice = new Intl.NumberFormat(navigator.language, { style: 'currency', currency: item.price.currency, }).format(item.price.value);
ध्यान दें: Digital Goods API, आइटम आईडी की सूची पाने का कोई तरीका उपलब्ध नहीं कराता. इसके बजाय, आपको उन्हें अपने क्लाइंट में हार्ड-कोड करना होगा या अपने बैक-एंड सर्वर से फ़ेच करना होगा. Google Play डेवलपर एपीआई की मदद से, बैक-एंड से आइटम आईडी की सूची को क्वेरी किया जा सकता है. (अपने बैक-एंड सर्वर में Play Billing के मुख्य कॉम्पोनेंट लागू करने के बारे में ज़्यादा जानें. आप जो भी तरीका चुनें, पक्का करें कि आइटम आईडी, Play Console में मौजूद आईडी से मेल खाते हों.
एपीआई के 2.1 वर्शन में, getDetails() से मिले फ़ील्ड में से एक itemType है. यह एक इनम है. इसमें ”product” या ”subscription” वैल्यू होती है. इससे पता चलता है कि संबंधित आइटम, ऐप्लिकेशन में खरीदने के लिए उपलब्ध प्रॉडक्ट है या सदस्यता. इन दोनों तरह के प्रॉडक्ट के बीच अंतर करने से, आपको हर प्रॉडक्ट टाइप के लिए अलग-अलग तरीके अपनाने में मदद मिल सकती है. उदाहरण के लिए, आपके पास उपयोगकर्ताओं को सदस्यता लेने के लिए एक पेज और सदस्यता के बिना उपलब्ध अन्य प्रॉडक्ट के लिए दूसरा पेज हो सकता है. इससे यह भी पता चलता है कि अपने बैकएंड में इस्तेमाल करने के लिए, Google Play Developer API का सही REST संसाधन (purchases.products या purchases.subscriptions) कौन-सा है.
कोई आइटम खरीदना
जब आपके प्रॉडक्ट और उनकी जानकारी उपयोगकर्ता को दिख जाती है, तब Payment Request API की मदद से खरीदारी का फ़्लो बनाया जा सकता है. डिजिटल प्रॉडक्ट के एपीआई के साथ इस्तेमाल करने पर, सिर्फ़ एक इनपुट पैरामीटर की ज़रूरत होती है: methodData.
Play Billing की मदद से, एक बार में सिर्फ़ एक आइटम खरीदा जा सकता है. Play सर्वर को आइटम की कीमत और उसके बारे में जानकारी पहले से पता होती है. इसलिए, details पैरामीटर की ज़रूरत नहीं होती. ज़्यादा जानकारी के लिए, एक्सप्लेनर देखें.
PaymentRequest में methodData पैरामीटर के supportedMethods सदस्य का इस्तेमाल करके, Google Play Billing को पेमेंट के तरीके के तौर पर पहचानें. इसके लिए, "https://play.google.com/billing" स्ट्रिंग का इस्तेमाल करें. इसके बाद, data सदस्य में, आइटम आईडी को sku के तौर पर पास करें.
const paymentMethodData = [ { supportedMethods: 'https://play.google.com/billing', data: { sku: item.itemId, }, }, ];
इसके बाद, पेमेंट का अनुरोध बनाएं और पेमेंट की प्रोसेस शुरू करने के लिए show() को कॉल करें:
const request = new PaymentRequest(paymentMethodData); const paymentResponse = await request.show();
इससे उपयोगकर्ता को Play पर खरीदारी करने का यूज़र इंटरफ़ेस (यूआई) दिखेगा. इसमें, उन्हें उस प्रॉडक्ट के बारे में जानकारी दिखेगी जिसे वे खरीदना चाहते हैं. वे लेन-देन को रद्द कर सकते हैं या पेमेंट जारी रख सकते हैं. अगर उपयोगकर्ता पेमेंट रद्द करता है, तो show() से मिला प्रॉमिस, गड़बड़ी के साथ अस्वीकार कर दिया जाएगा. अगर खरीदार पेमेंट कर देता है और खरीदारी पूरी कर लेता है, तो PaymentResponse के साथ प्रॉमिस पूरा हो जाएगा. पेमेंट के रिस्पॉन्स की details प्रॉपर्टी में, खरीदारी का टोकन दिखता है.
धोखाधड़ी से बचने के लिए, बैक-एंड सर्वर पर खरीदारी और खरीदारी के टोकन की पुष्टि करना ज़रूरी है. उपयोगकर्ताओं और उनसे जुड़े खरीदारी के टोकन को ट्रैक करना भी एक अच्छा तरीका है. अपने बैक-एंड सर्वर पर पुष्टि करने की सुविधा लागू करने का तरीका जानें.
खरीदारी की पुष्टि करने के बाद, पेमेंट की प्रोसेस पूरी करने और बिलिंग यूज़र इंटरफ़ेस (यूआई) को बंद करने के लिए, पेमेंट के जवाब में complete() को कॉल करें. पेमेंट की प्रोसेस की स्थिति के बारे में बताने के लिए, result स्ट्रिंग को भी पास किया जा सकता है. हालांकि, यह ज़रूरी नहीं है. यह ब्राउज़र पर निर्भर करता है कि वह उपयोगकर्ता को इस नतीजे के बारे में कोई जानकारी दे या नहीं. Chrome, उपयोगकर्ता को दिखने वाले कोई भी संकेत नहीं बनाता है. इसलिए, हमारा सुझाव है कि आप अपने PWA में गड़बड़ी या सफलता के मैसेज दिखाएं.
/* Changes were recently made so that the PaymentResponse `details` property returns the purchase token as `purchaseToken` instead of `token`. Note that `token` will be deprecated at some point in the future. To ensure that your app won't be affected by this, make the change to `purchaseToken` in your client code and use the latest version of Bubblewrap (v1.13.5 and later) to update and generate a new app package to upload to the Play Console. */ const { purchaseToken } = paymentResponse.details; let paymentComplete; if (validatePurchaseOnBackend(purchaseToken)) { paymentComplete = await paymentResponse.complete('success'); // Let user know their purchase transaction has successfully completed and been verified } else { paymentComplete = await paymentResponse.complete('fail'); // Let user know their purchase transaction failed to verify }
पैसे चुकाकर ली जाने वाली सदस्यता के लेवल को अपग्रेड और डाउनग्रेड करना
इन-ऐप्लिकेशन प्रॉडक्ट और सदस्यताएं खरीदने के लिए, एक ही परचेज़ फ़्लो का इस्तेमाल किया जाता है. हालांकि, सदस्यताओं के लिए Google Play पर खरीदारी के अतिरिक्त विकल्प उपलब्ध हैं. जैसे, अपग्रेड और डाउनग्रेड करना. पेमेंट के तरीके के लिए data बनाते समय, अपग्रेड या डाउनग्रेड करने की प्रोसेस शुरू करने के लिए, आपको ये जानकारी देनी होगी:
sku: यह उस नई सदस्यता का आइटम आईडी है जिसे अपग्रेड या डाउनग्रेड किया जाना है.oldSku: यह उपयोगकर्ता की मौजूदा सदस्यता का आइटम आईडी है.purchaseToken: यह उपयोगकर्ता की मौजूदा सदस्यता के लिए खरीदारी का टोकन है. जैसा कि पहले बताया गया था, अपने बैकएंड में परचेज़ टोकन को ट्रैक करना एक अच्छा तरीका है. इस और अन्य स्थितियों के लिए, आपको उपयोगकर्ता को उसकी मौजूदा खरीदारी और खरीदारी के टोकन से भी जोड़ना चाहिए.prorationMode: जब नई सदस्यता, उपयोगकर्ता की मौजूदा सदस्यता की जगह लेगी, तब उससे इस तरह शुल्क लिया जाएगा.
| इस्तेमाल के हिसाब से शुल्क चुकाने की सुविधा | ब्यौरा |
|---|---|
immediateAndChargeProratedPrice |
सदस्यता को तुरंत अपग्रेड कर दिया जाता है और बिलिंग साइकल में कोई बदलाव नहीं होता. इसके बाद, उपयोगकर्ता से बाकी अवधि के लिए कीमत का अंतर लिया जाता है. |
immediateAndChargeFullPrice |
सदस्यता को अपग्रेड या डाउनग्रेड किया जाता है. साथ ही, उपयोगकर्ता से नए एनटाइटलमेंट के लिए, तुरंत पूरी कीमत ली जाती है. पिछली सदस्यता की बची हुई वैल्यू को, नई सदस्यता के लिए समय के हिसाब से बांट दिया जाता है. इस प्रोरेशन मोड को हाल ही में Google Play Billing Library 4.0 की रिलीज़ में जोड़ा गया है. यह सुविधा अब Bubblewrap के वर्शन 1.13.5 से उपलब्ध है. |
immediateWithoutProration |
कुछ समय के लिए बंद कर दिया गया है इस प्रोरेशन मोड में धोखाधड़ी की संभावना है. इसमें उपयोगकर्ता, एक बिलिंग साइकल के लिए बिना किसी अतिरिक्त शुल्क के अपग्रेड की गई सदस्यता पा सकते हैं. कृपया ध्यान दें कि हमने इस मोड को कुछ समय के लिए बंद कर दिया है, ताकि हम इस समस्या को ठीक कर सकें. |
immediateWithTimeProration |
सदस्यता को तुरंत अपग्रेड या डाउनग्रेड कर दिया जाता है. बचा हुआ समय, कीमत के अंतर के हिसाब से अडजस्ट किया जाता है. साथ ही, अगली बिलिंग की तारीख को आगे बढ़ाकर, नई सदस्यता के लिए क्रेडिट कर दिया जाता है. यह डिफ़ॉल्ट व्यवहार है. |
रुका हुआ है |
सदस्यता को अपग्रेड या डाउनग्रेड सिर्फ़ तब किया जाता है, जब सदस्यता रिन्यू होती है. यह खास तौर पर डाउनग्रेड के लिए मददगार है. |
unknownSubscriptionUpgradeDowngradePolicy |
कोई नीति सेट नहीं है. हम इसका सुझाव नहीं देते. |
Google Play Billing Library के रेफ़रंस दस्तावेज़ में, कीमत में बदलाव के अलग-अलग मोड के बारे में ज़्यादा जानें. सदस्यता अपग्रेड और डाउनग्रेड करने और प्रो-रेटिंग मोड के सुझावों के बारे में ज़्यादा जानने के लिए, Android डेवलपर के दस्तावेज़ देखें.
इन अतिरिक्त फ़ील्ड का इस्तेमाल कुछ इस तरह दिखेगा:
const paymentMethod = [ { supportedMethods: 'https://play.google.com/billing', data: { sku: item.itemId, oldSku: oldPurchase.itemId, purchaseToken: oldPurchase.purchaseToken, prorationMode: 'immediateAndChargeProratedPrice', }, }, ];
यहां, item उस नई सदस्यता का ItemDetails है जिसे उपयोगकर्ता अपग्रेड या डाउनग्रेड करने की कोशिश कर रहा है. वहीं, oldPurchase उपयोगकर्ता की मौजूदा सदस्यता का PurchaseDetails है.
खरीदारी की पुष्टि करना
जब कोई उपयोगकर्ता कोई आइटम खरीद लेता है, तो आपको उसे सही एनटाइटलमेंट (खरीदे गए आइटम या कॉन्टेंट का ऐक्सेस) देना चाहिए. इसके बाद, खरीदारी की पुष्टि करें. खरीदारी की पुष्टि करने से, Google Play को पता चलता है कि आपको खरीदारी मिल गई है और आपने उसे सही तरीके से प्रोसेस कर लिया है.
ध्यान दें: अगर खरीदारी के 72 घंटे के अंदर उसकी पुष्टि नहीं की जाती है, तो उपयोगकर्ता को पेमेंट वापस कर दिया जाता है और खरीदारी रद्द कर दी जाती है. खरीदारी का टोकन अब मान्य नहीं रहेगा. इसलिए, मौजूदा खरीदारी के लिए क्वेरी करने पर, रद्द की गई खरीदारी का डेटा नहीं दिखेगा. इससे यह पक्का होता है कि नेटवर्क की गड़बड़ी की वजह से, किसी उपयोगकर्ता से गलत तरीके से शुल्क नहीं लिया जाएगा. नेटवर्क की गड़बड़ी की वजह से, उपयोगकर्ता को आइटम का एनटाइटलमेंट नहीं मिलता है.
आपको Google Play Developer API का इस्तेमाल करके, अपने बैकएंड सर्वर से खरीदारी की पुष्टि करनी चाहिए. हमारा सुझाव है कि आप अपने बैकएंड सर्वर में, एनटाइटलमेंट देने और खरीदारी की पुष्टि करने की प्रोसेस को एक साथ पूरा करें.
- जब कोई उपयोगकर्ता क्लाइंट-साइड से खरीदारी कर लेता है, तो अपने बैकएंड सर्वर को एक अनुरोध भेजें. इस अनुरोध में, खरीदारी का टोकन और सामान का आईडी शामिल करें.
- पुष्टि करने के लिए, खरीदारी की जानकारी पाने के लिए अपने बैकएंड पर, इस फ़ंक्शन को कॉल करें:
- इन-ऐप्लिकेशन आइटम के लिए, purchases.products.get.
- सदस्यताओं के लिए, purchases.subscriptions.get.
- अपने बैकएंड डेटाबेस में सही एनटाइटलमेंट दें.
- इसके बाद, खरीदारी की पुष्टि करने के लिए, इस फ़ंक्शन को कॉल करें:
- इन-ऐप्लिकेशन आइटम के लिए, purchases.products.acknowledge.
- सदस्यताओं के लिए, purchases.subscriptions.acknowledge.
खरीदारी का इस्तेमाल करना
खरीदारी की पुष्टि करने पर, Google Play को यह पता चलता है कि उपयोगकर्ता के पास अब वह आइटम है और उसे फिर से खरीदने की अनुमति नहीं दी जानी चाहिए. अगर उपयोगकर्ता को कोई आइटम सिर्फ़ एक बार खरीदना है और वह हमेशा के लिए उसका मालिक रहेगा (जैसे, गेम के किरदार की स्किन), तो वह आइटम इस्तेमाल नहीं किया जा सकता.
इसके अलावा, ऐसा भी हो सकता है कि आपको किसी उपयोगकर्ता को एक बार में सिर्फ़ एक आइटम खरीदने की अनुमति देनी हो. इसके बाद, उपयोगकर्ता को उस आइटम का इस्तेमाल करना होगा. इसके बाद ही, वह दूसरा आइटम खरीद पाएगा. जब उपयोगकर्ता किसी आइटम का “इस्तेमाल” करता है, तो Google Play को यह बताने के लिए कि उपयोगकर्ता ने आइटम का इस्तेमाल कर लिया है, आपको consume() तरीके को कॉल करना चाहिए. इसके बाद, Google Play उस आइटम को उपयोगकर्ता के लिए फिर से उपलब्ध कराएगा, ताकि वह उसे खरीद सके.
जिन आइटम के लिए, आपने किसी उपयोगकर्ता को एक से ज़्यादा आइटम खरीदने की अनुमति दी है उन्हें बार-बार खरीदा जा सकता है. इसके लिए, उन्हें पहले इस्तेमाल करने की ज़रूरत नहीं होती. हम इन्हें बार-बार खरीदे जा सकने वाले आइटम कहते हैं. इसी तरह, इन आइटम को “इस्तेमाल” करना ज़रूरी है. इसके बाद ही, Google Play उपयोगकर्ता को इन्हें फिर से खरीदने की अनुमति देगा. इसलिए, भले ही उपयोगकर्ता ने अब तक आइटम का इस्तेमाल न किया हो, लेकिन आपको consume() तरीके को कॉल करके, आइटम को इस्तेमाल किया गया के तौर पर मार्क करना होगा.
// After the user purchases the item, send the purchase token and item ID to your backend to grant the entitlement and acknowledge it right away . . . // When the user uses the item or if it is a repeatable item, consume it so it’s available for purchase again. service.consume(purchaseToken); }
मौजूदा खरीदारी देखना
उपयोगकर्ता के फ़्लो की आखिरी मुख्य वजह यह है कि मौजूदा खरीदारी (ऐसे ऐप्लिकेशन में खरीदे गए प्रॉडक्ट जिनका अब तक इस्तेमाल नहीं किया गया है और चालू सदस्यताएं) की जांच की जाए, ताकि आपके उपयोगकर्ताओं को पता चल सके कि उनके पास फ़िलहाल कौनसी सदस्यता या आइटम हैं. ये मौजूदा खरीदारी, Google Play पर की गई पिछली खरीदारी से जुड़ी होंगी. ये खरीदारी, किसी भी डिवाइस पर इन-ऐप्लिकेशन या Play Store पर की गई होंगी. Play Store में ऐप्लिकेशन के बाहर जाकर की गई खरीदारी को ऐप्लिकेशन के बाहर जाकर की जाने वाली खरीदारी कहा जाता है.
मौजूदा खरीदारी की जानकारी वापस पाने के दौरान, आपको पुष्टि की स्थिति भी देखनी चाहिए. साथ ही, उन खरीदारी की पुष्टि करनी चाहिए जो पहले की गई थीं, लेकिन उनकी पुष्टि ठीक से नहीं हुई थी. हमारा सुझाव है कि खरीदारी की पुष्टि जल्द से जल्द की जाए, ताकि उपयोगकर्ता के एनटाइटलमेंट अप-टू-डेट रहें और ऐप्लिकेशन में सही तरीके से दिखें.
Digital Goods API listPurchases() तरीके से, PurchaseDetails की एक सूची मिलेगी. इसमें हर खरीदारी के लिए itemId और purchaseToken शामिल होगा. आपको अपने बैकएंड सर्वर पर Google Play Developer API का इस्तेमाल करना होगा. इससे खरीदारी की स्थिति की जांच की जा सकेगी और उन्हें सही तरीके से स्वीकार किया जा सकेगा. आपको:
- उपयोगकर्ता की खरीदारी की सूची पाने के लिए, क्लाइंट-साइड पर Digital Goods API की
listPurchases()तरीके को कॉल करें. - हर खरीदारी के लिए, अपने बैकएंड को
purchaseTokenऔरitemIdपास करें. - अगर ज़रूरी हो, तो अपने बैकएंड डेटाबेस में एनटाइटलमेंट दें.
- इसके बाद, कॉल करें:और
acknowledgementStateदेखें.- इन-ऐप्लिकेशन आइटम के लिए, purchases.products.get.
- सदस्यताओं के लिए, purchases.subscriptions.get.
- अगर वैल्यू 0 है (अभी तक पुष्टि नहीं हुई है), तो इस फ़ंक्शन को कॉल करें:
- इन-ऐप्लिकेशन आइटम के लिए, purchases.products.acknowledge.
- सदस्यताओं के लिए, purchases.subscriptions.acknowledge.
एनटाइटलमेंट देने से पहले, बैक-एंड सर्वर पर खरीदारी की पुष्टि करने के तरीके के बारे में ज़्यादा जानें.
खरीदारी इतिहास
listPurchases, उपयोगकर्ता की मौजूदा खरीदारी के बारे में जानकारी देगा. वहीं, एपीआई के v2.1 में मौजूद listPurchaseHistory() तरीका, उपयोगकर्ता की हर आइटम के लिए की गई सबसे हाल की खरीदारी की जानकारी देगा. भले ही, खरीदारी की समयसीमा खत्म हो गई हो, उसे रद्द कर दिया गया हो या उसका इस्तेमाल कर लिया गया हो. listPurchaseHistory() तरीके से, PurchaseDetails की एक सूची मिलती है. इसमें हर खरीदारी के लिए itemId और purchaseToken शामिल होता है. आपको इस सूची का इस्तेमाल, अपने बैकएंड सर्वर पर Google Play Developer API के साथ करना होगा, ताकि ज़्यादा जानकारी मिल सके.
ऐप्लिकेशन के बाहर जाकर की जाने वाली खरीदारी
ऐप्लिकेशन के बाहर जाकर की जाने वाली खरीदारी, इन-ऐप्लिकेशन खरीदारी के सामान्य फ़्लो में नहीं की जाती है. ये आम तौर पर आपके ऐप्लिकेशन के बजाय, Play Store में दिखेंगी. लोग ऐप्लिकेशन के बाहर दो मुख्य तरीकों से खरीदारी कर सकते हैं:
- प्रोमो कोड रिडीम करना: Play Store के उपयोगकर्ता मेन्यू में, “ऑफ़र और सूचनाएं” -> “प्रोमो कोड रिडीम करें” या “पेमेंट और सदस्यताएं” -> “उपहार कोड रिडीम करें” में जाकर.
- फिर से सदस्यता लेना: Play Store के उपयोगकर्ता मेन्यू में, “पेमेंट और सदस्यताएं” -> “सदस्यताएं” में जाकर. यहां, उपयोगकर्ता अलग-अलग ऐप्लिकेशन की सभी सदस्यताओं को मैनेज कर सकते हैं. जिन सदस्यताओं की समयसीमा खत्म हो गई है या जिन्हें रद्द कर दिया गया है उनके लिए, उपयोगकर्ताओं के पास “फिर से सदस्यता लें” विकल्प होता है.
जब लोग Play Store से फिर से सदस्यता लेते हैं, तो उनकी खरीदारी की पुष्टि अपने-आप नहीं होती. इस वजह से, उन्हें रिफ़ंड मिल सकता है. ऐसा जान-बूझकर किया गया है, क्योंकि उपयोगकर्ताओं से सदस्यता के लिए सिर्फ़ तब शुल्क लिया जाना चाहिए, जब वे ऐप्लिकेशन का इस्तेमाल करने के लिए उसे खोलें. उपयोगकर्ता को “सदस्यता की पुष्टि करें” जैसा मैसेज दिख सकता है. इससे उन्हें ऐप्लिकेशन खोलने के लिए याद दिलाया जाता है.
उपयोगकर्ता के ऐप्लिकेशन लॉन्च करने के बाद, डेवलपर के तौर पर आपको इन खरीदारी की पुष्टि करनी होगी. इसलिए, हमारा सुझाव है कि आप मौजूदा खरीदारी की जांच करें. आम तौर पर, यह जांच तब की जाती है, जब ऐप्लिकेशन पहली बार लॉन्च होता है. साथ ही, उन खरीदारी की पुष्टि करें जिनकी अब तक पुष्टि नहीं हुई है.
उपयोगकर्ताओं को सदस्यताएं मैनेज करने की अनुमति देना
उपयोगकर्ताओं को बेहतर अनुभव देने के लिए, यह ज़रूरी है कि उन्हें ऐप्लिकेशन में ही अपनी सदस्यताएं मैनेज करने और रद्द करने का विकल्प मिले. हमारा सुझाव है कि आप सेटिंग पेज या मेन्यू पर एक डीप लिंक बनाएं. इससे उपयोगकर्ता को आपके ऐप्लिकेशन के लिए, Play Store के सदस्यता मैनेज करने वाले पेज पर रीडायरेक्ट किया जा सकेगा. यहां दिए गए यूआरएल को अपने “sub-product-id” और “app-package-name” से बदलें:
https://play.google.com/store/account/subscriptions?sku=sub-product-id&package=app-package-nameअगले चरण
ये उपयोगकर्ता फ़्लो और कोड स्निपेट, Play Billing को लागू करने के लिए, आपके PWA में Digital Goods API और Payment Request API का इस्तेमाल करने का तरीका दिखाने के लिए बुनियादी तौर पर लागू किए गए हैं. आपको एपीआई का इस्तेमाल इस तरह से करना चाहिए कि वे आपके ऐप्लिकेशन के संदर्भ और इस्तेमाल के उदाहरणों के हिसाब से सही हों. एंड-टू-एंड लागू करने के उदाहरण के लिए, हमारा ओपन-सोर्स सैंपल देखें.
इसके बाद, यह देखें कि अपने बैक-एंड सर्वर में Play Billing के ज़रूरी कॉम्पोनेंट कैसे लागू करें, ताकि आपका ऐप्लिकेशन सुरक्षित रहे. साथ ही, उपयोगकर्ताओं के एनटाइटलमेंट के हिसाब से हमेशा अपडेट रहे.