PHP:如何检查响应代码?
-
27-09-2019 - |
题
我是一个相对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(...)。是啊,我知道,这是贝宝示例代码做什么。但是,它的意思是到处跑,而不能依靠安装卷曲。你可以,所以用它。
不隶属于 StackOverflow