我是一个相对PHP新手实施PayPal的IPN监听器和一切似乎是工作的罚款,但我真的不知道如何检查响应代码。

我试过的东西丑陋卷曲,但它不会在所有的工作(我不理解卷曲)。

我已经试过这一段代码,我从某处抓起的净:

$fp = fsockopen('ssl://www.sandbox.paypal.com', 443, $errno, $errstr, 30);
$response_headers = get_headers($fp);
$response_code = (int)substr($response_headers[0], 9, 3);

...但它不工作(返回$ RESPONSE_CODE = 0)。

所以现在,我调试我的IPN的代码不检查一个响应200。

任何人都可以更有经验告诉我什么是正确的/简单的方法来检查这个?

由于

有帮助吗?

解决方案

这是get_headers( $网址),不get_headers($ FP)。除非我读它完全错误的(而且有一些其他的方式我从来没见过),你需要通过它,你是从,而不是一个套接字句柄读取URL。其实,这显然不其自身的GET,所以它会是无用的,你当前的任务。

的fsockopen(...)为一个较低的水平(TCP / IP)的功能。它返回一个套接字句柄,不卷曲处理。这就是为什么你可以curl_getinfo(...)就可以不使用。你想这样的事情...

$fp = curl_init('https://www.sandbox.paypal.com/cgi-bin/webscr');
curl_setopt($fp, CURLOPT_POST, true);
curl_setopt($fp, CURLOPT_POSTFIELDS, $_POST);
curl_setopt($fp, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($fp);

$response_code = curl_getinfo($fp, CURLINFO_HTTP_CODE);

除我记得,需要添加“CMD = _notify-验证”到后字段。

不使用的fsockopen(...)。是啊,我知道,这是贝宝示例代码做什么。但是,它的意思是到处跑,而不能依靠安装卷曲。你可以,所以用它。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top