Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:如何检查响应代码?_Php_Paypal_Header_Response_Paypal Ipn - Fatal编程技术网

PHP:如何检查响应代码?

PHP:如何检查响应代码?,php,paypal,header,response,paypal-ipn,Php,Paypal,Header,Response,Paypal Ipn,我是一个实现PayPal IPN监听器的PHP新手,除了我不知道如何检查响应代码外,一切似乎都很好 我尝试了一些丑陋的卷曲,但它根本不起作用(我不理解卷曲) 我试过这段代码,是我从网上的某个地方抓到的: $fp = fsockopen('ssl://www.sandbox.paypal.com', 443, $errno, $errstr, 30); $response_headers = get_headers($fp); $response_code = (int)substr($respo

我是一个实现PayPal IPN监听器的PHP新手,除了我不知道如何检查响应代码外,一切似乎都很好

我尝试了一些丑陋的卷曲,但它根本不起作用(我不理解卷曲)

我试过这段代码,是我从网上的某个地方抓到的:

$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\u code=0)

所以现在,我正在调试我的IPN代码,而没有检查响应

有没有更有经验的人能告诉我检查这个的正确/简单方法

谢谢,这是get_头($url),而不是get_头($fp)。除非我读错了(还有我从未见过的其他模式),否则你需要传递你读的URL,而不是套接字句柄。事实上,它显然有它自己的功能,所以对于您当前的任务来说它是无用的

fsockopen(…)是一个较低级别(TCP/IP)函数。它返回套接字句柄,而不是CURL句柄。这就是为什么不能在上面使用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-validate'添加到post字段中


不要使用fsockopen(…)。是的,我知道,贝宝示例代码就是这么做的。但它的目的是在任何地方运行,不能依赖于CURL的安装。你可以,所以使用它。

如果不知道get_headers()函数的作用,这是不可能回答的。它不是我的:)如果你使用的是fsockopen,你必须自己处理整个http请求,上面的代码只打开一个套接字,没有http。。因此,调用get_headers毫无意义。请看fsockopen文档中的示例#1。你的卷发在哪里?@zedoo:我明白了,谢谢。。。有了cURL,我知道我可以用CURLINFO_HTTP_代码获取代码,但我不太明白从PayPal请求中初始化什么/传递什么。当然,响应代码必须与该特定请求相关,而不是新请求。。。我曾尝试以各种方式使用$fp,但我做得不对。zedoo说的是,您已经打开了一个套接字,但实际上还没有发出请求,这当然意味着您将不会收到响应头。=)您可能会在这里找到一些信息:Tested&works:$\u POST应替换为$req(来自就绪的PayPal代码,因此它包含所有需要的参数),+curl\u close($fp);最后。