পেমেন্ট রিকোয়েস্ট API ব্যবহার করে WebView-এ Android পেমেন্ট অ্যাপগুলিকে সমর্থন করুন

WebView- এর ভেতরে চলমান ওয়েবসাইটগুলি থেকে Android পেমেন্ট অ্যাপ চালু করতে আপনি Payment Request API ব্যবহার করতে পারেন। এটি Chrome-এ ইতিমধ্যেই উপলব্ধ একই JavaScript API ব্যবহার করে কাজ করে।

এই বৈশিষ্ট্যটি ওয়েবভিউ সংস্করণ ১৩৬ থেকে পাওয়া যাবে, যা সাধারণত Chrome ১৩৬ এর সাথে আসে।

WebView হোস্ট অ্যাপে পেমেন্ট রিকোয়েস্ট সেট আপ করুন

WebView থেকে Android পেমেন্ট অ্যাপ চালু করার জন্য, Payment Request API Android ইন্টেন্ট ব্যবহার করে সিস্টেমকে জিজ্ঞাসা করে। এটি সমর্থন করার জন্য, WebView হোস্ট অ্যাপটিকে তার AndroidManifest.xml ফাইলে সেই ইন্টেন্টগুলি ঘোষণা করতে হবে।

ডিফল্টরূপে, WebView-এ পেমেন্ট রিকোয়েস্ট অক্ষম থাকে।

Jetpack Webkit ভার্সন 1.14.0 বা তার বেশি থেকে WebSettingsCompat ব্যবহার করে এটি সক্ষম করতে এই পদক্ষেপগুলি অনুসরণ করুন:

ধাপ ১: জেটপ্যাক ওয়েবকিট নির্ভরতা যোগ করুন

কোটলিন (build.gradle.kts)

dependencies {
  implementation("androidx.webkit:webkit:1.14.0")
}

গ্রুভি (বিল্ড.গ্রেডল)

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-এ পেমেন্ট রিকোয়েস্ট বৈশিষ্ট্যটি চালু করে এবং নিশ্চিত করে যে সাইটটি জাভাস্ক্রিপ্ট ব্যবহার করে এটি ট্রিগার করতে পারে।

কোটলিন (রচনা)

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 এ নিম্নলিখিত উদ্দেশ্যগুলি ব্যবহার করুন:

ধাপ ৫: আপনার অ্যাপটি পুনর্নির্মাণ এবং প্রকাশ করুন

এই পরিবর্তনগুলি করার পরে, আপনার অ্যাপটি পুনর্নির্মাণ করুন এবং প্লে স্টোরে একটি আপডেট করা সংস্করণ প্রকাশ করুন।

ঐচ্ছিক: প্রস্তুতি পরীক্ষা কাস্টমাইজ করুন

অ্যান্ড্রয়েড পেমেন্ট অ্যাপ চালু করার পাশাপাশি, পেমেন্ট রিকোয়েস্ট এপিআই ওয়েবসাইটগুলিকে ব্যবহারকারী অর্থ প্রদানের জন্য প্রস্তুত কিনা তা পরীক্ষা করতে দেয়। উদাহরণস্বরূপ, ওয়েবসাইটগুলি সনাক্ত করতে পারে যে ব্যবহারকারীর একটি সমর্থিত পেমেন্ট পদ্ধতি সেট আপ করা আছে কিনা।

Chrome-এ একটি সেটিং রয়েছে যা ব্যবহারকারীদের এই চেকটি সক্ষম বা অক্ষম করতে দেয়। 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 হোস্ট অ্যাপের প্রক্রিয়ার ভিতরে চলে, তাই এটি এই ইন্টেন্টগুলি কীভাবে ব্যবহার করা হয় তা সীমাবদ্ধ করতে পারে না। ক্ষতিকারক অ্যাপগুলি oracle আক্রমণ শুরু করার জন্য এটিকে কাজে লাগাতে পারে।

একটি ওরাকল আক্রমণে, একটি পেমেন্ট অ্যাপ অনিচ্ছাকৃতভাবে এমন তথ্য প্রকাশ করে যা তার করা উচিত নয়। উদাহরণস্বরূপ, একজন আক্রমণকারী IS_READY_TO_PAY ব্যবহার করে ব্যবহারকারীর কাছে কোন পেমেন্ট যন্ত্রগুলি উপলব্ধ আছে তা আবিষ্কার করতে পারে।

এই ধরণের অপব্যবহার থেকে রক্ষা পেতে আপনার পেমেন্ট অ্যাপে সুরক্ষা তৈরি করতে হবে।

অপব্যবহার কমাতে নিম্নলিখিত কৌশলগুলি ব্যবহার করুন:

  • থ্রটল অনুরোধ : আপনার অ্যাপ IS_READY_TO_PAY তে কতবার সাড়া দেবে তা সীমিত করুন। উদাহরণস্বরূপ, প্রতি 30 মিনিটে একবার সাড়া দিন।
  • এনক্রিপশন ব্যবহার করুন : সংবেদনশীল প্রতিক্রিয়াগুলি এনক্রিপ্ট করুন যাতে কেবল আপনার বিশ্বস্ত মার্চেন্ট সার্ভারগুলি সেগুলি ডিক্রিপ্ট করতে পারে। সর্বদা সার্ভার সাইডে এনক্রিপশন এবং ডিক্রিপশন করুন।
  • অ্যাক্সেস সীমাবদ্ধ করুন : বিশ্বস্ত WebView হোস্ট অ্যাপগুলির প্যাকেজ নাম এবং SHA256 সাইনিং সার্টিফিকেট ব্যবহার করে তাদের একটি অনুমতি তালিকা বজায় রাখুন। অ্যান্ড্রয়েড পেমেন্ট অ্যাপ ডেভেলপারদের নির্দেশিকা থেকে আরও জানুন।