본문으로 바로가기
paypal 결재 모듈이 얼마전에 1.0에서 1.1로 업데이트를 하면서 포스트로 넘겨 받는 방법이 달라졌다고 한다. 

그래서 1.1로 바꾸면서 수정했던 참고 소스코드는 다음과 같다

$req = 'cmd=_notify-validate';
$r='';

foreach ($_POST as $key => $value) {
	$value = urlencode(stripslashes($value));
	$req .= "&$key=$value";
	$r.="{$key}: {$value}\n";
}

// post back to PayPal system to validate
$header .= "POST /cgi-bin/webscr HTTP/1.1\r\n"; //1.1로 바꿈
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Host: www.paypal.com\r\n";
$header .= "Content-Length: " . strlen($req) . "\r\n";
$header .= "Connection: close\r\n\r\n";
$fp = fsockopen ('ssl://www.paypal.com', 443, $errno, $errstr, 30); //ssl로 연결

if (!$fp) {
	$r.="----\nHTTP ERROR\n";
	// HTTP ERROR
} else {

$r.="----\nReceived IPN request\n";

fputs ($fp, $header . $req);

while (!feof($fp)) {
	$res = fgets ($fp, 1024);
}
fclose ($fp);

if (strcmp (trim($res), 'VERIFIED') == 0) {

$proceed=TRUE;

} else{
	$proceed=FALSE;
}
참고 사이트 : http://stackoverflow.com/questions/12480794/paypal-ipn-http-1-1-doesnt-provide-any-response-at-all-it-is-an-empty-string