框架: Ionic Cordova
API: Stripe Connect(允许用户相互发送付款)。
获取付款的注册过程是通过 Stripe Connects 自己的外部窗口进行的。注册 Stripe Connect 时,它使用重定向 URI(在我的 Stripe 帐户的设置中设置)通过身份验证代码返回到您来自的屏幕。这在浏览器中有效(因为重定向 URI 设置为 localhost 或 IP),但手机上实际运行的应用程序则不然,因为该应用程序没有 URL。因此它显示“网站无法访问/不存在”浏览器错误消息。
我目前使用以下方式打开 Stripe Connect 注册屏幕:
var link = "https://connect.stripe.com/oauth/authorize?response_type=code&client_id=MYCLIENTID&scope=read_write";
window.open(link, '_blank', 'location=no');
我已向 Stripe 支持人员寻求帮助,但他们对此没有解决方案。
我尝试过使用 Custom URL Scheme用于为应用程序提供 URL - 但 Stripe 只允许“Http://”URL,而不允许 CoolAppName//:,如自定义 URL 方案所给出的那样。
请不要对此感到困惑:如果我在 cmd 中运行“ionic run -l”,然后使用给定的 URL 作为重定向 URI,它实际上也会使用手机上的身份验证代码重定向回来。但是,会删除应用程序中存储的所有信息,因此它“忘记”了登录的用户。当然,此解决方案也只能在本地工作。
如有任何建议,我们将不胜感激。
提前致谢。
最佳答案
您可以使用任何您想要的网址,您所要做的就是监听 loadstart
事件并检查它是否正在加载该网址以了解重定向是否正常
如果您尚未安装 inAppBrowser 插件,请先安装它
cordova 插件添加 cordova-plugin-inappbrowser
并使用window.cordova.InAppBrowser.open
而不是window.open
(API很久以前就改变了)
你的代码应该是这样的:
var link = "https://connect.stripe.com/oauth/authorize?response_type=code&client_id=MYCLIENTID&scope=read_write";
var browserRef = window.cordova.InAppBrowser.open(link, '_blank', 'location=no');
browserRef.addEventListener('loadstart', function(event) {
if((event.url).indexOf(yourRedirectUri) === 0) {
//Loaded the redirect url
}
});
其中 yourRedirectUri
是您在 stripe 上使用的 url
关于cordova - Ionic Cordova 中的 Stripe Connect - 无法重定向回应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36796456/