客户端-服务器场景的最佳 PayPal Web 应用程序工作流程是啥?

Posted

技术标签:

【中文标题】客户端-服务器场景的最佳 PayPal Web 应用程序工作流程是啥?【英文标题】:What is the best PayPal web app workflow for client-server scenario?客户端-服务器场景的最佳 PayPal Web 应用程序工作流程是什么? 【发布时间】:2021-02-25 20:01:41 【问题描述】:

PayPal 文档绝对令人震惊——请帮忙。我正在构建一个带有 SPA 客户端和服务器的 Web 应用程序,并且我想为该应用程序实现一个强大的 PayPal 支付工作流程。这最初只是一次性付款实施,但稍后我将需要添加订阅。无论如何,现在我只是想找出一种可靠且安全地进行一次性付款的方法。在阅读了无数小时的文档之后,我认为我的工作流程应该是这样的:

    用户点击支付按钮。 客户端应用程序向服务器发出请求,要求创建订单。 服务器调用 PayPal 的 REST API(创建订单)并接收订单详细信息。服务器还将订单详细信息保存在数据库中。 服务器将订单详细信息发送回客户端。在这些详细信息中,我发现了一个指向 PayPal 结帐的重定向 URL。 客户端重定向到 URL。 用户在 PayPal 的网站上执行订单授权。 PayPal 重定向回客户端,在 URL 中返回一个令牌。 客户端提取令牌(这是一种订单/付款 ID?)并将 ID 发送到服务器,要求捕获付款。 服务器使用 ID 在数据库中查找订单详细信息并调用 PayPal 的 REST API(捕获订单),并在其数据库中将订单标记为已付款。 服务器将成功确认发送回客户端。 客户端显示确认消息。

这个工作流程看起来很安全(在任何时候客户端都没有任何付款信息,所有敏感的通信都严格在服务器和 PayPal 之间进行)并且可靠(资金是在绝对最后时刻从用户那里取出的,在服务器上,通过REST 调用 – 工作流程中的任何故障都不会导致虚假或未记录的资金转移)。

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

所以我的问题是:

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

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

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

对于工作流程中的第 9 点,我应该使用哪个 PayPal 请求:获取订单、授权订单或获取订单授权?

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

该应用程序是 Blazor WebAssembly 客户端(适用于那些不知道 Blazor 工作原理的人 - 这类似于在浏览器中运行的 javascript SPA 应用程序,但使用 C#/.NET)和 .NET Core 服务器,也使用 C# .

【问题讨论】:

【参考方案1】:

重定向是一种遗留流程。

现代用户体验是不使用任何重定向。完全没有。

您需要两条路线,一条用于“设置交易”(创建订单),一条用于“捕获交易”(捕获订单),documented here.

将您的两条路线与此 UI 配对以供批准:https://developer.paypal.com/demo/checkout/#/pattern/server


订阅会增加其自身的复杂性,并且没有关于如何将客户端批准与上述服务器集成配对的文档,但是当您知道要使用的创建/激活 API 调用以及额外的 user_action 参数时,它就相当简单了置空:https://***.com/a/63908112/2069605

【讨论】:

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

以上是关于客户端-服务器场景的最佳 PayPal Web 应用程序工作流程是啥?的主要内容,如果未能解决你的问题,请参考以下文章

如何整合paypal

对Memcached使用的总结和使用场景

Paypal 使用签名,现在需要客户端证书

在没有 ConfigurationManager 和 Web.config 的情况下使用 PayPal .NET SDK

PayPal 中的定期付款

Web 服务客户端证书/身份验证最佳实践的解决方案