Вы можете использовать API запроса оплаты для запуска приложений Android-платежей с веб-сайтов, работающих внутри WebView . Это работает с использованием того же JavaScript API, который уже доступен в Chrome.
Эта функция доступна, начиная с версии WebView 136, которая обычно поставляется с Chrome 136.
Настройка запроса на оплату в хост-приложениях WebView
Для запуска приложений Android Payment из WebView API запроса платежа запрашивает систему, используя намерения Android. Для поддержки этого хост-приложение WebView должно объявить эти намерения в своем файле AndroidManifest.xml
.
По умолчанию запрос платежа в WebView отключен.
Чтобы включить его с помощью WebSettingsCompat
из AndroidX WebKit версии 1.14.0
или выше, выполните следующие действия:
Шаг 1: Добавьте зависимость AndroidX WebKit
Котлин (build.gradle.kts)
dependencies {
implementation("androidx.webkit:webkit:1.14.0")
}
Groovy (сборка.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" }
Шаг 2: Импорт необходимых классов
Эти классы позволяют вам получать доступ к параметрам WebView и настраивать их, а также проверять поддержку функций во время выполнения.
import android.webkit.WebSettings;
import android.webkit.WebView;
import androidx.webkit.WebSettingsCompat;
import androidx.webkit.WebViewFeature;
Шаг 3: Включите запрос платежа в коде WebView
Этот шаг включает функцию запроса платежа в вашем WebView и гарантирует, что сайт сможет активировать ее с помощью JavaScript.
Этот шаг включает функцию запроса платежа в вашем WebView и гарантирует, что сайт сможет активировать ее с помощью JavaScript.
Kotlin (Сочинение)
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);
}
Шаг 4: Добавьте фильтры намерений в AndroidManifest.xml
Эти фильтры позволяют WebView обнаруживать и вызывать платежные приложения 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
: Позволяет WebView вызывать платежные приложения Android и получать ответы на платежи. Узнайте больше в руководстве разработчика платежных приложений Android . -
org.chromium.intent.action.IS_READY_TO_PAY
: Позволяет веб-сайтам проверять, настроен ли у пользователя поддерживаемый способ оплаты. Узнайте больше в руководстве разработчиков платежных приложений Android -
org.chromium.intent.action.UPDATE_PAYMENT_DETAILS
: Поддерживает динамические обновления, например, когда пользователь меняет свой адрес доставки или опцию в платежном приложении. Узнайте больше в разделе Предоставление информации о доставке и контактах из платежного приложения Android .
Шаг 5: Перестройте и опубликуйте свое приложение
После внесения этих изменений перестройте приложение и выпустите обновленную версию в Play Store.
Дополнительно: настройка проверок готовности
Помимо запуска приложений для оплаты Android, API запроса платежа позволяет веб-сайтам проверять, готов ли пользователь платить. Например, веб-сайты могут определять, настроен ли у пользователя поддерживаемый способ оплаты.
Chrome включает настройку, которая позволяет пользователям включать или отключать эту проверку. Приложения-хосты WebView могут предложить аналогичный переключатель с помощью:
WebSettingsCompat.setHasEnrolledInstrumentEnabled(WebSettings, boolean)
Этот параметр включен по умолчанию ( true
). Когда он активен, он позволяет веб-сайтам, работающим в WebView, определять, есть ли у пользователя зарегистрированный платежный инструмент.
Проверьте поддержку запроса на оплату в JavaScript
После вызова WebSettingsCompat.setPaymentRequestEnabled(webSettings, true)
в Java или Kotlin интерфейс window.PaymentRequest
становится доступным в JavaScript. Это можно использовать для обнаружения функций на веб-странице:
if (window.PaymentRequest) {
// Payment Request is available.
} else {
// Payment Request is not available.
}
Когда window.PaymentRequest
доступен, веб-страница может продолжить инициировать платежную транзакцию .
Интеграция платежных приложений Android с Payment Request
Для поддержки запроса на оплату платежные приложения Android должны реагировать на определенные системные намерения и безопасно обрабатывать платежные данные. Эти руководства объясняют, как регистрировать платежные методы, внедрять платежный сервис и защищать ваше приложение:
- Руководство разработчика платежных приложений для Android : создание и настройка платежного приложения, включая обработку намерений и проверку вызывающего приложения.
- Настройте способ оплаты : зарегистрируйте свой способ оплаты и определите его возможности.
Защитите свое приложение от несанкционированного использования
Любое приложение может вызывать платежные намерения Android org.chromium.intent.action.PAY
, IS_READY_TO_PAY
и UPDATE_PAYMENT_DETAILS
. Приложения-хосты WebView также могут наблюдать, инициировать и перехватывать вызовы Payment Request. Поскольку WebView работает внутри процесса приложения-хоста, он не может ограничивать использование этих намерений. Вредоносные приложения могут использовать это для запуска атак Oracle .
При атаке оракула платежное приложение непреднамеренно раскрывает информацию, которую не должно раскрывать. Например, злоумышленник может использовать IS_READY_TO_PAY
, чтобы узнать, какие платежные инструменты доступны пользователю.
Вам необходимо встроить в свое платежное приложение средства защиты, чтобы защититься от подобного рода злоупотреблений.
Для предотвращения злоупотреблений используйте следующие стратегии:
- Throttle requests : Ограничьте частоту ответов вашего приложения на
IS_READY_TO_PAY
. Например, отвечайте только раз в 30 минут. - Использовать шифрование : шифровать конфиденциальные ответы, чтобы только ваши доверенные торговые серверы могли их расшифровать. Всегда выполняйте шифрование и расшифровку на стороне сервера.
- Ограничить доступ : Ведите список разрешенных доверенных хост-приложений WebView, используя их имена пакетов и сертификаты подписи SHA256. Узнайте больше в руководстве разработчиков платежных приложений Android .