प्रोग्रेसिव्ह वेब अॅप्समध्ये (PWAs) स्टँडर्ड डिजिटल गुड्स API वापरून अॅप-मधील खरेदी जोडण्यासाठी डेव्हलपर्ससाठी एक सर्वसमावेशक मार्गदर्शक. कार्यप्रवाह, सुरक्षा पद्धती आणि जागतिक धोरणे शिका.
वेब कमाईचे मार्ग खुले करणे: अॅप-मधील खरेदीसाठी डिजिटल गुड्स API चा सखोल अभ्यास
वर्षानुवर्षे, नेटिव्ह मोबाइल अॅप्लिकेशन्सना कमाईच्या बाबतीत एक विशेष फायदा होता: ऑपरेटिंग सिस्टमच्या अॅप स्टोअरमध्ये थेट समाकलित केलेली अखंड, विश्वसनीय अॅप-मधील खरेदी (IAP) प्रणाली. ही सुव्यवस्थित प्रक्रिया मोबाइल अॅप अर्थव्यवस्थेचा आधारस्तंभ आहे. दरम्यान, मुक्त वेब, त्याच्या अतुलनीय पोहोच असूनही, थर्ड-पार्टी पेमेंट गेटवेच्या अधिक विखुरलेल्या लँडस्केपशी झुंजत आहे, ज्यामुळे अनेकदा कमी एकात्मिक आणि कमी विश्वासार्ह वापरकर्ता अनुभव मिळतो.
सादर आहे डिजिटल गुड्स API. हे आधुनिक वेब मानक प्रोग्रेसिव्ह वेब अॅप्स (PWAs) साठी एक गेम-चेंजर आहे, ज्याचा उद्देश वेब आणि नेटिव्ह कमाईमधील अंतर कमी करणे आहे. हे वेब अॅप्लिकेशन्सना डिजिटल वितरण सेवांशी - जसे की गूगल प्ले स्टोअर किंवा मायक्रोसॉफ्ट स्टोअर - संवाद साधण्यासाठी एक प्रमाणित मार्ग प्रदान करते, जेणेकरून अॅप-मधील उत्पादने आणि खरेदी व्यवस्थापित करता येतील.
हे सर्वसमावेशक मार्गदर्शक डेव्हलपर्स, उत्पादन व्यवस्थापक आणि तंत्रज्ञान प्रमुखांसाठी आहे जे त्यांच्या वेब अॅप्लिकेशन्ससाठी एक मजबूत IAP धोरण समजून घेऊ इच्छितात आणि लागू करू इच्छितात. आम्ही API च्या मूळ संकल्पनांपासून ते टप्प्याटप्प्याने अंमलबजावणीपर्यंत, जगभरातील प्रेक्षकांसाठी महत्त्वपूर्ण सुरक्षा पद्धती आणि जागतिक विचारांचा समावेश करून त्याचा शोध घेऊ.
धडा १: डिजिटल गुड्स API समजून घेणे
डिजिटल गुड्स API म्हणजे काय?
मूलतः, डिजिटल गुड्स API हे एक जावास्क्रिप्ट API आहे जे आपल्या वेब अॅप्लिकेशन आणि वापरकर्त्याच्या पेमेंट प्रदात्यामध्ये एक पूल म्हणून काम करते, विशेषतः ज्या प्लॅटफॉर्मवरून PWA स्थापित केले गेले होते त्याच्याशी संबंधित. उदाहरणार्थ, जर वापरकर्त्याने आपले PWA गूगल प्ले स्टोअरवरून स्थापित केले, तर डिजिटल गुड्स API गूगल प्ले बिलिंगशी संवाद साधेल.
याचा प्राथमिक उद्देश आपल्या वेब अनुभवात थेट डिजिटल वस्तू विकण्याची प्रक्रिया सुलभ करणे आहे. या वस्तूंमध्ये हे समाविष्ट असू शकते:
- कन्झ्युमेबल्स (Consumables): एकदाच खरेदी करता येणाऱ्या वस्तू ज्या वापरल्या जाऊ शकतात आणि पुन्हा खरेदी केल्या जाऊ शकतात, जसे की गेममधील चलन, अतिरिक्त आयुष्य किंवा बूस्ट.
- नॉन-कन्झ्युमेबल्स (Non-consumables): कायमस्वरूपी एकदाच खरेदी करता येणाऱ्या वस्तू, जसे की प्रीमियम फीचर अनलॉक करणे, जाहिराती काढून टाकणे किंवा लेव्हल पॅक विकत घेणे.
- सबस्क्रिप्शन्स (Subscriptions): सामग्री किंवा सेवांमध्ये सतत प्रवेशासाठी आवर्ती पेमेंट, जसे की मासिक बातम्यांचे सबस्क्रिप्शन किंवा प्रीमियम सॉफ्टवेअर सूटमध्ये प्रवेश.
हे API वापरण्याचे मुख्य फायदे खालीलप्रमाणे आहेत:
- सुव्यवस्थित वापरकर्ता अनुभव: वापरकर्ते पेमेंट माहिती पुन्हा न टाकता त्यांच्या विद्यमान, विश्वसनीय स्टोअर खात्याचा वापर करून डिजिटल वस्तू खरेदी करू शकतात. यामुळे घर्षण लक्षणीयरीत्या कमी होते आणि रूपांतरण दर वाढू शकतो.
- विश्वसनीय पेमेंट प्रवाह: संपूर्ण पेमेंट प्रक्रिया मूळ प्लॅटफॉर्मद्वारे (उदा. गूगल प्ले) हाताळली जाते, ज्यामध्ये त्याची सुरक्षा, परिचितता आणि संग्रहित पेमेंट पद्धतींचा फायदा होतो.
- कमी डेव्हलपमेंट ओव्हरहेड: विविध प्रदेश किंवा पसंतींसाठी एकाधिक पेमेंट प्रोसेसर समाकलित करण्याऐवजी, डेव्हलपर एकच, प्रमाणित API वापरू शकतात जे ब्राउझर आणि मूळ प्लॅटफॉर्म व्यवस्थापित करतात.
मूळ संकल्पना आणि परिभाषा
API प्रभावीपणे वापरण्यासाठी, त्याचे मुख्य घटक समजून घेणे आवश्यक आहे:
- DigitalGoodsService: हे API चे मुख्य प्रवेशद्वार आहे. पेमेंट प्रदात्याशी संवाद साधण्यासाठी आपण या सेवेचा एक इन्स्टन्स प्राप्त करता.
- SKU (Stock Keeping Unit): आपण विकत असलेल्या प्रत्येक डिजिटल उत्पादनासाठी एक युनिक आयडेंटिफायर. आपण हे SKUs आपल्या पेमेंट प्रदात्याच्या डेव्हलपर कन्सोलमध्ये (उदा. गूगल प्ले कन्सोल) परिभाषित करता.
- `getDetails(skus)`: आपल्या उत्पादनांबद्दल तपशीलवार माहिती मिळवण्यासाठी एक पद्धत, जसे की शीर्षक, वर्णन आणि सर्वात महत्त्वाचे म्हणजे, वर्तमान वापरकर्त्यासाठी स्थानिक किंमत आणि चलन.
- Purchase Token: एक पूर्ण झालेल्या व्यवहाराचे प्रतिनिधित्व करणारी एक युनिक, सुरक्षित स्ट्रिंग. हे टोकन बॅकएंड व्हेरिफिकेशनसाठी अत्यंत महत्त्वाचे आहे.
- `listPurchases()`: वापरकर्त्याच्या सक्रिय, न वापरलेल्या खरेदीची सूची पुनर्प्राप्त करते. जेव्हा वापरकर्ता नवीन डिव्हाइसवर लॉग इन करतो तेव्हा प्रीमियम वैशिष्ट्यांमध्ये प्रवेश पुनर्संचयित करण्यासाठी हे आवश्यक आहे.
- `consume(purchaseToken)`: एकदा वापरता येण्याजोगे उत्पादन वापरले गेले म्हणून चिन्हांकित करते. वापरल्यानंतर, वापरकर्ता ती वस्तू पुन्हा खरेदी करू शकतो. गेममधील चलनासारख्या वस्तूंसाठी हे महत्त्वाचे आहे.
- `acknowledge(purchaseToken)`: नॉन-कन्झ्युमेबल किंवा सबस्क्रिप्शन खरेदी यशस्वीरित्या प्रक्रिया केली गेली आहे आणि वापरकर्त्याला दिली गेली आहे याची पुष्टी करते. जर खरेदीची विशिष्ट वेळेत (उदा. गूगल प्लेवर तीन दिवस) पोचपावती दिली नाही, तर प्लॅटफॉर्म वापरकर्त्याला आपोआप परतावा देऊ शकतो.
हे पारंपरिक वेब पेमेंटपेक्षा वेगळे कसे आहे
डिजिटल गुड्स API ला इतर वेब पेमेंट तंत्रज्ञानापासून वेगळे ओळखणे महत्त्वाचे आहे:
- vs. पेमेंट रिक्वेस्ट API: पेमेंट रिक्वेस्ट API भौतिक वस्तू आणि सेवांसह विस्तृत व्यवहारांसाठी डिझाइन केलेले आहे. ते चेकआउट *प्रवाह* प्रमाणित करते परंतु प्रत्यक्ष पेमेंट हाताळण्यासाठी आपल्याला अजूनही स्ट्राइप किंवा एडियन सारख्या पेमेंट प्रोसेसरला समाकलित करण्याची आवश्यकता असते. याउलट, डिजिटल गुड्स API विशेषतः *डिजिटल वस्तूंसाठी* आहे आणि थेट अॅप स्टोअरच्या *बिलिंग सिस्टम* शी समाकलित होते. खरं तर, डिजिटल गुड्स API अनेकदा एका विशिष्ट SKU साठी खरेदी प्रवाह सुरू करण्यासाठी पेमेंट रिक्वेस्ट API चा वापर पडद्याआड करते.
- vs. थर्ड-पार्टी SDKs (स्ट्राइप, पेपाल, इ.): या सेवा वेबवर थेट-ग्राहक पेमेंटसाठी उत्कृष्ट आहेत. तथापि, त्यांना वापरकर्त्यांना पेमेंट तपशील प्रविष्ट करण्याची (किंवा वेगळ्या खात्यात लॉग इन करण्याची) आवश्यकता असते आणि त्या प्लॅटफॉर्मच्या अॅप स्टोअरपासून स्वतंत्रपणे कार्य करतात. डिजिटल गुड्स API वापरकर्त्याच्या स्टोअरशी असलेल्या पूर्व-अस्तित्वातील बिलिंग संबंधाचा फायदा घेते, ज्यामुळे अधिक एकात्मिक, 'नेटिव्ह-सारखा' अनुभव तयार होतो.
धडा २: अंमलबजावणीचा प्रवास: एक टप्प्याटप्प्याने मार्गदर्शक
चला, PWA मध्ये डिजिटल गुड्स API समाकलित करण्याच्या व्यावहारिक टप्प्यांमधून जाऊया. हे मार्गदर्शक असे गृहीत धरते की आपल्याकडे एक मूलभूत PWA संरचना तयार आहे.
पूर्वतयारी आणि सेटअप
- एक कार्यरत PWA: आपले वेब अॅप स्थापित करण्यायोग्य असले पाहिजे आणि PWA निकष पूर्ण केले पाहिजे, ज्यात सर्व्हिस वर्कर आणि वेब अॅप मॅनिफेस्ट असणे समाविष्ट आहे.
- ट्रस्टेड वेब ॲक्टिव्हिटी (TWA): गूगल प्ले सारख्या स्टोअरवर आपले PWA प्रकाशित करण्यासाठी, आपल्याला ते ट्रस्टेड वेब ॲक्टिव्हिटीमध्ये रॅप करावे लागेल. यामध्ये आपल्या डोमेनची मालकी सिद्ध करण्यासाठी डिजिटल अॅसेट लिंक्स फाइल सेट करणे समाविष्ट आहे.
- स्टोअर खाते आणि उत्पादन कॉन्फिगरेशन: आपल्याकडे लक्ष्य स्टोअरसाठी (उदा. गूगल प्ले कन्सोल) डेव्हलपर खाते असणे आवश्यक आहे आणि आपली डिजिटल उत्पादने (SKUs), त्यांच्या आयडी, प्रकार (कन्झ्युमेबल, नॉन-कन्झ्युमेबल, सबस्क्रिप्शन), किमती आणि वर्णनांसह कॉन्फिगर करणे आवश्यक आहे.
पायरी १: फीचर डिटेक्शन
सर्व ब्राउझर किंवा प्लॅटफॉर्म डिजिटल गुड्स API ला सपोर्ट करत नाहीत. ते वापरण्याचा प्रयत्न करण्यापूर्वी त्याची उपलब्धता तपासणे हे आपले पहिले पाऊल असले पाहिजे. हे सुनिश्चित करते की आपले अॅप्लिकेशन असमर्थित वातावरणात एक चांगला फॉलबॅक प्रदान करते.
if ('getDigitalGoodsService' in window) {
// The Digital Goods API is available!
console.log('Digital Goods API supported.');
// Proceed with initialization.
} else {
// The API is not available.
console.log('Digital Goods API not supported.');
// Hide IAP purchase buttons or show an alternative message.
}
पायरी २: सर्व्हिसशी कनेक्ट करणे
एकदा आपण सपोर्टची पुष्टी केल्यानंतर, आपल्याला `DigitalGoodsService` चा संदर्भ मिळवणे आवश्यक आहे. हे पेमेंट प्रदात्याच्या आयडेंटिफायरसह `window.getDigitalGoodsService()` कॉल करून केले जाते. गूगल प्ले बिलिंगसाठी, आयडेंटिफायर `"https://play.google.com/billing"` आहे.
async function initializeDigitalGoods() {
if (!('getDigitalGoodsService' in window)) {
return null;
}
try {
const service = await window.getDigitalGoodsService("https://play.google.com/billing");
if (service === null) {
console.log('No payment provider available.');
return null;
}
return service;
} catch (error) {
console.error('Error connecting to Digital Goods Service:', error);
return null;
}
}
// Usage:
const digitalGoodsService = await initializeDigitalGoods();
पायरी ३: उत्पादनाचे तपशील मिळवणे
खरेदीचे बटण दाखवण्यापूर्वी, आपल्याला उत्पादनाचे तपशील, विशेषतः त्याची स्थानिक किंमत प्रदर्शित करणे आवश्यक आहे. किमती हार्डकोड करणे ही एक वाईट प्रथा आहे, कारण त्यात विविध चलने, प्रादेशिक किंमती किंवा विक्री करांचा विचार केला जात नाही. ही माहिती थेट पेमेंट प्रदात्याकडून मिळवण्यासाठी `getDetails()` पद्धत वापरा.
async function loadProductDetails(service, skus) {
if (!service) return;
try {
const details = await service.getDetails(skus); // skus is an array of strings, e.g., ['premium_upgrade', '100_coins']
if (details.length === 0) {
console.log('No products found for the given SKUs.');
return;
}
for (const product of details) {
console.log(`Product ID: ${product.itemId}`);
console.log(`Title: ${product.title}`);
console.log(`Price: ${product.price.value} ${product.price.currency}`);
// Now, update your UI with this information
const button = document.getElementById(`purchase-${product.itemId}`);
button.querySelector('.price').textContent = `${product.price.value} ${product.price.currency}`;
}
} catch (error) {
console.error('Failed to fetch product details:', error);
}
}
// Usage:
const mySkus = ['remove_ads', 'pro_subscription_monthly'];
await loadProductDetails(digitalGoodsService, mySkus);
पायरी ४: खरेदी सुरू करणे
खरेदी प्रक्रिया प्रमाणित पेमेंट रिक्वेस्ट API वापरून सुरू केली जाते. मुख्य फरक हा आहे की पारंपारिक पेमेंट पद्धती प्रदान करण्याऐवजी, आपण विकू इच्छित असलेल्या डिजिटल वस्तूचा SKU पास करता.
async function purchaseProduct(sku) {
try {
// Define the payment method with the SKU
const paymentMethod = [{
supportedMethods: "https://play.google.com/billing",
data: {
sku: sku,
}
}];
// Standard Payment Request API details
const paymentDetails = {
total: {
label: `Total`,
amount: { currency: 'USD', value: '0' } // The price is determined by the SKU, this can be a placeholder
}
};
// Create and show the payment request
const request = new PaymentRequest(paymentMethod, paymentDetails);
const paymentResponse = await request.show();
// The purchase was successful on the client-side
const { purchaseToken } = paymentResponse.details;
console.log(`Purchase successful! Token: ${purchaseToken}`);
// IMPORTANT: Now, verify this token on your backend
await verifyPurchaseOnBackend(purchaseToken);
// After backend verification, call consume() or acknowledge() if needed
await paymentResponse.complete('success');
} catch (error) {
console.error('Purchase failed:', error);
if (paymentResponse) {
await paymentResponse.complete('fail');
}
}
}
// Usage when a user clicks a button:
document.getElementById('purchase-pro_subscription_monthly').addEventListener('click', () => {
purchaseProduct('pro_subscription_monthly');
});
पायरी ५: खरेदीचे व्यवस्थापन (व्यवहारानंतर)
क्लायंट-साइडवरील यशस्वी व्यवहार ही केवळ अर्धी कहाणी आहे. आता आपल्याला हक्क प्रदान करण्यासाठी आणि व्यवहार योग्यरित्या नोंदवला गेला आहे याची खात्री करण्यासाठी खरेदीचे व्यवस्थापन करणे आवश्यक आहे.
खरेदी पुनर्संचयित करणे: वापरकर्ते अपेक्षा करतात की त्यांच्या खरेदी त्यांच्या सर्व डिव्हाइसवर उपलब्ध असतील. जेव्हा एखादा वापरकर्ता आपले अॅप उघडतो, तेव्हा आपण विद्यमान हक्कांसाठी तपासणी केली पाहिजे.
async function restorePurchases(service) {
if (!service) return;
try {
const existingPurchases = await service.listPurchases();
for (const purchase of existingPurchases) {
console.log(`Restoring purchase for SKU: ${purchase.itemId}`);
// Verify each purchase token on your backend to prevent fraud
// and grant the user the corresponding feature.
await verifyPurchaseOnBackend(purchase.purchaseToken);
}
} catch (error) {
console.error('Failed to restore purchases:', error);
}
}
// Call this on app load for a signed-in user
await restorePurchases(digitalGoodsService);
कन्झ्युम करणे आणि पोचपावती देणे: ही एक महत्त्वपूर्ण पायरी आहे जी पेमेंट प्रदात्याला सांगते की आपण व्यवहार प्रक्रिया पूर्ण केली आहे. असे करण्यात अयशस्वी झाल्यास स्वयंचलित परतावा (refunds) होऊ शकतो.
- `consume()`: एकदाच वापरल्या जाणाऱ्या आणि पुन्हा खरेदी करता येणाऱ्या उत्पादनांसाठी वापरा. एकदा वापरल्यावर, ती वस्तू `listPurchases()` च्या परिणामामधून काढून टाकली जाते आणि वापरकर्ता ती पुन्हा खरेदी करू शकतो.
- `acknowledge()`: नॉन-कन्झ्युमेबल्स आणि नवीन सबस्क्रिप्शन्ससाठी वापरा. हे आपण वस्तू वितरित केली आहे याची पुष्टी करते. ही प्रत्येक खरेदी टोकनसाठी एकदाच केली जाणारी क्रिया आहे.
// This should be called AFTER successful backend verification
async function handlePostPurchase(service, purchaseToken, isConsumable) {
if (!service) return;
try {
if (isConsumable) {
await service.consume(purchaseToken);
console.log('Purchase consumed successfully.');
} else {
await service.acknowledge(purchaseToken, 'developer_payload_string_optional');
console.log('Purchase acknowledged successfully.');
}
} catch (error) {
console.error('Error handling post-purchase action:', error);
}
}
धडा ३: बॅकएंड इंटिग्रेशन आणि सुरक्षा सर्वोत्तम पद्धती
खरेदीच्या प्रमाणीकरणासाठी केवळ क्लायंट-साइड कोडवर अवलंबून राहणे हा एक मोठा सुरक्षेचा धोका आहे. एक दुर्भावनापूर्ण वापरकर्ता पैसे न देता स्वतःला प्रीमियम वैशिष्ट्ये देण्यासाठी जावास्क्रिप्टमध्ये सहज फेरफार करू शकतो. आपला बॅकएंड सर्व्हर वापरकर्त्याच्या हक्कांसाठी सत्याचा एकमेव स्रोत असणे आवश्यक आहे.
बॅकएंड व्हेरिफिकेशन का अनिवार्य आहे
- फसवणूक प्रतिबंध: हे पुष्टी करते की क्लायंटकडून प्राप्त झालेले खरेदी टोकन कायदेशीर आहे आणि वास्तविक व्यवहारासाठी प्रत्यक्ष पेमेंट प्रदात्याद्वारे तयार केले गेले आहे.
- विश्वसनीय हक्क व्यवस्थापन: आपला सर्व्हर, क्लायंट नव्हे, वापरकर्त्याला कोणती वैशिष्ट्ये उपलब्ध आहेत याचा मागोवा ठेवण्यासाठी जबाबदार असावा. हे फेरफार टाळते आणि सर्व डिव्हाइसवर सुसंगतता सुनिश्चित करते.
- परतावा आणि चार्जबॅक हाताळणे: पेमेंट प्रदाता APIs आपल्या बॅकएंडला परतावा सारख्या जीवनचक्रातील घटनांबद्दल माहिती देऊ शकतात, ज्यामुळे आपण संबंधित डिजिटल वस्तूचा प्रवेश रद्द करू शकता.
व्हेरिफिकेशन प्रक्रिया
खालील आकृती एक सुरक्षित व्हेरिफिकेशन प्रक्रिया दर्शवते:
क्लायंट अॅप → (१. खरेदी टोकन पाठवते) → आपला बॅकएंड सर्व्हर → (२. टोकन सत्यापित करतो) → पेमेंट प्रदाता API (उदा. गूगल प्ले डेव्हलपर API) → (३. प्रमाणीकरण निकाल परत करतो) → आपला बॅकएंड सर्व्हर → (४. हक्क देतो आणि पुष्टी करतो) → क्लायंट अॅप
- क्लायंट-साइड अॅप खरेदी पूर्ण करते आणि एक `purchaseToken` प्राप्त करते.
- क्लायंट हे `purchaseToken` आपल्या सुरक्षित बॅकएंड सर्व्हरला पाठवते.
- आपला बॅकएंड सर्व्हर पेमेंट प्रदात्याच्या व्हेरिफिकेशन एंडपॉइंटवर (उदा. गूगल प्ले डेव्हलपर API चे `purchases.products.get` किंवा `purchases.subscriptions.get` एंडपॉइंट) टोकन पास करून सर्व्हर-टू-सर्व्हर API कॉल करतो.
- पेमेंट प्रदाता खरेदीच्या स्थितीसह प्रतिसाद देतो (उदा. खरेदी केले, प्रलंबित, रद्द केले).
- जर खरेदी वैध असेल, तर आपला बॅकएंड हक्क देण्यासाठी आपल्या डेटाबेसमध्ये वापरकर्त्याचे खाते अद्यतनित करतो (उदा. `user.isPremium = true` सेट करतो).
- आपला बॅकएंड क्लायंटला यशस्वी संदेशासह प्रतिसाद देतो. फक्त आताच क्लायंटने `consume()` किंवा `acknowledge()` कॉल करून UI अद्यतनित करावे.
सबस्क्रिप्शन्स आणि रिअल-टाइम नोटिफिकेशन्स हाताळणे
सबस्क्रिप्शन्सचे जीवनचक्र गुंतागुंतीचे असते (नूतनीकरण, रद्द करणे, वाढीव मुदत, थांबवणे). `listPurchases()` पोलिंगवर अवलंबून राहणे अकार्यक्षम आहे. सर्वोत्तम सराव म्हणजे रिअल-टाइम डेव्हलपर नोटिफिकेशन्स (RTDN) किंवा वेबहुक वापरणे.
आपण आपल्या बॅकएंड सर्व्हरवर एक एंडपॉइंट कॉन्फिगर करता ज्यावर सबस्क्रिप्शनची स्थिती बदलल्यास पेमेंट प्रदाता कॉल करेल. हे आपल्याला हक्कांचे सक्रियपणे व्यवस्थापन करण्यास अनुमती देते, जसे की सबस्क्रिप्शन रद्द झाल्यावर प्रवेश रद्द करणे किंवा नूतनीकरणाच्या प्रयत्नादरम्यान पेमेंट अयशस्वी झाल्यास ते हाताळणे.
धडा ४: प्रगत विषय आणि जागतिक विचार
एकाधिक पेमेंट प्रदात्यांना सपोर्ट करणे
जरी गूगल प्ले स्टोअर एक प्रमुख प्रदाता असला तरी, डिजिटल गुड्स API हे एक मानक आहे जे मायक्रोसॉफ्ट स्टोअरसारख्या इतरांसोबत काम करण्यासाठी डिझाइन केलेले आहे. खऱ्या अर्थाने जागतिक PWA तयार करण्यासाठी, आपण आपला कोड प्रदाता-अज्ञेयवादी (provider-agnostic) डिझाइन केला पाहिजे.
// A conceptual approach to support multiple stores
const SUPPORTED_PROVIDERS = [
'https://play.google.com/billing',
'https://apps.microsoft.com/store/billing'
];
async function getFirstSupportedService() {
if (!('getDigitalGoodsService' in window)) return null;
for (const providerId of SUPPORTED_PROVIDERS) {
try {
const service = await window.getDigitalGoodsService(providerId);
if (service) {
console.log(`Connected to: ${providerId}`);
return service; // Return the first one that connects
}
} catch (error) {
// Ignore errors for providers that are not available
console.log(`Could not connect to ${providerId}`);
}
}
return null;
}
स्थानिकीकरण आणि आंतरराष्ट्रीयीकरण
डिजिटल गुड्स API ची एक प्रमुख शक्ती म्हणजे स्थानिकीकरणासाठी त्याचा अंगभूत सपोर्ट. `getDetails()` पद्धत वापरकर्त्याच्या स्थानिक चलन आणि भाषेत उत्पादनाची शीर्षके, वर्णने आणि किमती स्वयंचलितपणे परत करते, जसे आपण स्टोअरच्या कन्सोलमध्ये कॉन्फिगर केले आहे. आपल्या UI मध्ये किमती प्रदर्शित करण्यासाठी नेहमी API द्वारे परत केलेला प्राइस ऑब्जेक्ट वापरा. त्यांना कधीही हार्डकोड करू नका किंवा प्रदर्शनाच्या उद्देशाने स्वतः चलन रूपांतरण करू नका.
वापरकर्ता अनुभव (UX) सर्वोत्तम पद्धती
- पारदर्शकता: पूर्ण किंमत आणि सबस्क्रिप्शनसाठी, बिलिंगची वारंवारता (`/महिना`, `/वर्ष`) स्पष्टपणे प्रदर्शित करा.
- साधेपणा: खरेदीची बटणे ठळक बनवा आणि प्रक्रिया शक्य तितकी सोपी ठेवा. API पेमेंट शीटचे अवघड काम हाताळते.
- खरेदी पुनर्संचयित करणे: आपल्या अॅपच्या सेटिंग्जमध्ये सहज उपलब्ध असलेले "Restore Purchases" बटण प्रदान करा. यामुळे वापरकर्त्यांना विश्वास मिळतो की ते त्यांची खरेदी गमावणार नाहीत.
- अभिप्राय: प्रत्येक टप्प्यावर वापरकर्त्याला स्पष्ट अभिप्राय द्या: जेव्हा खरेदी प्रगतीपथावर असेल, जेव्हा ती यशस्वी होईल आणि विशेषतः जेव्हा ती अयशस्वी होईल.
निष्कर्ष: वेब कमाईचे भविष्य
डिजिटल गुड्स API नेटिव्ह अॅप्स आणि प्रोग्रेसिव्ह वेब अॅप्स यांच्यातील समान संधी निर्माण करण्याच्या दिशेने एक महत्त्वपूर्ण पाऊल दर्शवते. अॅप-मधील खरेदीसाठी एक प्रमाणित, सुरक्षित आणि वापरकर्ता-अनुकूल यंत्रणा प्रदान करून, ते वेब डेव्हलपर्सना थेट खुल्या वेबवर टिकाऊ व्यवसाय मॉडेल तयार करण्यास सक्षम करते.
हे API स्वीकारून आणि मजबूत बॅकएंड व्हेरिफिकेशनसह सुरक्षा सर्वोत्तम पद्धतींचे पालन करून, आपण अखंड कमाईचे अनुभव तयार करू शकता जे वापरकर्त्यांना आनंद देतात आणि महसूल वाढवतात. जसजसा PWA चा अवलंब वाढत जाईल आणि अधिक डिजिटल स्टोअरफ्रंट्स या मानकाला सपोर्ट करतील, तसतसे डिजिटल गुड्स API प्रत्येक आधुनिक वेब डेव्हलपरच्या टूलकिटमध्ये एक आवश्यक साधन बनेल, जे जागतिक प्रेक्षकांसाठी वेब प्लॅटफॉर्मची व्यावसायिक क्षमता खऱ्या अर्थाने अनलॉक करेल.