加盟店様Native Webviewアプリケーションが同じウインドウ内でPayPayのWeb Cashier URLをロードするとき、リダイレクト処理を適切にユーザに要求できないことがあります。
※決済選択画面が決済代行会社様の画面でない実装を想定したものです。
iOS、Androidでそれぞれ以下の対応方法をお試しください。
・iOS: 「1」番を実装してください。
・Android: 「2」番を実装してください。「2」番の実装が難しい場合は、「1」番を実装してください。
1. iOS/Android共通:
Javascriptにより、外部ブラウザをオープンし、PayPayアプリを起動する。
window.open("<web_cashier URL>", "_blank");
リクエストを実施する処理については、決済代行会社の仕様をご確認ください。
加盟店様から決済代行会社への遷移等を実施されるタイミングにて、外部ブラウザから開くようにご対応ください。
※ 本スニペットで開かれるブラウザはユーザのデフォルトブラウザとなります。
2. Android:
「Intent」を使用し、PayPayへのリダイレクトを実現する。
val codeWeb: WebView = WebView(this)
val settings = codeWeb.settings
settings.domStorageEnabled = true
settings.javaScriptEnabled = true
codeWeb.loadUrl("<merchant web URL>")
codeWeb.webViewClient = object : WebViewClient() {
override fun shouldOverrideUrlLoading(
view: WebView?,
url: String?
): Boolean {
Log.i("shouldOverrideUrlLoading", "shouldOverrideUrlLoading: $url")
val intent: Intent
if (url != null) {
if (url.contains("<web-cashier host>")) {
// Current value of web cashier host:
// https://www.paypay.ne.jp/app/cashier
intent = Intent(Intent.ACTION_VIEW)
intent.data = Uri.parse(url)
startActivity(intent)
return true
}
}
return false
}
}