আপনি WebView- এর ভিতরে চলমান ওয়েবসাইট থেকে অ্যান্ড্রয়েড পেমেন্ট অ্যাপ চালু করতে পেমেন্ট রিকোয়েস্ট এপিআই (Payment Request API) ব্যবহার করতে পারেন। এটি ক্রোমে আগে থেকেই উপলব্ধ একই জাভাস্ক্রিপ্ট এপিআই (JavaScript API) ব্যবহার করে কাজ করে।
এই ফিচারটি WebView ভার্সন 136 থেকে পাওয়া যাচ্ছে, যা সাধারণত Chrome 136-এর সাথেই আসে।
WebView হোস্ট অ্যাপে পেমেন্ট অনুরোধ সেট আপ করুন
WebView থেকে অ্যান্ড্রয়েড পেমেন্ট অ্যাপ চালু করতে, পেমেন্ট রিকোয়েস্ট এপিআই (Payment Request API) অ্যান্ড্রয়েড ইন্টেন্ট ব্যবহার করে সিস্টেমকে কোয়েরি করে। এটি সমর্থন করার জন্য, WebView হোস্ট অ্যাপটিকে তার AndroidManifest.xml ফাইলে সেই ইন্টেন্টগুলো ঘোষণা করতে হবে।
ডিফল্টরূপে, WebView-তে পেমেন্ট রিকোয়েস্ট নিষ্ক্রিয় থাকে।
Jetpack Webkit সংস্করণ 1.14.0 বা তার উচ্চতর সংস্করণ থেকে WebSettingsCompat ব্যবহার করে এটি সক্রিয় করতে এই ধাপগুলি অনুসরণ করুন:
ধাপ ১: Jetpack Webkit ডিপেন্ডেন্সি যোগ করুন
কোটলিন (build.gradle.kts)
dependencies {
implementation("androidx.webkit:webkit:1.14.0")
}
গ্রুভি (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;
ধাপ ৩: WebView কোডে পেমেন্ট রিকোয়েস্ট সক্রিয় করুন
এই ধাপটি আপনার WebView-তে পেমেন্ট রিকোয়েস্ট ফিচারটি চালু করে এবং নিশ্চিত করে যে সাইটটি জাভাস্ক্রিপ্ট ব্যবহার করে এটি ট্রিগার করতে পারে।
এই ধাপটি আপনার WebView-তে পেমেন্ট রিকোয়েস্ট ফিচারটি চালু করে এবং নিশ্চিত করে যে সাইটটি জাভাস্ক্রিপ্ট ব্যবহার করে এটি ট্রিগার করতে পারে।
কোটলিন (কম্পোজ)
AndroidView(
factory = {
WebView(it).apply {
settings.javaScriptEnabled = true
if (WebViewFeature.isFeatureSupported(
WebViewFeature.PAYMENT_REQUEST)) {
WebSettingsCompat.setPaymentRequestEnabled(settings, true);
}
}
},
update = {it.loadUrl(url)
}
)
জাভা
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-এ ইন্টেন্ট ফিল্টার যোগ করুন।
এই ফিল্টারগুলো WebView-কে সিস্টেম ইনটেন্ট ব্যবহার করে অ্যান্ড্রয়েড পেমেন্ট অ্যাপ খুঁজে বের করতে এবং চালু করতে সাহায্য করে:
<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: এটি WebView-কে অ্যান্ড্রয়েড পেমেন্ট অ্যাপ চালু করতে এবং পেমেন্টের প্রতিক্রিয়া গ্রহণ করতে দেয়। অ্যান্ড্রয়েড পেমেন্ট অ্যাপস ডেভেলপার গাইডে এ বিষয়ে আরও জানুন। -
org.chromium.intent.action.IS_READY_TO_PAY: ওয়েবসাইটগুলিকে ব্যবহারকারীর কোনো সমর্থিত পেমেন্ট পদ্ধতি সেট আপ করা আছে কিনা তা পরীক্ষা করার অনুমতি দেয়। অ্যান্ড্রয়েড পেমেন্ট অ্যাপ ডেভেলপার গাইডে আরও জানুন। -
org.chromium.intent.action.UPDATE_PAYMENT_DETAILS: ডাইনামিক আপডেট সমর্থন করে, যেমন যখন ব্যবহারকারী পেমেন্ট অ্যাপে তাদের শিপিং ঠিকানা বা অপশন পরিবর্তন করেন। একটি অ্যান্ড্রয়েড পেমেন্ট অ্যাপ থেকে শিপিং এবং যোগাযোগের তথ্য প্রদান- এ এ সম্পর্কে আরও জানুন।
ধাপ ৫: আপনার অ্যাপটি পুনর্নির্মাণ ও প্রকাশ করুন।
এই পরিবর্তনগুলো করার পর, আপনার অ্যাপটি পুনরায় তৈরি করুন এবং প্লে স্টোরে একটি আপডেট করা সংস্করণ প্রকাশ করুন।
ঐচ্ছিক: প্রস্তুতি যাচাই কাস্টমাইজ করুন
অ্যান্ড্রয়েড পেমেন্ট অ্যাপ চালু করার পাশাপাশি, পেমেন্ট রিকোয়েস্ট এপিআই ওয়েবসাইটগুলোকে ব্যবহারকারী অর্থ প্রদানের জন্য প্রস্তুত কিনা তা যাচাই করতে দেয়। উদাহরণস্বরূপ, ওয়েবসাইটগুলো শনাক্ত করতে পারে যে ব্যবহারকারীর কোনো সমর্থিত পেমেন্ট পদ্ধতি সেট আপ করা আছে কিনা।
ক্রোমে একটি সেটিং রয়েছে যা ব্যবহারকারীদের এই চেকটি চালু বা বন্ধ করার সুযোগ দেয়। WebView হোস্ট অ্যাপগুলো নিম্নলিখিত উপায়ে একটি অনুরূপ টগল প্রদান করতে পারে:
WebSettingsCompat.setHasEnrolledInstrumentEnabled(WebSettings, boolean)
এই সেটিংটি ডিফল্টরূপে সক্রিয় থাকে ( true )। সক্রিয় থাকলে, এটি WebView-তে চলমান ওয়েবসাইটগুলিকে ব্যবহারকারীর কোনো নিবন্ধিত পেমেন্ট ইন্সট্রুমেন্ট আছে কিনা তা শনাক্ত করতে সাহায্য করে।
জাভাস্ক্রিপ্টে পেমেন্ট অনুরোধ সমর্থনের জন্য পরীক্ষা করুন
জাভা বা কোটলিনে WebSettingsCompat.setPaymentRequestEnabled(webSettings, true) কল করার পর, জাভাস্ক্রিপ্টে window.PaymentRequest ইন্টারফেসটি উপলব্ধ হয়। এটি ওয়েবপেজের ফিচার ডিটেকশনের জন্য ব্যবহার করা যেতে পারে:
if (window.PaymentRequest) {
// Payment Request is available.
} else {
// Payment Request is not available.
}
যখন window.PaymentRequest উপলব্ধ থাকে, তখন ওয়েবপেজটি একটি পেমেন্ট লেনদেন শুরু করার জন্য অগ্রসর হতে পারে।
পেমেন্ট রিকোয়েস্টের সাথে অ্যান্ড্রয়েড পেমেন্ট অ্যাপগুলিকে একীভূত করুন।
পেমেন্ট রিকোয়েস্ট সমর্থন করার জন্য, অ্যান্ড্রয়েড পেমেন্ট অ্যাপগুলোকে অবশ্যই নির্দিষ্ট সিস্টেম ইন্টেন্টের প্রতি সাড়া দিতে হবে এবং পেমেন্টের ডেটা নিরাপদে পরিচালনা করতে হবে। এই নির্দেশিকাগুলোতে ব্যাখ্যা করা হয়েছে কীভাবে পেমেন্ট পদ্ধতি নিবন্ধন করতে হয়, আপনার পেমেন্ট পরিষেবা বাস্তবায়ন করতে হয় এবং আপনার অ্যাপকে সুরক্ষিত রাখতে হয়:
- অ্যান্ড্রয়েড পেমেন্ট অ্যাপ ডেভেলপার গাইড : আপনার পেমেন্ট অ্যাপ তৈরি ও কনফিগার করুন, যার মধ্যে ইন্টেন্ট পরিচালনা এবং কলিং অ্যাপ যাচাই করার পদ্ধতিও অন্তর্ভুক্ত রয়েছে।
- পেমেন্ট পদ্ধতি সেট আপ করুন : আপনার পেমেন্ট পদ্ধতি নিবন্ধন করুন এবং এর সক্ষমতা নির্ধারণ করুন।
আপনার অ্যাপকে অপব্যবহার থেকে সুরক্ষিত করুন
যেকোনো অ্যাপ org.chromium.intent.action.PAY , IS_READY_TO_PAY , এবং UPDATE_PAYMENT_DETAILS অ্যান্ড্রয়েড পেমেন্ট ইন্টেন্টগুলো কল করতে পারে। WebView হোস্ট অ্যাপগুলোও পেমেন্ট রিকোয়েস্ট কলগুলো পর্যবেক্ষণ, শুরু এবং ইন্টারসেপ্ট করতে পারে। যেহেতু WebView হোস্ট অ্যাপের প্রসেসের ভেতরে চলে, তাই এই ইন্টেন্টগুলো কীভাবে ব্যবহৃত হবে তা এটি নিয়ন্ত্রণ করতে পারে না। ক্ষতিকর অ্যাপগুলো এই সুযোগ কাজে লাগিয়ে ওরাকল অ্যাটাক চালাতে পারে।
ওরাকল অ্যাটাকে, একটি পেমেন্ট অ্যাপ অনিচ্ছাকৃতভাবে এমন তথ্য প্রকাশ করে ফেলে যা তার করা উচিত নয়। উদাহরণস্বরূপ, একজন আক্রমণকারী IS_READY_TO_PAY ব্যবহার করে জানতে পারে যে ব্যবহারকারীর কাছে কোন কোন পেমেন্ট পদ্ধতি উপলব্ধ আছে।
এই ধরনের অপব্যবহার রোধ করতে আপনাকে আপনার পেমেন্ট অ্যাপে সুরক্ষা ব্যবস্থা অন্তর্ভুক্ত করতে হবে।
অপব্যবহার কমাতে নিম্নলিখিত কৌশলগুলো ব্যবহার করুন:
- অনুরোধ সীমিত করুন : আপনার অ্যাপ কত ঘন ঘন
IS_READY_TO_PAYঅনুরোধে সাড়া দেবে তা সীমাবদ্ধ করুন। উদাহরণস্বরূপ, প্রতি ৩০ মিনিটে মাত্র একবার সাড়া দিন। - এনক্রিপশন ব্যবহার করুন : সংবেদনশীল প্রতিক্রিয়াগুলি এনক্রিপ্ট করুন যাতে কেবল আপনার বিশ্বস্ত মার্চেন্ট সার্ভারগুলিই সেগুলি ডিক্রিপ্ট করতে পারে। সর্বদা সার্ভার সাইডে এনক্রিপশন এবং ডিক্রিপশন সম্পাদন করুন।
- অ্যাক্সেস সীমাবদ্ধ করুন : বিশ্বস্ত WebView হোস্ট অ্যাপগুলির প্যাকেজ নাম এবং SHA256 সাইনিং সার্টিফিকেট ব্যবহার করে একটি অনুমতি তালিকা বজায় রাখুন। অ্যান্ড্রয়েড পেমেন্ট অ্যাপ ডেভেলপার গাইডে আরও জানুন।