2017-10-12 155 views
0

我刚刚试图通过使用描述为here的客户端REST集成来加快PayPal Express Checkout(即checkout.js)的速度。我看到付款完成后,我的onAuthorize函数会与“付款”对象一起被调用。如何验证服务器上的PayPal Express Checkout详细信息?

我找不到这个对象上的任何文件,但(至少目前)一些戳它揭示了以下属性:

  • paymentToken
  • payerID
  • paymentID
  • 意图
  • returnUrl

现在我需要将用户重定向到我网站上的下一步,在那里显示收据确认他们已付款等。我想我会将上述数据发送到服务器,但由于该步骤可能很容易被恶意用户欺骗,所以我会需要在PHP代码,服务器端验证这些细节。

我该怎么做?

回答

2

你可以让你的服务器端GET调用/v1/payments/payment/PAY-XXXXXXpaymentIDpayerID得到付款细节,并确认这些细节那里。

https://developer.paypal.com/docs/integration/direct/express-checkout/integration-jsv4/advanced-payments-api/show-payment-details/

https://developer.paypal.com/docs/api/overview/#make-your-first-call一些基础知识从你的服务器

+0

听起来就像我需要的。只要有机会尝试一下,我会将其标记为公认的答案。 –

+0

确认,作品像魅力!感谢您指点我正确的方向。 –

0

假设你正在使用PayPal Encrypted Buttons,你实际上并不需要通过验证服务器端发送的数量。尽管用户确实可以操纵$_POST数据,但PayPal已经涵盖了您,并且不允许交易完成。这是因为PayPal加密按钮是通过您的变量生成的,例如ID内置的价格。如果变量与用于创建按钮的变量不一致,则交易被拒绝。

或者,如果您只是使用自己的代码发出请求,则可以使用贝宝的Instant Payment Notification来确保付款安全。同样,这允许将的任何$_POST数据通过付款发送。之后,PayPal会打电话给您的IPN页面以验证参数是否正确。这表现在以下工作流程:

IPN Flow

当您的IPN沟通,如果贝宝认为,该值不匹配,订单将被取消。假设这些值匹配,您可以安全地将它们重定向到您的确认页面。

希望这会有所帮助! :)

+0

调用REST API我觉得我一直不清楚。我没有使用“经典”API;我使用checkout.js(版本4)提供的客户端集成_new_Express Checkout,如下所述:https://developer.paypal。com/docs/integration/direct/express-checkout/integration-jsv4/client-side-REST-integration /除非我比我想象的更困惑,否则我不认为上述建议适用于这种情况。 –

相关问题