Пытаюсь выяснить это, так как это меня беспокоит уже несколько дней.
Что я пытаюсь сделать:
Получить платеж через мойвеб-сайт, использующий simpleCartJs и имеющий возвращаемый IPN для обновления базы данных с деталями платежа.
Что работает:
- Оплата через веб-сайт не работает вообще.
- PayPal подтверждает платеж и отправляет сообщение IPN и получает код 200
- Оплата через сторонние сайты ОБНОВЛЯЕТ обновлять мой веб-сайт
Что не работает
- Платеж через мой веб-сайт не будет обновлять базу данных, однако, если платежи осуществляются через сторонние сайты (например, ebay), обновите мою базу данных, поскольку у меня в PayPal IPN включен мой IP-адрес
Что у меня сейчас есть
- Я включил уведомления IPN в Paypal, и они перенаправляют файл правильно (поскольку сторонние поставщики обновляют базу данных правильно)
Мой файл IPN
require_once(dirname(__FILE__).'/paypal.class.php');
$p = new paypal_class;
if ($p->validate_ipn() && !empty($p->ipn_data['payment_status']) && $p->ipn_data['payment_status'] == 'Completed') {
$mc_gross = $_POST['mc_gross'];
$payer_id = $_POST['payer_id'];
$payment_date = $_POST['payment_date'];
$first_name = $_POST['first_name'];
$last_name = $_POST['last_name'];
$payer_email = $_POST['payer_email'];
$payment_status = $_POST['payment_status'];
$payer_status = $_POST['payer_status'];
$address_name = $_POST['address_name'];
$address_country = $_POST['address_country'];
$address_zip = $_POST['address_zip'];
$address_state = $_POST['address_state'];
$address_city = $_POST['address_city'];
$address_street = $_POST['address_street'];
$mc_shipping = $_POST['mc_shipping'];
$mc_currency = $_POST['mc_currency'];
$ipn_track_id = $_POST['ipn_track_id'];
$stmt = $con->prepare("INSERT into orders (mc_gross, payer_id, payment_date, first_name, last_name, payer_email, payment_status, payer_status, address_name, address_country, address_zip, address_state, address_city, address_street, mc_shipping, mc_currency, ipn_track_id) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
$stmt->bind_param("sssssssssssssssss", $mc_gross, $payer_id, $payment_date, $first_name, $last_name, $payer_email, $payment_status, $payer_status, $address_name, $address_country, $address_zip, $address_state, $address_city, $address_street, $mc_shipping, $mc_currency, $ipn_track_id);
$stmt->execute();
$stmt->close();
}
Любая помощь в решении этой проблемы была бы удивительной, пожалуйста.