Я помещаю paypal checkout на свой сайт, но я падаю со слушателем. Для тех из вас, кто не знаком с системой IPN Paypal, в основном Paypal отправляет ваш script сообщение о транзакции, которую вы отправляете обратно с добавлением нескольких добавленных битов. Если Paypal получит правильный ответ, он ответит "VERIFIED", и если нет, он скажет "INVALID".
Мне удалось с первым битом. Мой код может получать информацию от PayPal, добавлять дополнительные данные и отправлять их обратно. Тем не менее, я не получаю ответа от Sandbox, говорящего "VERIFIED" или "INVALID". Я в значительной степени скопировал свой код с веб-сайта paypal, поэтому я надеялся, что это будет довольно просто, поэтому, если вы могли бы потратить минуту на мой код, возможно, некоторые новые глаза могли бы выбрать, где я ошибся.
Вот код. Ничего особенного, он буквально просто получает информацию, настраивает ее, передает ее и читает ответ (который он либо не получает, либо не понимает, что получает)
<?php
$debug=true;
//Put together postback info
$postback = 'cmd=_notify-validate';
foreach($_POST as $key =>$value){
$postback .= "&$key=$value";
}
// build the header string to post back to PayPal system to validate
$header = "POST /cgi-bin/webscr HTTP/1.1\r\n";
$header .= "Host: www.sandbox.paypal.com\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Content-Length: " . strlen($postback) . "\r\n\r\n";
$fp = fsockopen ('www.sandbox.paypal.com', 80, $errno, $errstr, 30);//open the connection
if(!$fp){ //no conn
die();
}
//post data back
fputs($fp, $header . $postback);
while(!feof($fp)){
$res=fgets ($fp, 1024);
if((strcmp($res, "VERIFIED")) == 0){ //verified!
if($debug){
$filename = 'debug/debug5_verified.txt'; //create a file telling me we're verified
$filehandle=fopen($filename, 'w');
fwrite($filehandle,'VERIFIED!');
fclose($filehandle);
}
}
}
?>
Спасибо заранее!