【问题标题】:Integrating Paypal with .Net Core 3将 Paypal 与 .Net Core 3 集成
【发布时间】:2020-02-06 09:44:13
【问题描述】:

我有一个 .Net Core 3 项目,我想集成 Paypal。

在过去的项目中,我使用的是Paypalpackage,但现在我正在阅读他们的documentation,他们建议使用他们的 API 版本 2。 (之前我使用的是带有 Paypal SDK 的版本 1)。如果我去 nuget.com 并检查 Paypal 包,我发现这个包的第 2 版仍然是 rc

Version     Downloads   Last updated        
2.0.0-rc2   143,570     2018-04-12T18:17:40Z

现在已经快 2 年了,所以看起来并不乐观。如果我再次查看他们的文档,我发现他们建议使用以下软件包:PayPalCheckoutSdk。链接到他们的docs。如果我尝试复制粘贴一个示例,它甚至无法编译(主要是由于某些属性重命名)。这真的没有给使用这个包很大的信心。我最后的办法是直接调用 paypal API,而不使用他们提供的 SDK。

将 paypal 与我在 .Net Core 3.1 上运行的服务器集成的最佳方式是什么?

选项:

  • 使用paypal 2.0.0-rc2
  • 使用PayPalCheckoutSdk
  • 直接调用API

【问题讨论】:

  • 我是一个 REST API,所以你不需要真的需要 SDK。此外,所有支付提供商提供的 SDK 的质量都是……嗯,他们不是在销售软件,是吗? “SDK”通常是从其模式生成的类,带有一些有问题的样板代码。有时,样板来自将 Java 代码迁移到 .NET。例如,现在每个人都应该知道 HttpClient 应该被重用,但 the Paypal SDK creates a new instance for each call。这对于大型电子商务网站来说可能非常糟糕(猜猜我是怎么知道的)
  • 您可以从 SDK 的代码中借用 DTO,然后将它们与您自己的代码一起使用。这将为您节省很多无聊的工作。您可以研究他们的代码以了解身份验证的工作原理。确保您避免像using injectors 这样的“不幸”想法来添加Gzip 标头,只需设置一个DefaultHeader 即可轻松完成!授权注入器也是如此。 PayPalHttpClient 并没有通过简单的 HttpClient 或工厂配置提供任何东西
  • 查看SDK后,它只是一个DTO和一个过于复杂的HttpClient。这些示例适用于 Java 的 HttpClient 类 - .NET 的 HttpClient 没有 exectue 方法。
  • 感谢您的回复。 SDK似乎真的很差。我选择了 API。
  • 如果您正在寻找 ASP.NET Core MVC 和 C# 中 PayPal 支付网关集成的最新解决方案,请查看演示 --> techtolia.com/PayPal - 目标框架:.NET Core – ASP.NET Core 3.1 – 语言:c#

标签: .net-core paypal .net-core-3.1


【解决方案1】:

直接调用 v2/orders API。

服务器端创建:https://developer.paypal.com/docs/api/orders/v2/#orders_create

服务器端捕获:https://developer.paypal.com/docs/api/orders/v2/#orders_capture

按照PayPal Checkout integration 指南,在您的服务器上创建两条路线,一条用于“创建订单”,一条用于“捕获订单”(请参阅​​“添加和修改代码”中的可选步骤 5)。这两个路由都应该只返回 JSON 数据(没有 HTML 或文本)。在第二条路线中,当捕获 API 成功时,您应该将其生成的付款详细信息存储在您的数据库中(特别是 purchase_units[0].payments.captures[0].id,这是 PayPal 交易 ID)并执行任何必要的业务逻辑(例如发送确认电子邮件或预订产品)立即将您的返回 JSON 转发给前端调用者。

将这 2 条路由与前端审批流程配对:https://developer.paypal.com/demo/checkout/#/pattern/server

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-12
    • 1970-01-01
    • 1970-01-01
    • 2017-06-19
    • 2020-07-08
    • 1970-01-01
    • 2013-06-01
    • 2013-02-25
    相关资源
    最近更新 更多