U kunt de Payment Request API gebruiken om Android-betaalapps te starten vanaf websites die in een WebView draaien. Dit werkt met dezelfde JavaScript API die al beschikbaar is in Chrome.
Deze functie is beschikbaar vanaf WebView versie 136, die normaal gesproken bij Chrome 136 wordt geleverd.
Betalingsverzoek instellen in WebView-host-apps
Om Android-betaalapps vanuit WebView te starten, vraagt de Payment Request API het systeem om Android-intenties. Om dit te ondersteunen, moet de WebView-hostapp deze intenties declareren in het bestand AndroidManifest.xml
.
Standaard is Betalingsverzoek uitgeschakeld in WebView.
Volg deze stappen om het in te schakelen met WebSettingsCompat
van AndroidX WebKit versie 1.14.0
of hoger:
Stap 1: Voeg de AndroidX WebKit-afhankelijkheid toe
Kotlin (build.gradle.kts)
dependencies {
implementation("androidx.webkit:webkit:1.14.0")
}
Groovy (build.gradle)
dependencies {
implementation 'androidx.webkit:webkit:1.14.0'
}
Versiecatalogus
[versions]
webkit = "1.14.0"
[libraries]
androidx-ktx = { group = "androidx.webkit", name = "webkit", version.ref = "webkit" }
Stap 2: Importeer de vereiste klassen
Met deze klassen kunt u WebView-instellingen openen en configureren, en controleren op functieondersteuning tijdens runtime.
import android.webkit.WebSettings;
import android.webkit.WebView;
import androidx.webkit.WebSettingsCompat;
import androidx.webkit.WebViewFeature;
Stap 3: Betaalverzoek inschakelen in WebView-code
Met deze stap schakelt u de functie Betalingsverzoek in uw WebView in en zorgt u ervoor dat de site deze kan activeren met behulp van JavaScript.
Met deze stap schakelt u de functie Betalingsverzoek in uw WebView in en zorgt u ervoor dat de site deze kan activeren met behulp van JavaScript.
Kotlin (Componeren)
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);
}
Stap 4: Intentiefilters toevoegen in AndroidManifest.xml
Met deze filters kan WebView Android-betaalapps detecteren en aanroepen met behulp van systeemintenties:
<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>
Gebruik de volgende intents in uw AndroidManifest.xml
ter ondersteuning van belangrijke functies voor betalingsverzoeken:
-
org.chromium.intent.action.PAY
: Hiermee kan de WebView Android-betaalapps aanroepen en betaalreacties ontvangen. Meer informatie vindt u in de handleiding voor ontwikkelaars van Android-betaalapps . -
org.chromium.intent.action.IS_READY_TO_PAY
: Hiermee kunnen websites controleren of de gebruiker een ondersteunde betaalmethode heeft ingesteld. Meer informatie vindt u in de handleiding voor ontwikkelaars van Android-betaalapps. -
org.chromium.intent.action.UPDATE_PAYMENT_DETAILS
: Ondersteunt dynamische updates, bijvoorbeeld wanneer de gebruiker zijn of haar verzendadres of optie in de betaalapp wijzigt. Lees meer in Verzend- en contactgegevens verstrekken vanuit een Android-betaalapp .
Stap 5: Bouw uw app opnieuw en publiceer deze
Nadat u deze wijzigingen hebt aangebracht, bouwt u uw app opnieuw op en publiceert u een bijgewerkte versie in de Play Store.
Optioneel: Pas gereedheidscontroles aan
Naast het lanceren van Android-betaalapps, kunnen websites met de Payment Request API controleren of de gebruiker klaar is om te betalen. Websites kunnen bijvoorbeeld detecteren of de gebruiker een ondersteunde betaalmethode heeft ingesteld.
Chrome bevat een instelling waarmee gebruikers deze controle kunnen in- of uitschakelen. WebView-hostapps kunnen een vergelijkbare schakelaar bieden via:
WebSettingsCompat.setHasEnrolledInstrumentEnabled(WebSettings, boolean)
Deze instelling is standaard ingeschakeld ( true
). Wanneer deze actief is, kunnen websites die in WebView draaien detecteren of de gebruiker een geregistreerd betaalmiddel heeft.
Controleer of er ondersteuning is voor betalingsverzoeken in JavaScript
Nadat WebSettingsCompat.setPaymentRequestEnabled(webSettings, true)
is aangeroepen in Java of Kotlin, wordt de window.PaymentRequest
-interface beschikbaar in JavaScript. Deze kan worden gebruikt voor functiedetectie op de webpagina:
if (window.PaymentRequest) {
// Payment Request is available.
} else {
// Payment Request is not available.
}
Wanneer window.PaymentRequest
beschikbaar is, kan de webpagina een betalingstransactie blijven initiëren .
Integreer Android-betaalapps met betalingsverzoek
Om betalingsverzoeken te ondersteunen, moeten Android-betaalapps reageren op specifieke systeemintenties en betalingsgegevens veilig verwerken. Deze handleidingen leggen uit hoe u betaalmethoden registreert, uw betaalservice implementeert en uw app beveiligt:
- Handleiding voor ontwikkelaars van Android-betaalapps : bouw en configureer uw betaalapp, inclusief informatie over het verwerken van intenties en het verifiëren van de aanroepende app.
- Stel een betaalmethode in : registreer uw betaalmethode en definieer de mogelijkheden ervan.
Beveilig uw app tegen misbruik
Elke app kan de Android-betaalintenties org.chromium.intent.action.PAY
, IS_READY_TO_PAY
en UPDATE_PAYMENT_DETAILS
aanroepen. WebView-hostapps kunnen ook betalingsverzoeken observeren, initiëren en onderscheppen. Omdat WebView binnen het proces van de hostapp wordt uitgevoerd, kan het niet beperken hoe deze intenties worden gebruikt. Kwaadaardige apps kunnen dit misbruiken om Oracle-aanvallen uit te voeren.
Bij een Oracle-aanval onthult een betaalapp onbedoeld informatie die hij niet zou moeten prijsgeven. Een aanvaller kan bijvoorbeeld IS_READY_TO_PAY
gebruiken om te achterhalen welke betaalmiddelen de gebruiker tot zijn beschikking heeft.
U moet beveiligingen inbouwen in uw betaalapp om uzelf te beschermen tegen dit soort misbruik.
Gebruik de volgende strategieën om misbruik te beperken:
- Beperk verzoeken : beperk hoe vaak uw app reageert op
IS_READY_TO_PAY
. Reageer bijvoorbeeld slechts één keer per 30 minuten. - Gebruik encryptie : versleutel gevoelige reacties zodat alleen uw vertrouwde merchant servers ze kunnen ontsleutelen. Voer encryptie en decryptie altijd uit aan de serverkant.
- Beperk toegang : houd een toegestane lijst bij van vertrouwde WebView-host-apps met behulp van hun pakketnamen en SHA256-ondertekeningscertificaten. Meer informatie vindt u in de handleiding voor ontwikkelaars van Android-betaalapps .