在Flutter中-在网络浏览器中从PayPal完成的交易页面返回后,如何将用户推送到应用程序中的“谢谢”页面

时间:2019-08-03 04:18:07

标签: flutter paypal

我的Flutter应用要求在应用外部的网络浏览器中通过PayPal付款。付款完成后,用户将返回到应用程序,并应推送“谢谢”页面。

我正在使用_launchURL从应用程序内部启动Web浏览器,并使用以下示例PayPal网址定义付款。

https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&business=email@domain.com&currency_code=USD&amount=123.99&return=http://example.com&item_name=Document+Studio

使用SystemChannels.lifecycle.setMessageHandler我应该能够测试应用何时从Web浏览器返回(AppLifecycleState.resumed)。但是,如何从Web浏览器中捕获返回URL(http://example.com)或其他值,以确认它来自交易完成页面,并应将其推送至应用程序的“谢谢”页面?

是否可以将浏览器中的值传递回应用程序?

我的另一个想法是使用Uni_links对应用程序中的“谢谢”页面进行“深层链接”,并将其作为PayPal网址中的返回网址参数?

我对解决方案有点迷茫,只是陌生,所以任何建议/指导都将不胜感激。

1 个答案:

答案 0 :(得分:0)

我假设您正在使用此_launchURL。要执行您想要的操作,请创建ThankYou类,并以以下方式调用它。您可能需要在调用thankYou屏幕之前检查resultingValue。我还没有足够使用url功能来知道返回的内容(如果有的话)。它可能为null,某种int,例如找不到404 url​​,也许是String?

import 'ThankYou.dart';

_launchURL() async {
  const url = 'https://flutter.io';
  if (await canLaunch(url)) {
        await launch(url).then((resultingValue){
      Navigator.push(
          context,
          MaterialPageRoute(
              builder: (context) => ThankYou()));

    });

  } else {
    throw 'Could not launch $url';
  }
}