与 IPN 集成的 PayPal Express Checkout

Posted

技术标签:

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

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

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

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

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

这种情况如何处理?

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

应该如何正确完成?

【问题讨论】:

仅供参考,REST API 使用 Webhooks 而不是 IPN。 @AndrewAngell 好的,谢谢。你一般怎么看?我应该使用那些 Webhooks 吗? 好吧,我个人的看法是,如果您遇到连接问题、超时或其他任何会导致从 PayPal 返回失败的问题,那么您需要修复该问题,而不是尝试重新加载并在失败。 【参考方案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 用于识别和故障排除。

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

【讨论】:

感谢回复,但正如您所注意到的,这对我的具体情况没有帮助:)

以上是关于与 IPN 集成的 PayPal Express Checkout的主要内容,如果未能解决你的问题,请参考以下文章

将 Paypal IPN 与 Django 集成

Paypal Ipn 与 asp.net MVC 的集成

如何为 PayPal Express Checkout 配置 IPN?

magento中paypal express结账的ipn url是啥

将 Paypal 的 IPN 变量与后端变量匹配

Paypal IPN 订阅协议