提问人:amit 提问时间:9/4/2017 更新时间:6/4/2018 访问量:1669
服务器如何知道付款确实是通过PayPal客户端REST API进行的?
How can a server know a payment was truly made via PayPal client side REST API?
问:
我正在寻找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 发布请求的结果?
答:
你的想法是正确的,服务器无法知道是否真的进行了付款。此客户端 API 用于捐赠等,无需向任何服务器发出请求。然后,可以使用客户端回调来显示“谢谢”便条或与用户类似的便条。
对于大多数情况(如在线商店等),您将需要使用服务器 API。这样,PayPal服务器将向您的服务器发送请求,因此您可以验证它确实是真实的付款确认。
在您可以调用服务器并让它拨打电话以验证付款是否已完成之后: https://developer.paypal.com/docs/integration/direct/express-checkout/integration-jsv4/advanced-payments-api/show-payment-details/actions.payment.execute()
GET
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 将调用您的网址,并提供交易详细信息,包括唯一参考。将详细信息记录在数据库中。例如
我的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
});
服务器端确认
确认引用在两个表中,并且金额匹配
上一个:客户端渲染
下一个:具有客户端脚本的动态站点
评论