【问题标题】:How to handle a PayPal Checkout payment when there is a confirmation API error on our server当我们的服务器上出现确认 API 错误时如何处理 PayPal Checkout 付款
【发布时间】:2019-08-10 22:18:56
【问题描述】:

我们正在集成 PayPal 客户端 Checkout 集成,以便在我们的网站上进行付款。可以在这里找到:

https://developer.paypal.com/docs/checkout/integrate/#6-verify-the-transaction

付款完成并由 PayPal 批准后,我们​​需要调用我们的服务器来验证交易并将其存储在我们的数据库中。此代码可以在下面找到,请注意“调用您的服务器以保存事务”部分。

<script>
  paypal.Buttons({
    createOrder: function(data, actions) {
      return actions.order.create({
        purchase_units: [{
          amount: {
            value: '0.01'
          }
        }]
      });
    },
    onApprove: function(data, actions) {
      return actions.order.capture().then(function(details) {
        alert('Transaction completed by ' + details.payer.name.given_name);
        // Call your server to save the transaction
        return fetch('/paypal-transaction-complete', {
          method: 'post',
          body: JSON.stringify({
            orderID: data.orderID
          })
        });
      });
    }
  }).render('#paypal-button-container');
</script>

现在,在上面的例子中,如果调用“/paypal-transaction-complete”失败会发生什么?会话超时或失去互联网连接?例如,在 Stripe 集成中,资金在客户端“批准”,然后仅在我们的 API 中确认/收费到“/stripe-transaction-complete”。如果有错误,我们实际上不会收取费用。

在 PayPal 中,款项是在 API 调用之前收取的,因此我们向用户收费但他们没有在数据库中收到已付款订单的可能性很小。我们将如何最好地处理这个问题?一种选择是调用 PayPal API 并将所有订单与付款匹配,然后自动退款或自动完成订单。但我不确定这是否被推荐。

【问题讨论】:

    标签: paypal paypal-rest-sdk


    【解决方案1】:

    对于 PayPal 和 Stripe Checkout 的类似问题,可以使用 WebHooks 解决。

    https://developer.paypal.com/docs/integration/direct/webhooks/rest-webhooks/#

    【讨论】:

      猜你喜欢
      • 2011-07-02
      • 2017-07-20
      • 2016-03-12
      • 2017-08-18
      • 2016-08-18
      • 2015-11-25
      • 2014-11-18
      • 1970-01-01
      • 2016-08-22
      相关资源
      最近更新 更多