我正在拦截从我的论坛网站点击的PayPal按钮(没有PHP功能)所以我可以使用自己的服务器(确实有PHP)处理额外的安全信息。
完成处理后,我希望将用户的请求数据发回给PayPal。目前我只是在Location头中使用了一个相当大的GET查询字符串,因为没有敏感数据被发送。这完全没问题。
我希望纯粹使用POST,因此它不会通过垃圾邮件向用户的地址栏发送垃圾邮件。我听说你可以使用cURL,但这对于与PayPal的HTTPS连接是一个非常好的主意吗?
任何建议表示赞赏。
答案 0 :(得分: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
可能很棘手