php - fsockopen 为贝宝回调返回 null
问题描述
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 服务器
解决方案
: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);
编辑:(现在允许在评论中编辑答案,因为新行)
这段代码的这一部分还有其他内容吗?
- 第二行末尾缺少分号 (;)
- 没有定义 $req。
包含在一个类中的相同代码具有上面建议的 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();
推荐阅读
- html - 按钮根本不起作用,我不明白为什么
- mysql - 编写此 SQL 查询的更好方法是什么?
- deep-learning - 两个相似图像卷积神经网络的不同结果
- gradle - 带有 java-test-fixtures 的 Gradle 平台
- java - NetBeans 12.0、Java 8、自动完成/代码辅助完全停止工作
- docker - .Net Core Web API Docker (Linux) - 无法加载 libMyCpp.so 文件
- fortran - Fortran 临时文件
- python - Python openpyxl空白单元格条件格式
- javascript - React 类组件的函数内部的 SetState
- android - 当我从一个菜单移动到另一个菜单并返回时,Leanback android Tv 中的 BrowseSupportFragment 会调用服务器