【问题标题】:In Flutter - How do I push user to a "Thank-you" page in the app after returning from PayPal completed transaction page in web browser在 Flutter 中 - 从 Web 浏览器中的 PayPal 完成交易页面返回后,如何将用户推送到应用程序中的“谢谢”页面
【发布时间】:2019-12-11 14:38:16
【问题描述】:

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

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

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 url 中的返回 url 参数?

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

【问题讨论】:

    标签: flutter paypal


    【解决方案1】:

    我假设您正在使用这个 _launchURL。做你想做的事,创建一个ThankYou 类并以下列方式调用它。您可能需要在调用ThankYou 屏幕之前检查结果值。我没有使用足够的 url 功能来知道它返回什么,如果有的话。可能是 null,某种 int,比如 404 url​​ not found,也可能是 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';
      }
    }
    

    【讨论】:

    • 我检查了 url_launcher 库,它说 launch() 函数返回一个布尔值。所以你会测试: if ( resultsValue == true ) { Navigator...... } pub.dev/documentation/url_launcher/latest/url_launcher/…
    • 这解决了当用户从浏览器返回应用程序时将用户发送到ThankYou页面的问题。但是,即使用户在完成 PayPal 付款之前返回,它也会始终将用户返回到感谢页面。有没有办法捕获/设置返回的 url,以便我们知道用户从哪里返回?上面的 PayPal url 应该在成功时返回“example.com”。有没有办法捕获这个或另一种方法来处理这个问题?感谢 E.Bradford 的帮助
    • 我不熟悉 PayPal 的 API,但我认为它提供了一种安全的技术来发布交易数据,例如 API 密钥、密码、金额等。因此,请研究 PayPal 编程 API 并查看特别是关于如何将交易发布到 Paypal 以及它将返回什么数据。从概念上讲,它返回的数据将被捕获在 resultsValue 变量中。我认为您实际上使用了错误的技术来调用 PayPal _launchUrl 非常初级。我建议改用 Flutter 库 Dio。更适合这项任务。
    • 您可以在这里找到 Dio:github.com/flutterchina/dio 一旦您对 Dio 感到满意,然后转到 PayPal API 界面。
    猜你喜欢
    • 2022-11-03
    • 2013-08-09
    • 2014-12-06
    • 2021-11-03
    • 2021-05-23
    • 2019-12-29
    • 2012-06-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多