У меня есть система PayPal IPN. Платежная система работает очень хорошо, требуется хорошая сумма денег, однако IPN просто немного выключен.
Я сделал несколько временных меток во время подключения IPN к моему сайту и времени загрузки страницы /shop/thanks - и вот данные:
IPN: [1416406186//14:09:46 19-11-14] papypal.php runtime: 1 seconds. (start time: 1416406185/end time: 1416406186)
[1416406186//14:09:46 19-11-14] papypal.php runtime: 1 seconds. (start time: 1416406185/end time: 1416406186)
/shop/thanks error: [1416406183//14:09:43 19-11-14]/shop/thanks error - could not display thank you message.
ТРИ СЕКУНДА. Если я пойду прямо через процесс PayPal, я доберусь до своего веб-сайта за 3 секунды до того, как PayPal обновит меня через IPN. Если я пройду через это медленно, то, скорее всего, я получу правильную thank you
страницу.
Раньше я не сталкивался с этой проблемой. Что я могу сделать, чтобы разобраться? Время выполнения сценария paypal.php составляет 1 секунду, поэтому мне не нравится, что я слишком долго обновляю базу данных.
Вы не можете. Предполагается, что IPN будет асинхронным. Вы должны сказать "спасибо за ваш платеж, мы уведомим вас, когда ваш платеж будет завершен".
Но почему?
Потому что позвольте сказать, что я решу оплатить вам eCheque, т.е. прямо с моего банковского счета через PayPal. eCheques может занять от шести до десяти Дней, чтобы очистить.
IPN может выступать за "Уведомление о немедленном платеже", но "Мгновенная" часть относится к тому, когда вы действительно получаете платеж, а не когда пользователь отправляет его вам.
Теперь, при этом, вы можете настроить свой IPN-скрипт для принятия платежей "Ожидание" статуса и действовать соответствующим образом. Однако это не обязательно хорошая идея, поскольку она может ввести пользователя в заблуждение, считая, что их платеж завершен, когда на самом деле он может быть отменен или признан недействительным позже. Но это вопрос для UX. Даже тогда у вас все еще будет какая-то задержка, в то время как система IPN обрабатывает ваше уведомление.