1

我正在从我的论坛网站(没有 PHP 功能)拦截 PayPal 按钮点击,因此我可以使用我自己的服务器(确实有 PHP)处理额外的安全信息。

完成处理后,我希望将用户连同他们的请求数据发送回 PayPal。目前我只是在 Location 标头中使用相当大的 GET 查询字符串,因为没有发送敏感数据。这工作得很好。

我希望纯粹使用 POST,这样它就不会向用户的地址栏发送垃圾邮件。我听说您可以为此使用 cURL,但是对于与 PayPal 的 HTTPS 连接,这真的是一个好主意吗?

任何建议表示赞赏。

4

1 回答 1

1

那么你可以使用CURL

/* Some params you wish to send */
$sEncodedParams = 'foo=Bar%20Baz&key=1234';

/* Create a new CURL Object */
$ch = curl_init();

/* Set the URL */
curl_setopt($ch, CURLOPT_URL, $sUrl);

/* Make CURL use POST */
curl_setopt($ch, CURLOPT_POST, true);

/* Add the POST-Data */
curl_setopt($ch, CURLOPT_POSTFIELDS, $sEncodedParams);

/* SET the Headers */
curl_setopt($ch, CURLOPT_HEADER, 0);

/* Execute the request */
curl_exec($ch);

/* Close CURL */
curl_close($ch);

您甚至可以使用类似这样的方法将响应返回到变量中

/* Tell CURL to return the response into a variable instead of echoing it */
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

/* Save the response */
$sResponse = curl_exec($ch);

希望这可以帮助

问候

编辑:除了 SSL 支持(没有CURL):

/* Timeout */
$iTimeout = 30;

/* EOL style */
$sEOL = "\r\n";

/* Some params you wish to send */
$sEncodedParams = 'foo=Bar%20Baz&key=1234';

/* Initialize the SSL-Socket */
$rSSLSocket = @fsockopen("ssl://www.domain.com", 443, $iError, $sError, $iTimeout);

/* Will contain the response data */
$sResponse = '';

/* If it worked */
if($rSSLSocket !== false) {

    /* Put whatever you need here */
    fputs($rSSLSocket, 'POST /path/here HTTP/1.0' . $sEOL);
    fputs($rSSLSocket, 'Host: www.domain.com' . $sEOL);
    fputs($rSSLSocket, 'Content-type: application/x-www-form-urlencoded' . $sEOL);
    fputs($rSSLSocket, 'Content-Length: ' . strlen($sEncodedParams) . $sEOL);
    fputs($rSSLSocket, 'Connection: close' . $sEOL . $sEOL);
    fputs($rSSLSocket, $sEncodedParams);

    while(!feof($rSSLSocket)) {
        $sResponse .= @fgets($rSSLSocket, 2048);
    }
    fclose($rSSLSocket);
} else {
    // ERROR
}

我希望这有帮助。但要小心,因为fsockopen可能很棘手

于 2012-06-18T08:30:37.967 回答