WebView में चल रही वेबसाइटों से, Android के पेमेंट ऐप्लिकेशन लॉन्च करने के लिए, पेमेंट रिक्वेस्ट एपीआई का इस्तेमाल किया जा सकता है. यह सुविधा, Chrome में पहले से मौजूद उसी JavaScript API का इस्तेमाल करके काम करती है.
यह सुविधा, वेबव्यू के 136 वर्शन से उपलब्ध है. आम तौर पर, यह सुविधा Chrome के 136 वर्शन के साथ शिप होती है.
वेबव्यू होस्ट ऐप्लिकेशन में पेमेंट का अनुरोध सेट अप करना
वेबव्यू से Android के पेमेंट ऐप्लिकेशन लॉन्च करने के लिए, पेमेंट रिक्वेस्ट एपीआई, Android इंटेंट का इस्तेमाल करके सिस्टम से क्वेरी करता है.
इस सुविधा का इस्तेमाल करने के लिए, वेबव्यू होस्ट ऐप्लिकेशन को अपनी AndroidManifest.xml
फ़ाइल में उन इंटेंट का एलान करना होगा.
वेबव्यू में, पेमेंट का अनुरोध करने की सुविधा डिफ़ॉल्ट रूप से बंद रहती है.
AndroidX WebKit के 1.14.0
या उसके बाद के वर्शन में WebSettingsCompat
का इस्तेमाल करके, इसे चालू करने के लिए यह तरीका अपनाएं:
पहला चरण: AndroidX WebKit डिपेंडेंसी जोड़ना
Kotlin (build.gradle.kts)
dependencies {
implementation("androidx.webkit:webkit:1.14.0")
}
Groovy (build.gradle)
dependencies {
implementation 'androidx.webkit:webkit:1.14.0'
}
वर्शन कैटलॉग
[versions]
webkit = "1.14.0"
[libraries]
androidx-ktx = { group = "androidx.webkit", name = "webkit", version.ref = "webkit" }
दूसरा चरण: ज़रूरी क्लास इंपोर्ट करना
इन क्लास की मदद से, वेबव्यू की सेटिंग को ऐक्सेस और कॉन्फ़िगर किया जा सकता है. साथ ही, रनटाइम के दौरान सुविधा के काम करने की जांच की जा सकती है.
import android.webkit.WebSettings;
import android.webkit.WebView;
import androidx.webkit.WebSettingsCompat;
import androidx.webkit.WebViewFeature;
तीसरा चरण: वेबव्यू कोड में पेमेंट का अनुरोध करने की सुविधा चालू करना
यह चरण, आपके वेबव्यू में पेमेंट का अनुरोध करने की सुविधा चालू करता है. साथ ही, यह पक्का करता है कि साइट, JavaScript का इस्तेमाल करके इसे ट्रिगर कर सकती है.
यह चरण, आपके वेबव्यू में पेमेंट का अनुरोध करने की सुविधा चालू करता है. साथ ही, यह पक्का करता है कि साइट, JavaScript का इस्तेमाल करके इसे ट्रिगर कर सके.
Kotlin (Compose)
AndroidView(
factory = {
WebView(it).apply {
settings.javaScriptEnabled = true
if (WebViewFeature.isFeatureSupported(
WebViewFeature.PAYMENT_REQUEST)) {
WebSettingsCompat.setPaymentRequestEnabled(settings, true);
}
}
},
update = {it.loadUrl(url)
}
)
Java
WebView webView = findViewById(R.id.webview);
WebSettings webSettings = mWebView.getSettings();
webSettings.setJavascriptEnabled(true);
if (WebViewFeature.isFeatureSupported(
WebViewFeature.PAYMENT_REQUEST)) {
WebSettingsCompat.setPaymentRequestEnabled(webSettings, true);
}
चौथा चरण: AndroidManifest.xml में इंटेंट फ़िल्टर जोड़ना
इन फ़िल्टर की मदद से, वेबव्यू, सिस्टम इंटेंट का इस्तेमाल करके Android के पेमेंट ऐप्लिकेशन ढूंढ सकता है और उन्हें चालू कर सकता है:
<queries>
<intent>
<action android:name="org.chromium.intent.action.PAY"/>
</intent>
<intent>
<action android:name="org.chromium.intent.action.IS_READY_TO_PAY"/>
</intent>
<intent>
<action android:name="org.chromium.intent.action.UPDATE_PAYMENT_DETAILS"/>
</intent>
</queries>
पेमेंट के अनुरोध की मुख्य सुविधाओं का इस्तेमाल करने के लिए, अपने AndroidManifest.xml
में इन इंटेंट का इस्तेमाल करें:
org.chromium.intent.action.PAY
: इससे वेबव्यू, Android के पेमेंट ऐप्लिकेशन को कॉल कर सकता है और पेमेंट के जवाब पा सकता है. ज़्यादा जानकारी के लिए, Android पर पेमेंट ऐप्लिकेशन बनाने वाले डेवलपर के लिए बनी गाइड पढ़ें.org.chromium.intent.action.IS_READY_TO_PAY
: इससे वेबसाइटों को यह पता करने की अनुमति मिलती है कि उपयोगकर्ता ने पेमेंट का कोई ऐसा तरीका सेट अप किया है या नहीं जो वेबसाइट पर काम करता है. ज़्यादा जानकारी के लिए, Android पर पेमेंट ऐप्लिकेशन बनाने वाले डेवलपर के लिए बनी गाइड पढ़ेंorg.chromium.intent.action.UPDATE_PAYMENT_DETAILS
: डाइनैमिक अपडेट के साथ काम करता है. जैसे, जब उपयोगकर्ता पेमेंट ऐप्लिकेशन में शिपिंग का पता या विकल्प बदलता है. ज़्यादा जानने के लिए, Android के पेमेंट ऐप्लिकेशन से शिपिंग और संपर्क जानकारी देना लेख पढ़ें.
पांचवां चरण: अपना ऐप्लिकेशन फिर से बनाना और पब्लिश करना
ये बदलाव करने के बाद, अपना ऐप्लिकेशन फिर से बनाएं और Play Store पर अपडेट किया गया वर्शन रिलीज़ करें.
ज़रूरी नहीं: तैयारी की जांच को पसंद के मुताबिक बनाना
Android पर पेमेंट ऐप्लिकेशन लॉन्च करने के अलावा, पेमेंट रिक्वेस्ट एपीआई की मदद से वेबसाइटें यह पता लगा सकती हैं कि उपयोगकर्ता पेमेंट करने के लिए तैयार है या नहीं. उदाहरण के लिए, वेबसाइटें यह पता लगा सकती हैं कि उपयोगकर्ता ने, इस्तेमाल किए जा सकने वाले पेमेंट का कोई तरीका सेट अप किया है या नहीं.
Chrome में एक सेटिंग होती है, जिसकी मदद से उपयोगकर्ता इस जांच को चालू या बंद कर सकते हैं. वेबव्यू होस्ट ऐप्लिकेशन, मिलता-जुलता टॉगल इनका इस्तेमाल करके दे सकते हैं:
WebSettingsCompat.setHasEnrolledInstrumentEnabled(WebSettings, boolean)
यह सेटिंग डिफ़ॉल्ट रूप से चालू होती है (true
). चालू होने पर, यह वेबव्यू में चल रही वेबसाइटों को यह पता लगाने की अनुमति देती है कि उपयोगकर्ता के पास रजिस्टर किया गया पेमेंट इंस्ट्रूमेंट है या नहीं.
JavaScript में पेमेंट का अनुरोध करने की सुविधा उपलब्ध है या नहीं, यह देखना
Java या Kotlin में WebSettingsCompat.setPaymentRequestEnabled(webSettings, true)
को कॉल करने के बाद, window.PaymentRequest
इंटरफ़ेस JavaScript में उपलब्ध हो जाता है. इसका इस्तेमाल, वेबपेज पर सुविधाओं का पता लगाने के लिए किया जा सकता है:
if (window.PaymentRequest) {
// Payment Request is available.
} else {
// Payment Request is not available.
}
window.PaymentRequest
उपलब्ध होने पर, वेबपेज पेमेंट लेन-देन शुरू करना जारी रख सकता है.
Android के पेमेंट ऐप्लिकेशन को पेमेंट के अनुरोध के साथ इंटिग्रेट करना
पेमेंट का अनुरोध करने की सुविधा के साथ काम करने के लिए, Android के पेमेंट ऐप्लिकेशन को सिस्टम के खास इंटेंट का जवाब देना होगा और पेमेंट डेटा को सुरक्षित तरीके से मैनेज करना होगा. इन गाइड में, पेमेंट के तरीकों को रजिस्टर करने, पेमेंट की सेवा लागू करने, और अपने ऐप्लिकेशन को सुरक्षित रखने का तरीका बताया गया है:
- Android पर पेमेंट ऐप्लिकेशन बनाने वाले डेवलपर के लिए गाइड: अपना पेमेंट ऐप्लिकेशन बनाएं और कॉन्फ़िगर करें. इसमें, इंटेंट मैनेज करने और कॉल करने वाले ऐप्लिकेशन की पुष्टि करने का तरीका भी शामिल है.
- पेमेंट का तरीका सेट अप करना: पेमेंट का तरीका रजिस्टर करें और उसकी सुविधाओं के बारे में बताएं.
अपने ऐप्लिकेशन को गलत इस्तेमाल से सुरक्षित करना
कोई भी ऐप्लिकेशन, Android के पेमेंट इंटेंट org.chromium.intent.action.PAY
,
IS_READY_TO_PAY
, और UPDATE_PAYMENT_DETAILS
को कॉल कर सकता है. वेबव्यू होस्ट ऐप्लिकेशन, पेमेंट के अनुरोध के कॉल को देख सकते हैं, शुरू कर सकते हैं, और उन्हें इंटरसेप्ट कर सकते हैं. वेबव्यू, होस्ट ऐप्लिकेशन की प्रोसेस में चलता है. इसलिए, यह इन इंटेंट के इस्तेमाल पर पाबंदी नहीं लगा सकता.
नुकसान पहुंचाने वाले ऐप्लिकेशन इसका फ़ायदा उठाकर, ऑरेकल अटैक लॉन्च कर सकते हैं.
ऑरेकल अटैक में, पेमेंट ऐप्लिकेशन अनजाने में ऐसी जानकारी ज़ाहिर कर देता है जिसे ज़ाहिर नहीं करना चाहिए. उदाहरण के लिए, कोई हमलावर IS_READY_TO_PAY
का इस्तेमाल करके यह पता लगा सकता है कि उपयोगकर्ता के पास कौनसे पेमेंट इंस्ट्रूमेंट उपलब्ध हैं.
इस तरह के गलत इस्तेमाल से बचने के लिए, आपको अपने पेमेंट ऐप्लिकेशन में सुरक्षा की सुविधाएं जोड़नी होंगी.
गलत इस्तेमाल को कम करने के लिए, इन रणनीतियों का इस्तेमाल करें:
- अनुरोधों को कम करना: यह तय करें कि आपका ऐप्लिकेशन,
IS_READY_TO_PAY
के अनुरोधों का जवाब कितनी बार दे. उदाहरण के लिए, हर 30 मिनट में सिर्फ़ एक बार जवाब दें. - एन्क्रिप्शन का इस्तेमाल करना: संवेदनशील रिस्पॉन्स एन्क्रिप्ट करें, ताकि सिर्फ़ आपके भरोसेमंद व्यापारी/कंपनी/कारोबारी के सर्वर उन्हें डिक्रिप्ट कर सकें. एन्क्रिप्शन और डिक्रिप्शन की प्रोसेस हमेशा सर्वर साइड पर करें.
- ऐक्सेस पर पाबंदी लगाएं: भरोसेमंद वेबव्यू होस्ट ऐप्लिकेशन की अनुमति वाली सूची बनाए रखें. इसके लिए, उनके पैकेज के नाम और SHA256 साइनिंग सर्टिफ़िकेट का इस्तेमाल करें. ज़्यादा जानकारी के लिए, Android पर पेमेंट ऐप्लिकेशन बनाने वाले डेवलपर के लिए बनी गाइड पढ़ें.