这是我的代码:
// post back to PayPal system to validate
$header .= "POST cgi-bin/webscr HTTP/1.1\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .="Host: www.paypal.com\r\n";
$header .= "Content-Length: " . strlen($req) . "\r\n\r\n";
$header .="Connection: close\r\n\r\n";
$fp = fsockopen ('ssl://www.paypal.com', 443, $errno, $errstr, 30);
if (!$fp) { // HTTP ERROR
echo 'HTTP ERROR';
} else {
fputs ($fp, $header . $req);
while (!feof($fp)) { $res = fgets ($fp, 2048); }
if (strpos ($res), "VERIFIED") !== false) {
switch ($transaction_type) {
case "subscr_payment":
if ($payment_status == "Completed" &&strtolower($receiver_email) == strtolower($receiverEmail)&&$currency=$payment_currency)
之前我曾尝试在此行中输入trim
语句:
if (strpos ($res, "VERIFIED") !== false)
我把它改为:
if (strcmp (trim($res), 'VERIFIED') == 0)
答案 0 :(得分:2)
你的'连接:关闭'标题(以\r\n
结尾)后面是一个空白行(即另一个\r\n
),是最后一个标题,但前一个标题也是如此('内容长度“)。所以'Connection:close'标题被视为有效载荷的一部分。从上一个标题中删除空白行,即将倒数第二个\r\n\r\n
更改为\r\n
。事实上,我会更改它们,并在最后一个标题之后添加另一个\r\n
的打印件,所以你不会再这样打破它。