पब्लिश करने की तारीख: 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 और Payment Request API का इस्तेमाल करें.
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 Billing आइडेंटिफ़ायर का इस्तेमाल करके, 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 डेवलपर एपीआई देखें. इनसे, आपके बैकएंड में इन मामलों को मैनेज करने के लिए एंडपॉइंट मिलते हैं.
मौजूदा एनटाइटलमेंट की जांच करना
ऐसा हो सकता है कि उपयोगकर्ता ने कोई प्रमोशन कोड रिडीम किया हो या उसके पास आपके प्रॉडक्ट की मौजूदा सदस्यता हो. उपयोगकर्ता के पास सही एनटाइटलमेंट है या नहीं, इसकी पुष्टि करने के लिए, डिजिटल सामान की सेवा पर listPurchases()
कमांड का इस्तेमाल किया जा सकता है. इससे, आपके ग्राहक की उन सभी खरीदारी की जानकारी मिलती है जो उसने आपके ऐप्लिकेशन में की हैं. साथ ही, इसकी मदद से उन खरीदारी की जानकारी भी मिलती है जिनकी पुष्टि नहीं हुई है. इससे यह पक्का किया जा सकता है कि उपयोगकर्ता ने अपने एनटाइटलमेंट सही तरीके से रिडीम किए हैं.
const purchases = await itemService.listPurchases();
for (p of purchases) {
if (!p.acknowledged) {
await itemService.acknowledge(p.purchaseToken, 'onetime');
}
}