代码之家  ›  专栏  ›  技术社区  ›  Tom

如何检查响应代码?

  •  0
  • Tom  · 技术社区  · 15 年前

    我是一个相对的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。

    有经验的人能告诉我什么是正确/简单的检查方法吗?

    谢谢

    1 回复  |  直到 15 年前
        1
  •  2
  •   cHao    15 年前

    它有头( $URL ,而不是获取头($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=\u notify-validate”添加到post字段中。

    不要使用fsockopen(…)。是的,我知道,这就是PayPal示例代码所做的。但它的目的是跑在任何地方,不能依赖于卷曲被安装。你可以,所以使用它。

    推荐文章