使用CURL - 发送POST请求并进行重定向帮助

3

我已经苦思冥想了几个小时了,可能是我错过了一些非常明显的东西!

我正在尝试使用CURL连接到一个支付服务提供商(PSP),通过POST数据并跟随POST,以便用户最终进入PSP的站点。

使用以下内容:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://psp.com/theirpage');
curl_setopt($ch, CURLOPT_REFERER,  "http://mysite.com/mypage");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$params);
curl_setopt($ch, CURLOPT_POST, 1);
$result=curl_exec($ch);
curl_close($ch);

这个代码成功地连接并验证了我传递的数据,但是它没有将用户重定向到PSP,而只是在我的网站上加载HTML。安全模式已关闭,open_basedir为空。
我做错了什么?

你期望发生什么类型的重定向?他们发出的标题重定向只会被curl看到(并跟随),而不是您用户的浏览器。 - Pekka
我认为curl读取HTML页面内容,你需要寻找任何替代方案。 - praneeth
如果他们提供API,您应该考虑使用它。 - Vamsi Krishna B
谢谢大家 - 起初我也认为是这样,但“followlocation”选项让我感到困惑! - Kevin
2个回答

0

CURL 会执行内部重定向,对于查看您的 CURL 脚本的用户没有任何影响。请记住,付款是由您的服务器而不是用户的计算机进行的,因此期望会话对用户起作用是不正确的。cURL“就是浏览器”。

如果您只想在通过 cURL 进行付款后重定向,则必须通过 header() 或使用一些 JS,如 window.location 来完成。


0

curl请求是从您的服务器发出的,因此您的服务器正在接收响应页面。无法从服务器启动请求并使客户端接收响应。要么从您的站点向用户返回HTML(就像您正在做的那样),要么使用JavaScript从客户端浏览器发出请求。希望这有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接