我现在正在尝试使用描述here的客户端REST集成来加快PayPal Express Checkout(即checkout.js)的速度。我看到付款完成后,我的onAuthorize函数会被“付款”对象调用。
我找不到关于这个对象的任何文档,但有些人在讨论它时会发现以下属性(至少在今天):
现在我需要将用户重定向到我网站上的下一步,我会在其中显示确认已付款的收据等。我想我将上述数据发送到服务器,但由于该步骤可能很容易被欺骗恶意用户,我需要在服务器端的PHP代码中验证这些细节。
我该怎么做?
答案 0 :(得分:3)
您可以通过GET
和/v1/payments/payment/PAY-XXXXXX
在服务器端与paymentID
拨打payerID
来获取付款详细信息,并在那里验证这些详细信息。
有关从服务器调用REST api的一些基础知识,请参阅https://developer.paypal.com/docs/api/overview/#make-your-first-call
答案 1 :(得分:1)
假设您使用的是 PayPal Encrypted Buttons ,则实际上 不需要验证通过服务器端发送的金额。虽然用户确实可以操纵$_POST
数据,但PayPal会让您受到保护,并且不会允许该交易通过。这是因为PayPal加密按钮是使用您的变量生成的,例如内置于ID的价格。如果变量与用于创建按钮的变量不对齐,则交易被拒绝。
或者,如果您只是使用自己的代码发出请求,则可以使用PayPal Instant Payment Notification 确保付款。同样,这允许任何 $_POST
数据通过付款发送。之后,PayPal会调用您的IPN页面,以验证参数是否正确。这在以下工作流程中进行了演示:
与您的IPN通信时,如果PayPal发现值不匹配,则订单将被取消。假设值匹配,您可以安全地将它们重定向到确认页面。
希望这有帮助! :)