【问题标题】:How to get the payment gateway response in WebView using flutter如何使用颤振在 WebView 中获取支付网关响应
【发布时间】:2022-01-14 07:51:42
【问题描述】:

使用颤振在 webview 中加载支付网关表单。当我单击付款按钮时,我无法获得响应成功或失败。如果它成功移动到主屏幕。

对于原生移动应用,使用 addJavascriptInterface 获取响应。对于颤振,在哪里实现 addJavascriptInterface 回调?

谁能帮帮我?我在过去 2 天被卡住了。

  WebView(              
        initialUrl:widget.webpageurl,
          javascriptMode: JavascriptMode.unrestricted,
        javascriptChannels: Set.from([
          JavascriptChannel(
              name: 'ReceiveIframeResponse',
              onMessageReceived: (JavascriptMessage message) {
                print('ReceiveIframeResponse${message.message}');
                var jsonData = jsonDecode(message.message);
                print('jsonData $jsonData');
                if(jsonData['status'] == 'CANCELLED'){
                  // Your code
                }else if(jsonData['status'] == 'SUCCESS'){
                  // Your code
                }
              })
        ]),
          onWebViewCreated: (WebViewController webViewController) {
            _controller.complete(webViewController);
          },
          onProgress: (int progress) {
            print("WebView is loading (progress : $progress%)");

          },
          onPageFinished: (finish) {
            setState(() {
              isLoading = false;
            });

            print("WebView is onPageFinished $finish");


          },

        onPageStarted: (data){
          print("WebView is onPageStarted $data");
        },

      ),

【问题讨论】:

    标签: flutter dart webview flutter-dependencies flutter-web


    【解决方案1】:

    你可以像这样使用javascript接口回调,

    WebView(
          initialUrl: widget.webpageurl,
          javascriptMode: JavascriptMode.unrestricted,
          javascriptChannels: Set.from([
            JavascriptChannel(
                name: 'messageHandler',
                onMessageReceived: (JavascriptMessage message) {
                  print(message.message);
                  var jsonData = jsonDecode(message.message);
                  if(jsonData['status'] == 'CANCELLED'){
                    // Your code
                  }else if(jsonData['status'] == 'SUCCESS'){
                    // Your code
                  }
                })
          ]),
          onWebViewCreated: (WebViewController webViewController) {
            
          },
        );
    

    您可以像这样在包含回调函数的 HTMl 中使用此脚本,

    <script type="text/javascript">  
        function myCallback(status) {
        var statusData = JSON.stringify(status);
            console.log(statusData)
            messageHandler.postMessage(statusData);
        }
    </script>
    

    【讨论】:

    • 谢谢,你能帮我吗 I/chromium(18630): [INFO:CONSOLE(1)] "Unrecognized feature: 'payment'.", source: js.stripe.com/v3 what is error跨度>
    猜你喜欢
    • 2019-07-13
    • 2018-08-07
    • 2020-09-25
    • 2017-08-04
    • 2022-08-11
    • 1970-01-01
    • 1970-01-01
    • 2021-09-27
    • 2016-12-21
    相关资源
    最近更新 更多