PayPal Express Checkout与IPN集成

时间:2017-10-30 21:17:14

标签: paypal paypal-ipn

我对PayPal Express Checkout和IPN有疑问。互联网上的主题很少,但大多数都很老,并没有完全回答我的问题。

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

  1. 我使用PayPal REST API初始化付款,并获取结帐页面的重定向网址。
  2. 我将客户重定向到结帐页面,客户支付订单费用,然后将其重定向回我的应用程序。
  3. 如果用户付费我会获取信息,如果需要,我需要执行付款。
  4. 问题是 - 如果客户为订单付款,但在重定向到我的应用程序期间出错了怎么办?假设我的应用程序出现停机或互联网连接出现问题。一般来说,我无法执行付款。

    如何处理这种情况?

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

    应如何正确完成?

1 个答案:

答案 0 :(得分:0)

如果您在客户端使用快速结账,则可以指定重定向网址(如果付款有错误或已取消):

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以进行识别和故障排除。

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