如何解决如何在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 举报,一经查实,本站将立刻删除。