Android WebView が Google Pay をサポート

2025年5月28日

皆さんは、WebView を使って Android アプリにウェブ購入手続きを埋め込んでいますか?

うれしいことに、このたび Android WebView で Google Pay がサポートされるようになりました。この機能はバージョン 137 以降の WebView で利用できます。


Android WebView で Google Pay が動作する仕組み

このソリューションは、Payment Request API を活用しています。これを使うと、WebView に埋め込まれているウェブサイトから Android 決済アプリを起動できます。

Google Play 開発者サービス 25.18.30(本日より利用可能)以降で、Google Pay がネイティブの支払いシートをトリガーするようになります。つまり、WebView でトリガーされた場合でもユーザー デバイス トークンが利用できるようになるので、決済プロセスがスムーズになります。


アプリに必要な変更点

WebView の Payment Request API はデフォルトで無効になるので、以下の簡単な変更を実装する必要があります。

ビルドの依存関係を追加(または更新)します。

androidx.webkit:webkit:1.14.0
Kotlin

AndroidManifest.xml に次の queries タグを追加します。

<!--
  Chromium で定義されるアクション PAY、IS_READY_TO_PAY、
  UPDATE_PAYMENT_DETAILS を Android アプリまたは SDK で初期化できるようにする
-->
<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>
XML

アプリの WebView で Payment Request API が利用できるようにします。インポート文を正しく記述してください。必要な Google Pay 固有の変更はこれだけです。

Kotlin(Compose):

import android.webkit.WebSettings;
import android.webkit.WebView;
import androidx.webkit.WebSettingsCompat;
import androidx.webkit.WebViewFeature;
 
AndroidView(
    factory = {
        WebView(it).apply {
            // WebView の設定を更新し、JavaScript と支払いリクエストを許可 
            settings.javaScriptEnabled = true            
            if (WebViewFeature.isFeatureSupported(
                    WebViewFeature.PAYMENT_REQUEST)) {
                WebSettingsCompat.setPaymentRequestEnabled(settings, true);
            }
        }
    },
    update = {
      it.loadUrl(url)
    }
)
Kotlin

Java:

import android.webkit.WebSettings;
import android.webkit.WebView;
import androidx.webkit.WebSettingsCompat;
import androidx.webkit.WebViewFeature;
 
WebView webView = findViewById(R.id.webview);
WebSettings webSettings = webView.getSettings();
 
//  WebView の設定を更新し、JavaScript と支払いリクエストを許可
webSettings.setJavaScriptEnabled(true);
if (WebViewFeature.isFeatureSupported(WebViewFeature.PAYMENT_REQUEST)) {
    WebSettingsCompat.setPaymentRequestEnabled(webSettings, true);
}
Java

最後に、Pay & ウォレット コンソールから、アプリの本番環境アクセスをリクエストします。

An approved Android app integration
承認された Android アプリ インテグレーション

Android アプリでシームレスな支払いを実現する

Android WebView で Google Pay をサポートすると、Android アプリにウェブ購入手続きを埋め込んで、ユーザーに Google Pay を利用してもらうことができます。実装についてさらにサポートが必要な場合は、Google Pay & ウォレット コンソールにログインしてサポート チケットを作成してください。また、Discord#payments チャンネルからデベロッパー コミュニティに参加することもできます。

X で@GooglePayDevs をフォローすると、今後の最新情報を受け取ることができます。ご不明な点がある場合は、@GooglePayDevs にタグ付けし、ツイートに #AskGooglePayDevs を含めてください。