PHP IP-обработка Paypal не будет работать

Я такой новый в области электронной коммерции, и я разработал с использованием PHP систему биллинга, основанную на https://github.com/smhack/Ticket , и все работает отлично, а работа с оплатой (PayPal Shopping Cart) и т. Д. … (Я использую Песочницу PayPal)

Я тестировал свой IPN на симуляторе IPN, и он работает, однако в моем проекте я не могу понять, почему PHP-код в IPN не рассматривается (вставка в базу данных, отправка почты подтверждения)

HTML:

<form name="_xclick" action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post"> <input type="hidden" name="cmd" value="_xclick"> <input type="hidden" name="business" value="m.bendriss-facilitator@gpayme.com"> <input type="hidden" name="currency_code" value="USD"> <input type="hidden" name="item_name" value="<?php echo $classTitle;?>"> <input type="hidden" name="item_number" value="Class"> <input type="hidden" name="custom" value="<?php echo $id;?>"> <input type="hidden" name="amount" value="<?php echo $price;?>"> <input type="hidden" name="return" value="http://www.croisentoi.com/ticket/"> <input type="hidden" name="notify_url" value="http://www.croisentoi.com/ticket/ipn.php"> <input type="image" src="http://img.ruphp.com/php/btn_buynow_LG.gif" border="0" name="submit" alt="Make payments with PayPal - it's fast, free and secure!"> </form> 

ipn.php:

 <?php include('ipnlistener.php'); include("config.php"); if($sqlTicketservertype = 'mysql'){ $db = new PDO('mysql:host='.$sqlTicketserver.';dbname='.$sqlTicketdbname, $sqlTicketusername, $sqlTicketpassword); } // tell PHP to log errors to ipn_errors.log in this directory ini_set('log_errors', true); ini_set('error_log', dirname(__FILE__).'/ipn_errors.log'); $listener = new IpnListener(); $listener->use_sandbox = true; try { $verified = $listener->processIpn(); } catch (Exception $e) { // fatal error trying to process IPN. error_log($e->getMessage()); exit(0); } if ($verified) { // IPN response was "VERIFIED" $email = $_POST['payer_email']; $txn = $_POST['txn_id']; $firstName = $_POST['first_name']; $lastName = $_POST['last_name']; $paymentDate = $_POST['payment_date']; $query = $db->PREPARE("INSERT INTO tickets ( email, txn, firstName, lastName, paymentDate ) VALUES ( '$email', '$txn', '$firstName', '$lastName', '$paymentDate' )"); $query->execute(); mail('bendrissmehdi@gmail.com', 'Valid IPN', $listener->getTextReport()); } else { // IPN response was "INVALID" mail('bendrissmehdi@gmail.com', 'Invalid IPN', $listener->getTextReport()); } ?> в <?php include('ipnlistener.php'); include("config.php"); if($sqlTicketservertype = 'mysql'){ $db = new PDO('mysql:host='.$sqlTicketserver.';dbname='.$sqlTicketdbname, $sqlTicketusername, $sqlTicketpassword); } // tell PHP to log errors to ipn_errors.log in this directory ini_set('log_errors', true); ini_set('error_log', dirname(__FILE__).'/ipn_errors.log'); $listener = new IpnListener(); $listener->use_sandbox = true; try { $verified = $listener->processIpn(); } catch (Exception $e) { // fatal error trying to process IPN. error_log($e->getMessage()); exit(0); } if ($verified) { // IPN response was "VERIFIED" $email = $_POST['payer_email']; $txn = $_POST['txn_id']; $firstName = $_POST['first_name']; $lastName = $_POST['last_name']; $paymentDate = $_POST['payment_date']; $query = $db->PREPARE("INSERT INTO tickets ( email, txn, firstName, lastName, paymentDate ) VALUES ( '$email', '$txn', '$firstName', '$lastName', '$paymentDate' )"); $query->execute(); mail('bendrissmehdi@gmail.com', 'Valid IPN', $listener->getTextReport()); } else { // IPN response was "INVALID" mail('bendrissmehdi@gmail.com', 'Invalid IPN', $listener->getTextReport()); } ?> в <?php include('ipnlistener.php'); include("config.php"); if($sqlTicketservertype = 'mysql'){ $db = new PDO('mysql:host='.$sqlTicketserver.';dbname='.$sqlTicketdbname, $sqlTicketusername, $sqlTicketpassword); } // tell PHP to log errors to ipn_errors.log in this directory ini_set('log_errors', true); ini_set('error_log', dirname(__FILE__).'/ipn_errors.log'); $listener = new IpnListener(); $listener->use_sandbox = true; try { $verified = $listener->processIpn(); } catch (Exception $e) { // fatal error trying to process IPN. error_log($e->getMessage()); exit(0); } if ($verified) { // IPN response was "VERIFIED" $email = $_POST['payer_email']; $txn = $_POST['txn_id']; $firstName = $_POST['first_name']; $lastName = $_POST['last_name']; $paymentDate = $_POST['payment_date']; $query = $db->PREPARE("INSERT INTO tickets ( email, txn, firstName, lastName, paymentDate ) VALUES ( '$email', '$txn', '$firstName', '$lastName', '$paymentDate' )"); $query->execute(); mail('bendrissmehdi@gmail.com', 'Valid IPN', $listener->getTextReport()); } else { // IPN response was "INVALID" mail('bendrissmehdi@gmail.com', 'Invalid IPN', $listener->getTextReport()); } ?> 

Я подумал, что IPN должен быть выполнен, когда выплатите «Хорошо». Так почему этот файл не читается? Есть ли у вас какие-либо идеи по этому поводу?

EDIT: проект размещен на http://croisentoi.com/ticket

спасибо

Вы также должны включить уведомление IPN на веб-сайте Paypal Sandbox, чтобы оно работало с вашими PHP-скриптами. Идите дальше и включите его с URL-адресом ipn (позже вы можете переопределить этот URL-адрес, используя атрибут «return» в вашем php-скрипте):

https://www.sandbox.paypal.com/cgi-bin/customerprofileweb?cmd=_profile-ipn-notify