Web applications 对于客户端-服务器场景,最好的PayPal web应用程序工作流是什么?

Web applications 对于客户端-服务器场景,最好的PayPal web应用程序工作流是什么?,web-applications,paypal,Web Applications,Paypal,PayPal文档绝对令人震惊–请帮助。我正在构建一个带有SPA客户端和服务器的web应用程序,我想为该应用程序实现一个健壮的PayPal支付工作流。这最初只是一个一次性的支付实现,但稍后我将需要添加订阅。无论如何,现在我只是想找到一种可靠、安全的一次性付款方式。在阅读了无数个小时的文档后,我认为我的工作流程应该是这样的: 用户点击付款按钮 客户端应用程序向服务器发出请求,请求创建订单 服务器调用PayPal的RESTAPI(创建订单)并接收订单详细信息。服务器还将订单详细信息保存在数据库中 服务

PayPal文档绝对令人震惊–请帮助。我正在构建一个带有SPA客户端和服务器的web应用程序,我想为该应用程序实现一个健壮的PayPal支付工作流。这最初只是一个一次性的支付实现,但稍后我将需要添加订阅。无论如何,现在我只是想找到一种可靠、安全的一次性付款方式。在阅读了无数个小时的文档后,我认为我的工作流程应该是这样的:

  • 用户点击付款按钮
  • 客户端应用程序向服务器发出请求,请求创建订单
  • 服务器调用PayPal的RESTAPI(创建订单)并接收订单详细信息。服务器还将订单详细信息保存在数据库中
  • 服务器将订单详细信息发送回客户端。在这些细节中,我发现了一个指向贝宝结账的重定向URL
  • 客户端重定向到URL
  • 用户在贝宝网站上执行订单授权
  • PayPal重定向回客户端,在URL中返回令牌
  • 客户端提取令牌(这是一种订单/付款ID?)并将ID发送到服务器,请求捕获付款
  • 服务器使用该ID在数据库中查找订单详细信息,并调用PayPal的RESTAPI(捕获订单),并在其数据库中将订单标记为已付款
  • 服务器将成功确认发送回客户端
  • 客户端显示确认消息
  • 该工作流程看起来安全可靠(在任何情况下,客户都没有任何支付信息,所有敏感的通信都严格在服务器和PayPal之间进行)且可靠(资金是在最后一刻在服务器上通过REST呼叫从用户处提取的–工作流程中的任何故障都不会导致虚假或未记录的资金转账)

    我还尝试了webhooks方法。流程要简单得多,但在webhook访问服务器之前似乎有一个延迟(大约一分钟左右);这并不理想,因为我想立即显示付款确认

    因此,我的问题是:

    这个工作流程正确吗?我错过什么了吗?它是过于简单还是过于复杂?你能用别的东西代替一些步骤吗

    我还没有做关于订阅的研究。此工作流是否适合PayPal订阅创建

    对于工作流中的第3点,我应该使用什么PayPal请求:创建订单、创建订单授权或授权订单

    对于工作流中的第9点,我应该使用什么PayPal请求:捕获订单、授权订单或捕获订单授权

    最后一个问题。有什么地方我可以学习如何为贝宝开发?通过阅读文档,我发现只有示例是有用的。他们不提供一般指导/教程,也不解释应该使用什么方法以及为什么。有没有比PayPal文档更好的学习PayPal开发的地方


    该应用程序是Blazor WebAssembly客户端(适用于那些不知道Blazor如何工作的人–这类似于在浏览器中运行的JavaScript SPA应用程序,但使用的是C#/.NET)和.NET核心服务器,也在C#。重定向是一个遗留流程

    现代用户体验是不使用任何重定向。一点也不

    您需要两条路由,一条用于“设置事务”(创建订单),另一条用于“捕获事务”(捕获订单)

    将两条路线与此UI配对以供批准:



    订阅增加了其自身的复杂性,并且没有关于如何将客户端批准与上述服务器集成相结合的文档,但是当您知道要使用的创建/激活API调用以及要设置为空的额外
    用户操作
    参数时,这就相当简单了:

    谢谢!我看到了你的一些其他评论/答案,希望你也能回答我的:)在其他帖子中也看到了你对UI的引用,但没有意识到这也适用于我的用例。再次感谢你!