我正在使用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课程中获取灵感搜索,但所有网站都在谈论接收付款,而不是付款。
答案 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个单一重定向。我希望它对其他人有用。