【问题标题】:PayPal Express Checkout integrated with IPN与 IPN 集成的 PayPal Express Checkout
【发布时间】:2018-04-11 23:12:08
【问题描述】:

我有一个关于 PayPal Express Checkout 和 IPN 的问题。 Internet 上的主题很少,但大多数都比较老旧,无法准确回答我的问题。

我正在使用服务器端 REST API。我们可以发现here PayPal Express Checkout 工作流程如下:

  1. 我使用 PayPal REST API 初始化付款并获得重定向 url 到结帐页面。
  2. 我将客户重定向到结帐页面,客户为订单付款,然后他被重定向回我的应用程序。
  3. 如果用户付款,我会获取信息,如果是,我需要执行付款。

问题是 - 如果客户为订单付款,但在重定向回我的应用程序时出现问题怎么办?假设我的应用程序停机或互联网连接出现问题。通常我无法执行付款。

这种情况如何处理?

我的第一个想法是也使用 PayPal IPN 并监听每次付款更改。另一方面,使用 IPN,我需要实施附加机制,以确保我只执行使用上述基本工作流程未正确执行的付款。它变得相当复杂。此外,IPN 的文档真的很“薄弱”,所以我宁愿不要碰这个 PayPal 服务。

应该如何正确完成?

【问题讨论】:

  • 仅供参考,REST API 使用 Webhooks 而不是 IPN。
  • @AndrewAngell 好的,谢谢。你一般怎么看?我应该使用那些 Webhooks 吗?
  • 好吧,我个人的看法是,如果您遇到连接问题、超时或其他任何会导致从 PayPal 返回失败的问题,那么您需要修复该问题,而不是尝试重新加载并在失败。

标签: paypal paypal-ipn


【解决方案1】:

如果您在客户端使用 Express Checkout,您可以在付款出错或被取消时指定重定向网址:

payment: function(data, actions) {
        return actions.payment.create({
              payment: {                        
                        transactions: [
                           {
                                amount: { total: "$0.01", currency: "USD" }
                           }
                        ],

                                redirect_urls: {
                                   "return_url": "/path...",
                                   "cancel_url": "/path..." 
                                }
               }
          });

},

在我支持的应用程序中,我们使用从 PayPal 返回的 data.payer.payer_info 来处理订单,这有助于在 PayPal 交易首先失败时防止交易发生。我们还记录 PayPal 交易 ID 用于识别和故障排除。

当然,如果您的应用程序出现故障或存在连接问题,这将无济于事。

【讨论】:

  • 感谢回复,但正如您所注意到的,这对我的具体情况没有帮助:)
猜你喜欢
  • 2014-02-27
  • 2017-02-08
  • 1970-01-01
  • 2016-07-14
  • 1970-01-01
  • 2017-08-21
  • 2012-10-10
  • 2013-06-05
  • 1970-01-01
相关资源
最近更新 更多