服务器如何知道通过PayPal客户端端REST API真正进行了付款?

3

我正在查看 PayPal 互动集成演示链接

在用户完成支付流程后的某个时刻,客户端会触发此代码:

 // onAuthorize() is called when the buyer approves the payment
            onAuthorize: function(data, actions) {

                // Make a call to the REST api to execute the payment
                return actions.payment.execute().then(function() {
                    window.alert('Payment Complete!');
                });
            }

在实际场景中,我可能不想只是弹出一个警告,而是希望向服务器发送指令以发货或更新用户计划。这通常会通过HTTP POST请求完成。
那么服务器如何知道确实有付款,并且这不是黑客手动发送http post请求的结果呢?
3个回答

3

1
你的想法是正确的,服务器无法知道支付是否已经完成。这个客户端API适用于像捐赠之类的事情,不需要向任何服务器发送请求。然后可以使用客户端回调来向用户显示“感谢”或类似的内容。
对于大多数情况(如在线商店等),您将希望使用服务器API。这样,PayPal服务器会向您的服务器发送请求,以便您可以验证它确实是真实的付款确认。

1

1)在您的数据库中生成一个包含付款细节的唯一参考服务器。例如:

我的Paypal参考表

| 金额:$1.00 | 参考:ECHI5786786 |

2)在执行付款之前,在您的交易对象中传递付款参考。

"transactions": [
 {
  "amount": {
    "total": "1.99",
    "currency": "USD"
  },
  "soft_descriptor": "ECHI5786786" //this is your unique reference
]

3) 在PayPal应用程序配置中,在开发人员网站上,为“付款销售完成”设置一个Webhook到您的服务器。PayPal将使用交易详细信息(包括唯一参考)调用您的URL。记录详细信息到您的数据库。例如:

我的PayPal确认已完成支付表

| 支付金额:$1.00 | 参考:ECHI5786786 |

4) 当PayPal在客户端确认付款完成时,向您的服务器发送请求以确认付款详细信息。

// Make a call to the REST api to execute the payment
return actions.payment.execute().then(function() {
  //ajax to your server here with "soft_descriptor"
  //if ajax success, then all good
});

服务器端确认

确认参考文献在两个表格中都存在,并且金额匹配。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接