我使用了webview_flutter插件来展示Webview。目前,我在Webview中打开了条带API。条带API成功后,它将重定向到我的服务器API。在此API中,验证条形卡并在控制台中发送打印的响应。我不会在flutter端得到这个控制台日志。
WebView(
initialUrl: "https://connect.stripe.com/oauth/authorize?response_type=code&client_id=${clientId}&scope=read_write&redirect_uri=${baseUrl}/transaction/connect&state=161",
javascriptMode: JavascriptMode.unrestricted,
javascriptChannels: [
JavascriptChannel(
name: 'Print',
onMessageReceived: (JavascriptMessage message) {
print('Message: ${message.message}');
}),
].toSet(),
onPageStarted: (url) {
debugPrint("onPageStarted $url");
},
onPageFinished: (url) {
debugPrint("onPageFinished $url");
})
我试图从JavascriptChannel中的应用程序接口获取Javascript响应,这在安卓中得到了响应,但在iOS端却没有得到。
1)有没有办法把这些日志放在颤动端?
2)有没有其他方法可以在颤动中获得API的响应?
发布于 2020-03-16 17:57:09
我找到了一种替代方法,可以从条纹API中获得回调。为了响应API回调,我重定向到另一个后端API。
public connectWithStripe = async (req: CustomRequest, res: Response) => {
request.post(process.env.StripeConnecturl
, {
form: {
client_secret: process.env.StripeKey,
code: req.query.code,
grant_type: "authorization_code",
},
}, async (error: any, response: any) => {
if (response && response.statusCode === 200) {
const stripeDetails = {
stripeAccountId: JSON.parse(response.body).stripe_user_id,
};
return res.redirect('connect-success'); // redirect when successfully stripe account
} else {
return res.redirect('connect-fail'); // fail
}
});
}
在flutter端,我们在navigationDelegate函数中得到URL的变化。
WebView(
initialUrl: url,
navigationDelegate: (request) {
if (request.url.contains('connect-success')) {
// TODO when api success
} else if (request.url.contains('connect-fail')) {
// TODO when api fail
}
return NavigationDecision.navigate;
},
)
https://stackoverflow.com/questions/60527134
复制相似问题