2014-11-23 4 views
1

Я могу получить ПРОВЕРЕННЫЙ ответ от PayPal, используя IPN Я получаю данные POST от PayPal через notify_url. Затем я отправляю его обратно в PayPal с помощью cmd = _notify-validate infront данных.Paypal: проблема с ответом ipn

Использование PayPals документированы код, я использую это, чтобы отправить сообщение PayPal

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

Затем я использую этот

if (!$fp) { 
    // HTTP ERROR; 
} else { 
    var_dump(fputs($fp, $header . $req)); 
    while (!feof($fp)) { 
     $res = stream_get_contents($fp, 1024); 
     if (strcmp ($res, "VERIFIED") == 0) { 
      //Transaction verified 
     } 
    } 
} 

На самом деле у меня есть два $ рес (из-за время петля). Первый не кажется, представляют интерес, а второй

55 GMT 
Connection: close 
Set-Cookie: X-PP-SILOVER=name%3DSANDBOX3.WEB.1%26silo_version%3D880%26app%3Dslingshot%26TIME%3D1273590100; domain=.paypal.com; path=/; Secure; HttpOnly 
Set-Cookie: X-PP-SILOVER=; Expires=Thu, 01 Jan 1970 00:00:01 GMT 
Set-Cookie: Apache=10.72.128.11.1416751435364358; path=/; expires=Tue, 15-Nov-44 14:03:55 GMT 
Vary: Accept-Encoding 
Strict-Transport-Security: max-age=14400 
Transfer-Encoding: chunked 
Content-Type: text/html; charset=UTF-8 

8 
VERIFIED 
0 

кажется, что первая часть заголовка и вторая часть (8 ВЕРИФИЦИРОВАННЫХ 0) реальный ответ, но почему у меня это 0 и 8? Обычно люди используют

if (strcmp ($res, "VERIFIED") == 0) { 

Чтобы проверить, что $ УЭ ВЕРИФИЦИРОВАННОЙ ... Так я могу считать, что ответ «ПРОВЕРЕНО», используя что-то вроде

if(strstr($res,'VERIFIED')) { 

Некоторую помощь, пожалуйста?!?

Thanks

ответ

0

У меня такая же проблема, как и у вас. И я использую strstr ($ res, «VERIFIED»), чтобы проверить, проверено ли уведомление.

1

У меня была такая же проблема, и я смог решить ее таким же образом. Если я использую образец кода из PayPal, я не получаю никакого ответа.

Но я столкнулся с чем-то, что работает с использованием cURL здесь: https://github.com/paypal/ipn-code-samples/blob/master/paypal_ipn.php.

мне нужно установить Curl, используя следующие инструкции: curl_init() function not working

А также скачать и использовать cacert.pem найденный в комментариях сценария.

Я все еще не уверен, почему stream_get_contents() возвращает заголовки. Если вы это поняли, можете ли вы это обновить?