पब्लिश करने की तारीख: 2 दिसंबर, 2020
Google Play Billing की मदद से, आपके ऐप्लिकेशन को Play Store पर डिजिटल प्रॉडक्ट और सदस्यताएं बेचने की अनुमति मिलती है. साथ ही, आपको अपने कैटलॉग, कीमतों, और सदस्यताओं को मैनेज करने के लिए टूल, काम की रिपोर्ट, और Play Store की मदद से चेकआउट करने का तरीका मिलता है. यह तरीका आपके उपयोगकर्ताओं को पहले से ही पता होता है. Play Store पर पब्लिश किए गए ऐसे ऐप्लिकेशन के लिए यह ज़रूरी है जो डिजिटल प्रॉडक्ट बेचते हैं.
Google Play Billing API की अपनी टर्मिनोलॉजी होती है. इसमें क्लाइंट और बैकएंड कॉम्पोनेंट शामिल होते हैं. इस सेक्शन में, एपीआई के सिर्फ़ उस हिस्से के बारे में बताया गया है जो डिजिटल सामान के एपीआई और भरोसेमंद वेब गतिविधि का इस्तेमाल करने के लिए खास तौर पर है. इसे प्रोडक्शन ऐप्लिकेशन में इंटिग्रेट करने से पहले, Google Play Billing के दस्तावेज़ और इसके कॉन्सेप्ट को ज़रूर समझ लें.
बुनियादी फ़्लो
Play Store पर डिजिटल सामान उपलब्ध कराने के लिए, Play Store पर अपना कैटलॉग कॉन्फ़िगर करें. साथ ही, अपने PWA से Play Store को पेमेंट के तरीके के तौर पर कनेक्ट करें.
आप ऐसा Play Store इंटरफ़ेस में इस तरह से कर सकते हैं:
- Play Console के मेन्यू में, प्रॉडक्ट पर क्लिक करें. अपने मौजूदा इन-ऐप्लिकेशन प्रॉडक्ट और सदस्यताएं देखें.
- नया प्रॉडक्ट जोड़ने के लिए, प्रॉडक्ट बनाएं पर क्लिक करें.
- प्रॉडक्ट आईडी, नाम, ब्यौरा, और कीमत जोड़ें. उपयोगी और याद रखने में आसान प्रॉडक्ट आईडी बनाएं, क्योंकि आपको बाद में उनकी ज़रूरत पड़ सकती है. आईडी बनाने के बाद, उन्हें बदला नहीं जा सकता.
- सदस्यता बनाते समय, आपको बिलिंग अवधि भी बतानी होगी. आपके पास सदस्यता के फ़ायदों की सूची बनाने और सुविधाएं जोड़ने का विकल्प है. जैसे, मुफ़्त में आज़माने की सुविधा, शुरुआती कीमतें, ग्रेस पीरियड, और फिर से सदस्यता लेने का विकल्प.
- प्रॉडक्ट को उपलब्ध कराने के लिए, चालू करें पर क्लिक करें.
अगर आप चाहें, तो अपने प्रॉडक्ट Play Developers API के साथ जोड़ें.
कैटलॉग कॉन्फ़िगर होने के बाद, अगला चरण PWA से चेकआउट फ़्लो को कॉन्फ़िगर करना है. डिजिटल प्रॉडक्ट के एपीआई और पेमेंट रिक्वेस्ट एपीआई का इस्तेमाल करें.
Digital Goods API की मदद से प्रॉडक्ट की कीमत फ़ेच करना
Google Play Billing का इस्तेमाल करते समय, पक्का करें कि उपयोगकर्ताओं को दिखाई गई कीमत, स्टोर पेज पर दी गई कीमत से मेल खाती हो. इन कीमतों को मैन्युअल तरीके से सिंक करना असंभव है. इसलिए, डिजिटल प्रॉडक्ट के एपीआई की मदद से, वेब ऐप्लिकेशन, पेमेंट प्रोवाइडर से कीमतों के बारे में क्वेरी कर सकता है:
// The SKU for the product, as defined in the Play Store interface
async function populatePrice(sku) {
try {
// Check if the Digital Goods API is supported by the browser.
if (window.getDigitalGoodsService) {
// The Digital Goods API can be supported by other Payments provider.
// In this case, we're retrieving the Google Play Billing provider.
const service =
await window.getDigitalGoodsService("https://play.google.com/billing");
// Fetch product details using the `getDetails()` method.
const details = await service.getDetails([sku]);
if (details.length === 0) {
console.log(`Could not get SKU: "${sku}".`);
return false;
}
// The details contain both the price and the currenncy.
item = details[0];
const value = item.price.value;
const currency = item.price.currency;
const formattedPrice = new Intl.NumberFormat(navigator.language, {
style: 'currency', currency: currency }).format(value);
// Display the price to the user.
document.getElementById("price").innerHTML = formattedPrice;
} else {
console.error("Could not get price for SKU \"" + sku + "\".");
}
} catch (error) {
console.log(error);
}
return false;
}
Digital Goods API के साथ काम करने की सुविधा उपलब्ध है या नहीं, यह पता लगाने के लिए देखें कि getDigitalGoodsService()
, window
ऑब्जेक्ट पर उपलब्ध है या नहीं.
इसके बाद, पैरामीटर के तौर पर Google Play बिलिंग आइडेंटिफ़ायर का इस्तेमाल करके window.getDigitalGoodsService()
को कॉल करें.
इससे Google Play Billing के लिए सेवा का एक इंस्टेंस मिलता है. साथ ही, अन्य वेंडर, डिजिटल सामान के एपीआई के लिए सहायता लागू कर सकते हैं और उनके पास अलग-अलग आइडेंटिफ़ायर हो सकते हैं.
आखिर में, Google Play Billing ऑब्जेक्ट के रेफ़रंस पर getDetails()
को कॉल करें. साथ ही, आइटम के लिए SKU को पैरामीटर के तौर पर पास करें. यह तरीका उपयोगकर्ता को दिखाए जा सकने वाले आइटम की कीमत और
मुद्रा, दोनों की जानकारी वाला ऑब्जेक्ट दिखाता है.
परचेज़ फ़्लो शुरू करना
पेमेंट रिक्वेस्ट एपीआई की मदद से, वेब पर खरीदारी की प्रोसेस को चालू किया जा सकता है. साथ ही, इसका इस्तेमाल Google Play बिलिंग इंटिग्रेशन के लिए भी किया जाता है. अगर आपको Payment Request API के बारे में ज़्यादा जानकारी चाहिए, तो Payment Request API कैसे काम करता है लेख पढ़ें.
Google Play Billing के साथ एपीआई का इस्तेमाल करने के लिए, आपको पैसे चुकाने का ऐसा तरीका जोड़ना होगा जिसमें https://play.google.com/billing
नाम का तरीका काम करता हो.
इंस्ट्रूमेंट के डेटा के हिस्से के तौर पर SKU जोड़ें:
const supportedInstruments = [{
supportedMethods: "https://play.google.com/billing",
data: {
sku: sku
}
}];
इसके बाद, हमेशा की तरह PaymentRequest
ऑब्जेक्ट बनाएं और एपीआई का हमेशा की तरह इस्तेमाल करें
const request = new PaymentRequest(supportedInstruments, details);
खरीदारी स्वीकार करें
लेन-देन पूरा होने के बाद, पेमेंट की पुष्टि करने के लिए Digital Goods API का इस्तेमाल करें. PaymentRequest
के रिस्पॉन्स ऑब्जेक्ट में एक टोकन होता है. इसका इस्तेमाल लेन-देन की पुष्टि करने के लिए किया जा सकता है:
const response = await request.show();
const token = response.details.token;
const service = await window.getDigitalGoodsService("https://play.google.com/billing");
await service.acknowledge(token, 'onetime');
Digital Goods API और Payment Request API, उपयोगकर्ता की पहचान के बारे में नहीं जानते. इस वजह से, यह आपकी ज़िम्मेदारी है कि आप अपने बैकएंड में, उपयोगकर्ता से खरीदारी को जोड़ें और पक्का करें कि उसके पास खरीदे गए आइटम का ऐक्सेस हो. खरीदारी को किसी उपयोगकर्ता से जोड़ते समय, खरीदारी का टोकन सेव करना न भूलें. इसकी ज़रूरत आपको यह पुष्टि करने के लिए पड़ सकती है कि खरीदारी रद्द की गई है या रिफ़ंड किया गया है या फिर सदस्यता अब भी चालू है या नहीं. रीयल टाइम डेवलपर सूचनाएं एपीआई और Google Play Developer API देखें. इनसे, आपके बैकएंड में इन मामलों को मैनेज करने के लिए एंडपॉइंट मिलते हैं.
मौजूदा एनटाइटलमेंट की जांच करना
ऐसा हो सकता है कि किसी उपयोगकर्ता ने प्रमोशन कोड रिडीम किया हो या आपके प्रॉडक्ट की सदस्यता पहले से मौजूद हो. उपयोगकर्ता के पास सही एनटाइटलमेंट है या नहीं, इसकी पुष्टि करने के लिए, डिजिटल सामान की सेवा पर listPurchases()
कमांड का इस्तेमाल किया जा सकता है. इससे आपके ऐप्लिकेशन में की गई ग्राहक की सभी खरीदारी दिखती है. इसके तहत, उस खरीदारी को स्वीकार किया जाएगा जिसे उपयोगकर्ता ने स्वीकार नहीं किया है. इससे यह पक्का किया जा सकेगा कि उपयोगकर्ता ने अपने एनटाइटलमेंट को सही तरीके से रिडीम किया है.
const purchases = await itemService.listPurchases();
for (p of purchases) {
if (!p.acknowledged) {
await itemService.acknowledge(p.purchaseToken, 'onetime');
}
}