2012-05-11 5 views
1

PayPal의 샌드 박스에서 테스트를 완료하고 프로세스가 완벽하게 작동하면. 나는 그것을 가져 갔고 작동하지 않는다.PayPal IPN 리스너 응답

notify_url을 통해 PayPal에서 POST 데이터를 수신하고 있습니다. 그런 다음 cmd = _notify-validate로 데이터의 infront로 PayPal로 다시 보냅니다.

PayPal에 문서화 된 코드를 사용하여이 메시지를 PayPal로 보내고 있습니다.

HTTP/1.1 200 OK 
Date: Fri, 11 May 2012 20:51:28 GMT 
X-Frame-Options: SAMEORIGIN 
Set-Cookie: cwrClyrK4LoCV1fydGbAxiNL6iG=SdeBuKBN39mjr3w791CHr_MlSkoBdDmbxpQOjT_WOicyD_Sg6BYZm8koiEv2-5XBUkCjpXQwFqIxIQgIyo3e7arO8015CVw96dpne2CNjbgc1CvpDlqXn72IBWq%7cW7uYn6Za7ljG4iLtLVcyFoPk8gZD7sr_S8WjwZrZWD8UXzE7KAH3bll9TVik3wbdCFlrZG%7csxrZZHSH5SWBGfrKsIU6Dz-K43j4h37efIkWFcVJVER0ncRxNJ0wANN1Dp3pZpV2PLxC1m%7c1336769488; domain=.paypal.com; path=/; Secure; HttpOnly 
Set-Cookie: cookie_check=yes; expires=Mon, 09-May-2022 20:51:28 GMT; domain=.paypal.com; path=/; Secure; HttpOnly 
Set-Cookie: navcmd=_notify-validate; domain=.paypal.com; path=/; Secure; HttpOnly 
Set-Cookie: navlns=0.0; expires=Thu, 06-May-2032 20:51:28 GMT; domain=.paypal.com; path=/; Secure; HttpOnly 
Set-Cookie: Apache=10.73.8.50.1336769488653443; path=/; expires=Sun, 04-May-42 20:51:28 GMT 
Vary: Accept-Encoding 
Strict-Transport-Security: max-age=14400 
Connection: close 
Content-Type: text/html; charset=UTF-8 
Set-Cookie: TSe9a623=bb3c8ce40a7f3f6d1c018255c9

내가받지 못했습니다 것은 무효 또는 확인 :

$header .= "POST /cgi-bin/webscr HTTP/1.0\r\n"; 
$header .= "Content-Type: application/x-www-form-urlencoded\r\n"; 
$header .= "Content-Length: " . strlen($req) . "\r\n\r\n"; 
$fp = fsockopen ('ssl://www.paypal.com', 443, $errno, $errstr, 30); 

내가 돌아 얻고

$res = stream_get_contents($fp, 1024); 

응답을 (응답을 얻기 위해이 코드를 사용) 이것에 대한 응답. 이것은 PayPal의 전체 출력물입니다. 샌드 박스에서는 마지막 줄에서 확인 중이며 Set-Cookie는 없습니다.

나는 INVALID 또는 VERIFIED 응답을받지 못하는 것이 이상하게 보입니다.

의견을 보내 주시면 감사하겠습니다.

답변

1

fwrite/fputs를 사용하여 소켓에 요청을 작성 했습니까? 또한 해당 응답의 길이로 판단 할 때 스트림에서 1024 바이트를 초과하여 읽을 필요가있을 수 있습니다. 너무 가까워지고 있습니다.

당신은 루프의 응답을 읽을 수 있습니다 :

$resp = ''; 
while (!feof($fp)) { 
    $resp .= stream_get_contents($fp, 1024); 
} 

그럼 당신은 몸에서 헤더를 분리 할 수 ​​있습니다 사용 : 브릴리언트

list($headers, $response) = explode("\r\n\r\n", 2); 
+0

을! 그것이 문제였습니다. –