1

我正在尝试将一些详细信息发布到 mygate 支付网关。如果我使用普通表单并发布到 url,它会为该特定会话生成一个令牌 ID,并在内部将页面重定向到详细信息捕获页面。

当我使用 curl 执行此操作时,我收到一条成功消息,但我无法获得所需的页面。

是否可以使用 curl 在新选项卡中加载相同的页面,我怀疑这会以某种方式帮助我。

任何其他解决方案也将不胜感激。

我试过的代码是:

    //open connection
    $ch = curl_init();

    //set the url, number of POST vars, POST data
    curl_setopt($ch,CURLOPT_URL, $url);
    curl_setopt($ch,CURLOPT_POST, count($fields));
    curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);

    curl_setopt($ch, CURLOPT_VERBOSE, true);
    curl_setopt($ch, CURLOPT_SSLVERSION, 3);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,0);

    //turning off the server and peer verification(TrustManager Concept).
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,  2);       


    $result = curl_exec($ch);

    if(!$result)
    {
        echo curl_error($ch);
    }
    else
    {
        echo $result;
    }

    //close connection
    curl_close($ch);

提前致谢!

4

1 回答 1

1

由于它成功重定向到页面,因此您可以获得重定向 url 的位置。

您可以通过设置一些 curl 选项来获取重定向 URL。

curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$a = curl_exec($ch);
if(preg_match('#Location: (.*)#', $a, $r))
 $l = trim($r[1]);

$l将是重定向位置。您可以获取 url 并将您的页面重定向到该位置。

$r 将包含一个带有位置 url 的数组。

于 2013-04-12T10:42:32.563 回答