微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在WKWebView中使用Stripe JS接受Apple Pay?

如何解决如何在WKWebView中使用Stripe JS接受Apple Pay?

我正在尝试加载一个在iOS上的WKWebView中使用Stripe.js的网页(使用Xamarin.Forms)。

除Apple Pay之外,其他所有东西都可以正常工作(可以用卡付款):paymentRequest.canMakePayment()始终返回null。

SFSafariViewController内的同一网页运行良好,因此该问题似乎与WKWebView内的限制有关。 但是,根据https://webkit.org/blog/9674/new-webkit-features-in-safari-13/,现在应该支持功能,并且实际上,相同的WKWebView也可以正常加载Apple Pay演示页面https://applepaydemo.apple.com/)。

看来,问题最终出在Stripe.js的幕后工作方式上(也许与脚本注入有关)。

我在Xamarin中的自定义渲染器如下所示:

        WKWebView wkWebView;
        protected override void OnElementChanged(ElementChangedEventArgs<NativeWebView> e)
        {
            base.OnElementChanged(e);

            if (Control == null)
            {
                var config = new WKWebViewConfiguration();
                wkWebView = new WKWebView(Frame,config);
                wkWebView.WeakNavigationDelegate = new WebNavigationDelegate();
                SetNativeControl(wkWebView);
            }

            if (e.NewElement != null)
                Control.LoadRequest(new NSUrlRequest(new NSUrl(Element.Url)));
        }

以及网页中的JS(摘自Stripe Element示例):

            //set up payment request
            var paymentRequest = stripe.paymentRequest({
                country: 'GB',currency: 'gbp',total: {
                    label: 'sample order',amount: 100,},requestPayerName: true,requestPayerEmail: true,});

            paymentRequest.canMakePayment().then(function (result) {
                // result is always false!
                ...
            });

也许可以将其他设置添加到WKWebView中以使其工作吗?

解决方法

这不再是问题。 Stripe承认这是其JS包装器中的缺陷,并且已在官方库的最新更新中修复。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。