Stripe结帐在Android WebView中无法正常工作

9
我正在开发一款Android应用程序。我所使用的服务器为用户提供了订阅功能,因此用户需要支付费用才能成为该网站的会员。
现在我正在开发同样的功能,并且在Android应用程序中使用WebView来执行支付网关。我正在加载Stripe结帐支付的URL。
但是,在WebView中Stripe结帐支付时,我遇到了以下错误:
“抱歉,加载结帐时出现问题。如果问题持续存在,请尝试使用其他浏览器。”
请问如何解决WebView中的这个问题,使其可以在我的应用程序中正常工作?

1
webView?.settings?.javaScriptEnabled = true,就可以了。 - Akash Dubey
5个回答

22

Stripe结账确实无法在Android WebViews上工作,但它可以在iOS UIWebView上工作......所以... UserAgent来拯救!

webView.getSettings().setUserAgentString("Mozilla/5.0 (iPhone; CPU iPhone OS 9_3 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13E233 Safari/601.1");

6
我把这个添加到webview的userAgent里面后,它就可以工作了。
"Mozilla/5.0 (Linux; Android 4.4.4; One Build/KTU84L.H4) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/33.0.0.0 Mobile Safari/537.36 [FB_IAB/FB4A;FBAV/28.0.0.20.16;]"

谢谢,运行良好 :) - Zamblek

0

我们在 Android 上的 WebView(React Native 应用程序中)遇到了 "抱歉,加载结帐时出现问题。如果持续出现,请尝试使用其他浏览器。" 的错误。

在调试 Stripe JavaScript 后,我们发现一些仅适用于 Android WebView 的代码(请参见下面的图像)。通过添加标签 <meta name="mobile-web-app-capable" content="yes">,我们解决了这个问题。现在 Stripe 在 IOS 上也可以正常加载了。

Stipe code


3
请勿以图片形式发布代码。以文本形式发布对寻找答案的人更有帮助。 - Roberto Caboni

0

很遗憾,Stripe Checkout不支持在Web视图中显示结帐。最好的解决方案是使用Stripe.js 构建自己的付款表单


我该如何构建Stripe网关实现的表单,并在Android WebView中使用它?请问有人可以指导我如何做吗? - Prithniraj Nicyone
2
@Ywain - 那并不是一个有帮助的回答 - 为什么它不被支持?在Android上处理Stripe的最佳方法是什么? - David Glance
我不确定确切的技术原因,但知道“为什么”也没有帮助:问题在于结账功能在Android的Web视图中无法正常工作。它从来没有过,并且据我所知,在短期内也没有改变这种情况的计划。如果您正在编写基于Web应用程序/ Web视图的应用程序,我已经提到了“最佳”的(唯一)解决方案:使用Stripe.js设计自己的表单。如果您正在编写没有Web视图的本机应用程序,则应使用Stripe的Android SDK来收集和标记付款信息。 - Ywain

0

你的问题不在于 Android 设备或 Android 应用程序,而是在于你的支付集成系统。

如果你正在使用“从 Stripe 弹出默认弹窗”的 Pay Now 功能,那么肯定会出现错误。你需要通过使用 AJAX 令牌系统将其支付系统与自己的代码进行集成。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接