我尝试使用$_SERVER,但对我而言不起作用。

我需要的是:

为了访问我网站上的页面,用户必须从Paypal回来。如果他没有从Paypal重定向到我的网站,则不要执行文件,而是给用户一个错误。

我怎样才能做到这一点?

我尝试了以下方法:

 $url = 'paypal';
 if(strstr($_SERVER['HTTP_REFERER'], $url)) {
     // my code
 } else {
    // my error
 }


这对我不起作用,我如何才能完成这项工作,来自贝宝的示例链接是(很长):

https://www.paypal.com/us/cgi-bin/webscr?cmd=_flow&SESSION=39QzTUoR0GugSwdZjeJ5zf4EkFIa2-rlRsdrqxfx4O3ibIMuzY3Eab7y6Dq&dispatch=5885d80a13c0db1f8e263663d3faee8dc60d77e6184470d515cedf52660ea0cd


请帮助,这是我正在从事的工作的安全利用。

最佳答案

您不能可靠地保证。通常,在这些情况下,您可以使用支付网关进行服务器端检查,以查看交易ID(或传递回给您的任何内容)是否有效,以及金额是否已成功支付。

您应该考虑签出PayPal的Instant Payment Notification服务,并为此实现一个侦听器。贝宝(PayPal)为some sample code提供了多种语言。这是IPN协议的简要概述:


贝宝向您的IPN侦听器发送一条消息,通知您该事件(例如,收到的付款)。
您的听众会将完整的未更改消息发送回PayPal;邮件必须包含相同顺序的相同字段,并且必须以与原始邮件相同的方式进行编码。
PayPal发回一个单词,如果消息是由PayPal发出的,则返回VERIFIED;如果与原始发送的消息存在差异,则返回INVALID
验证IPN后,您可以使用@cHao suggested in the other answer解锁用户付费的功能/选项。


进一步阅读:


PayPal Integration Center: Introducing IPN

关于php - 如果用户不是从这里来的,则不进行处理-如何?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4059409/

10-16 15:52