PHP + curl捕获POST响应

时间:2014-05-20 21:05:11

标签: php post curl

我正在使用PHP + curl脚本通过着名的PP支付gw付款(不要收到)。

我可以在外部网站(不是我的网站)上填写购物车并登录付款(快速结账)。登录后,我看到按钮"继续",提交POST表单。

我能够发送请求的参数,但我无法检索回复中包含的回调网址,因此我无法前往那里。我想我错过了由js:fso和fsi生成的2个参数。

我按照手动程序(Firebug / NET面板/ POST数据)进行操作,我可以确认回调网址是否存在。在我的代码的最后一部分之后,感谢您的帮助。

#CURL SETUP
$session = curl_init();
curl_setopt($session, CURLOPT_HEADER, 1);
curl_setopt($session, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt($session, CURLOPT_HTTPGET, 1 );

#MY CURL OPERATION
curl_setopt($session, CURLOPT_URL, $website);
curl_setopt($session, CURLOPT_POST, 1 );
curl_setopt($session, CURLOPT_POSTFIELDS, $postfields );
curl_setopt($session, CURLOPT_DNS_USE_GLOBAL_CACHE, false );
curl_setopt($session, CURLOPT_DNS_CACHE_TIMEOUT, 2 );
curl_setopt($session, CURLOPT_COOKIEJAR, $cookie );
curl_setopt($session, CURLOPT_COOKIEFILE, $cookie );
curl_setopt($session, CURLOPT_FOLLOWLOCATION, true ); //needed for 302
$output = curl_exec($session);
print_r($output);

我尝试从预制的PHP课程中获取灵感搜索,但所有网站都在谈论接收付款,而不是付款。

2 个答案:

答案 0 :(得分:0)

您需要设置CURLOPT_RETURNTRANSFER以返回curl_exec()的值(响应),而不是直接输出:

curl_setopt($session, CURLOPT_RETURNTRANSFER, true );

答案 1 :(得分:0)

我自己做了

ON CURL设置:

//suppress 100 continue curl bug
curl_setopt($session, CURLOPT_HTTPHEADER, array('Expect:') );

curl_exec之后

$lastUrl = curl_getinfo($session, CURLINFO_EFFECTIVE_URL);
$redirs = curl_getinfo($session, CURLINFO_REDIRECT_COUNT);

让我们打印出结果

echo "LAST URL<br><pre>".$lastUrl."</pre>";
echo "NUMBER OF REDIRS<br><pre>".$output."</pre>";
echo "LAST URL<br><pre>".$output."</pre>";
die();

每个标题都包含所有卷曲段落,请记住您在任何调试器中看到的步骤(safari web inspector,firebug等),例如

- 302 Found
- 302 Moved Temporarily

代表1个单一重定向。我希望它对其他人有用。