Я нашел альтернативу, чтобы получить обратный звонок от Stripe 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
}
});
}
Со стороны флаттера мы получаем изменение URL в функции navigationDelegate.
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;
},
)