So öffnen Sie das Zahlungsportal für das Bezahlen mit Google Pay
Wenn Sie Zahlungen per Google Pay entgegennehmen möchten, müssen Sie das Zahlungsportal auf eine der folgenden Arten öffnen:
- in einem Browser – in diesem Fall wird der Nutzer vom Spiel aus zu einem externen Browser weitergeleitet, um zu bezahlen. Das Zahlungsportal sieht dabei in etwa wie folgt aus:
- in Android WebView – in diesem Fall wird das Zahlungsportal nahtlos innerhalb der Spielanwendung geöffnet. Das sieht in etwa so aus:
- in Custom Tabs – in diesem Fall wird das Zahlungsportal innerhalb der Spielanwendung geöffnet, dem Nutzer wird jedoch eine Browserleiste angezeigt. Das Zahlungsportal sieht dabei in etwa wie folgt aus:
Im Browser
Sie müssen keinen zusätzlichen Code implementieren, um das Zahlungsportal in einem Browser zu öffnen und Zahlungen über Google Pay entgegennehmen zu können. Befolgen Sie einfach die Anleitung zum Öffnen des Zahlungsportals.
In Android WebView
Android WebView ist eine vorinstallierte Systemkomponente von Google, die es Android-Anwendungen ermöglicht, Webinhalte darzustellen. Damit das Zahlungsportal und Google Pay in Android WebView korrekt funktionieren, müssen Sie WebView konfigurieren und die Klassen setWebViewClient
und setWebChromeClient
einrichten.
- java
mWebView.setWebViewClient(new XsollaWebViewClient(this));
mWebView.setWebChromeClient(new XsollaWebChromeClient(this));
So konfigurieren Sie das Öffnen des Zahlungsportals in Android WebView:
- Konfigurieren Sie WebView entsprechend dem folgenden Beispiel:
- java
WebSettings webSettings = mWebView.getSettings();
webSettings.setBuiltInZoomControls(false);
webSettings.setUseWideViewPort(true);
webSettings.setDomStorageEnabled(true);
webSettings.setLoadWithOverviewMode(true);
webSettings.setJavaScriptEnabled(true);
webSettings.setSupportMultipleWindows(true);
webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
- Implementieren Sie die Klasse
XsollaWebViewClient extends WebViewClient
sowie die beiden MethodenshouldOverrideUrlLoading
undonPageFinished
in dieser Klasse entsprechend dem folgenden Beispiel:
- java
class XsollaWebViewClient extends WebViewClient {
private final Context context;
public XsollaWebViewClient(Context context) {
this.context = context;
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if(url.matches(".+://.*")) {
try {
Intent intent = Intent.parseUri(url, Intent.URI_INTENT_SCHEME);
intent.addCategory("android.intent.category.BROWSABLE");
intent.setComponent(null);
context.startActivity(intent);
} catch(URISyntaxException e) {
Log.e("WebView", "Invalid URL format" + url, e);
} catch (ActivityNotFoundException e) {
Log.e("WebView", "No activity found to handle URL: " + url, e);
}
return true;
}
return false;
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
}
}
- Implementieren Sie die Klasse
XsollaWebChromeClient extends WebChromeClient
sowie die beiden MethodenonCreateWindow
undonCloseWindow
in dieser Klasse.
- java
public class XsollaWebChromeClient extends WebChromeClient {
private final Context mContext;
public XsollaWebChromeClient(Context context) {
mContext = context;
}
@Override
public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, android.os.Message resultMsg) {
MainActivity mainActivity = (MainActivity) mContext;
mainActivity.mChildWebView.setVisibility(View.VISIBLE);
WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
transport.setWebView(mainActivity.mChildWebView);
resultMsg.sendToTarget();
return true;
}
@Override
public void onCloseWindow(WebView window) {
if (window != null && window instanceof XsollaChildWebView) {
window.setVisibility(View.GONE);
}
}
}
- Implementieren Sie die Klasse
XsollaChildWebView extends WebView
.
- java
public class XsollaChildWebView extends WebView {
@SuppressLint("SetJavaScriptEnabled")
public XsollaChildWebView(Context context, AttributeSet attrs) {
super(context, attrs);
WebSettings webSettings = getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setDomStorageEnabled(true);
setWebViewClient(new XsollaWebViewClient(context));
setWebChromeClient(new XsollaWebChromeClient(context));
}
}
- Implementieren Sie das Feld
XsollaChildWebView mChildWebView
in der KlasseMainActivity
:
- java
mChildWebView = findViewById(R.id.childWebView);
Die zweite WebView-Komponente (childWebView
) dient dazu, neue Fenster im Zahlungsportal zu öffnen.
Beispiel für die Implementierung von
- xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<WebView
android:id="@+id/activity_main_webview"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<com.example.app.XsollaChildWebView
android:id="@+id/childWebView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
In Custom Tabs
Custom Tabs ist eine Funktion in Android-Browsern, die es Entwicklern ermöglicht, die Anwendung um ein individuelles Browser-Erlebnis zu ergänzen. Der Unterschied zwischen WebView und Custom Tabs besteht darin, dass Nutzeraktionen in WebView von anderen im Internet vorgenommen Aktionen des Nutzers isoliert sind. In Custom Tabs hingegen werden Nutzeraktionen mit anderen vom Nutzer in Chrome vorgenommenen Aktivitäten auf dem Android-Gerät synchronisiert.
Codebeispiel für den Aufruf des Zahlungsportals in Custom Tabs:
- java
String url = "https://secure.xsolla.com/paystation4?token=${token}";
CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder();
CustomTabsIntent customTabsIntent = builder.build();
customTabsIntent.launchUrl(this, Uri.parse(url));
War dieser Artikel hilfreich?
Diese Seite bewerten
Jetzt nicht
Vielen Dank für Ihr Feedback!
Haben Sie einen Tippfehler oder einen anderen Textfehler gefunden? Wählen Sie den Text aus und drücken Sie Strg+Eingabe.