1. PayPay for Developers FAQ
  2. OpenPaymentAPI
  3. WebviewでPayPayの支払い画面を呼び出そうとしていますが、正しく動作しません。

PayPay for Developers FAQ

WebviewでPayPayの支払い画面を呼び出そうとしていますが、正しく動作しません。

加盟店様Native Webviewアプリケーションが同じウインドウ内でPayPayWeb Cashier URLをロードするとき、リダイレクト処理を適切にユーザに要求できないことございます。

※決済選択画面が決済代行会社様の画面でない実装を想定したものです。

iOS、Androidでそれぞれ対応方法がございます。

・iOS: 「1」番を実装してください。

・Android: 「2」番を実装してください。「2」番の実難しい場合は、「1」番を実装してください。

  1. iOS/Android共通:

Javascriptにより、外部ブラウザをオープンし、PayPayアプリを起動する。

  

       window.open("<web_cashier URL>", "_blank");

 

リクエストを実施する処理については、決済代行会社の仕様をご確認ください。

加盟店様から決済代行会社への遷移等を実施されるタイミングにて、外部ブラウザから開くようにご対応ください。

 

※ 本スニペットで開かれるブラウザはユーザのデフォルトブラウザとなります。

 

  1. 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

           }

       }

 

参考になりましたか?

送信しました。回答ありがとうございました。

解決しなかった場合は

フォームでお問い合わせ