WKWebView 中的 Apple Pay JS

问题描述 投票:0回答:3

我正在研究是否可以在 WKWebView 中嵌入 Apple Pay JS/Web 支付 API。我们有一个嵌入在 WKWebView 中的网络应用程序,我们想通过 JavaScript 在没有桥的情况下实现 Apple Pay。

我整理了一个非常基本的

ViewController.swift
示例如下,利用了 Apple Pay on the Web Demo

import UIKit
import WebKit


class ViewController: UIViewController, WKUIDelegate {

    var webView: WKWebView!

    override func loadView() {
        let webConfiguration = WKWebViewConfiguration()
        webView = WKWebView(frame: .zero, configuration: webConfiguration)
        webView.uiDelegate = self
        view = webView
    }
    override func viewDidLoad() {
        super.viewDidLoad()

        let myURL = URL(string:"https://applepaydemo.apple.com")
        let myRequest = URLRequest(url: myURL!)
        webView.load(myRequest)
    }
}

呈现Apple Pay按钮,但也显示不支持设备的错误消息(见下文),按钮无法点击。

我认为这意味着在这种情况下没有支持。我再次尝试使用

SFSafariViewController
并显示按钮并在单击时启动 Apple Pay。简而言之——一切都很完美。

import UIKit
import SafariServices

class ViewController: UIViewController, SFSafariViewControllerDelegate {
    override func viewDidAppear(_ animated: Bool) {
        let safariVC = SFSafariViewController(url: URL(string:"https://applepaydemo.apple.com")!)
        self.present(safariVC, animated: false, completion: nil)
    }
}

我想知道我为 WkWebView 实现这个的方式是否存在问题,或者是否存在错误。看起来按钮出现或按钮不起作用都是错误。显然,在一个层面上,它认为 WkWebView 是兼容的,但在另一个层面上则不然。这似乎是一个要报告的错误,但我对 Swift 还很陌生,所以这可能是一个实现问题。

谢谢!

ios swift wkwebview applepay sfsafariviewcontroller
3个回答
1
投票

已编辑

参考:-https://developer.apple.com/library/archive/ApplePay_Guide/index.html#//apple_ref/doc/uid/TP40014764

上一个答案

您需要禁用 javascript 才能正常工作。 (可能出于安全原因,因为涉及付款)

override func loadView() {

        let preferences = WKPreferences()
        preferences.javaScriptEnabled = false
        let configuration = WKWebViewConfiguration()
        configuration.preferences = preferences
       // let webview = WKWebView(frame: .zero, configuration: configuration)
       // let webConfiguration = WKWebViewConfiguration()
        webView = WKWebView(frame: .zero, configuration: configuration)
        webView.uiDelegate = self
        view = webView
    }

1
投票

不幸的是,您只能将 ApplePay 与 SFSafariViewController 一起使用;这意味着即使出现 ApplePay 按钮,交易流程也不会让您继续,因为 WkWebview 不支持 ApplePay。


0
投票

这个好像现在支持了。参考:safari 发行说明 (v16+) https://developer.apple.com/documentation/safari-release-notes/safari-16-release-notes

Apple Pay 新功能:添加了允许将脚本注入已使用 Apple Pay 的 WKWebView 的支持(反之亦然)。

© www.soinside.com 2019 - 2024. All rights reserved.