stackoverflow中有很多与此主题类似的问题,我已经尝试了每个问题,但无济于事。这可能是我的服务器配置或其他内容,因此,如果有人有任何提示,请发布。
这是我的代码:-
$this->gateway['submit_url'] = 'https://www.paypal.com/cgi-bin/webscr';
$this->gateway['callback_url'] = 'ssl://ipnpb.paypal.com:443';
//headers
$header = "POST /cgi-bin/webscr HTTP/1.1\r\n";
$header .= "Host www.ipnpb.paypal.com\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Content-Length: ".strlen($req)."\r\n\r\n";
$fp= fsockopen($this->gateway['callback_url'], 443, $error_no, $error_msg, 60);
$ req在代码的上方定义。
此处fp返回null。我的OpenSSL版本是:OpenSSL 1.0.1i 2014年8月6日
我有Windows IIS服务器
答案 0 :(得分:0)
您可以尝试从:443
删除端口号$this->gateway['callback_url']
吗?
$this->gateway['callback_url'] = 'ssl://ipnpb.paypal.com';
端口443
已在fsockopen
函数调用中传递。
$fp= fsockopen($this->gateway['callback_url'], 443, $error_no, $error_msg, 60);
编辑 :(由于答案中的新行现在可以编辑答案)
此代码这一部分还有其他内容吗?
相同的代码封装在一个类中,上面建议的3个更改对我来说是有效的。 (返回流类型的资源)
<?php
class abc {
public $gateway;
public function __construct() {
$req = 'ABCD';
$this->gateway['submit_url'] = 'https://www.paypal.com/cgi-bin/webscr';
$this->gateway['callback_url'] = 'ssl://ipnpb.paypal.com';
//headers
$header = "POST /cgi-bin/webscr HTTP/1.1\r\n";
$header .= "Host www.ipnpb.paypal.com\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Content-Length: ".strlen($req)."\r\n\r\n";
$fp= fsockopen($this->gateway['callback_url'], 443, $error_no, $error_msg, 60);
var_dump($fp);
}
}
$a = new abc();