fsockopen 为 paypal 回调返回 null
fsockopen is returning null for paypal callback
Whosebug中有很多类似这个话题的问题,我都试过了,但都没有用。这可能是我的服务器配置或其他问题,所以如果有人有任何线索,请发布。
这是我的代码:-
$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 returns 空。我的 OpenSSL 版本是:OpenSSL 1.0.1i 2014 年 8 月 6 日
我有 windows IIS 服务器
您可以尝试从 $this->gateway['callback_url']
中删除端口号 :443
吗?
$this->gateway['callback_url'] = 'ssl://ipnpb.paypal.com';
端口 443
已在 fsockopen
函数调用中传递。
$fp= fsockopen($this->gateway['callback_url'], 443, $error_no, $error_msg, 60);
编辑:(编辑答案,因为现在评论中允许换行)
这部分代码还有其他内容吗?
- 第二行末尾缺少分号 (;)
- 没有定义 $req。
包含在 class 中的相同代码以及上面建议的 3 处更改对我有用。
(returns 流类型的资源)
<?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();
Whosebug中有很多类似这个话题的问题,我都试过了,但都没有用。这可能是我的服务器配置或其他问题,所以如果有人有任何线索,请发布。
这是我的代码:-
$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 returns 空。我的 OpenSSL 版本是:OpenSSL 1.0.1i 2014 年 8 月 6 日
我有 windows IIS 服务器
您可以尝试从 $this->gateway['callback_url']
中删除端口号 :443
吗?
$this->gateway['callback_url'] = 'ssl://ipnpb.paypal.com';
端口 443
已在 fsockopen
函数调用中传递。
$fp= fsockopen($this->gateway['callback_url'], 443, $error_no, $error_msg, 60);
编辑:(编辑答案,因为现在评论中允许换行)
这部分代码还有其他内容吗?
- 第二行末尾缺少分号 (;)
- 没有定义 $req。
包含在 class 中的相同代码以及上面建议的 3 处更改对我有用。 (returns 流类型的资源)
<?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();