Подтвердить что ты не робот

Paypal notify_url и return_url. Получение переменных без IPN с использованием PHP

Я пытаюсь настроить простой способ оплаты для PayPal, но у меня есть некоторые проблемы/путаница с возвратом и уведомлением URLS. Я новичок в php и уже сделал это в asp, но теперь я потерялся.

SO моя основная форма Paypal:

<form action="https://www.paypal.com/cgi-bin/webscr" method="post" id="PayPalForm" name="PayPalForm"  target="_top">
 <input type="hidden" name="cmd" value="_xclick">
 <input type="hidden" name="business" value="[email protected]">
 <input type="hidden" name="amount" value="0.01">
 <input type="hidden" name="item_name" value="Composite Door">
 <input type="hidden" name="item_number" value="<?php echo $orderID ?>">
 <input type="hidden" name="currency_code" value="GBP">
 <input type="hidden" name="cancel_return" value="http://www.mydomain.co.uk/paypal-notcompleted.php">
<input type="hidden" name="return" value="http://www.mydomain.co.uk/paypal-completed.php">
<input type="hidden" name="notify_url" value="http://www.mydomain.co.uk/paypal-completed.php"> 
</form>


  <script>
    document.PayPalForm.submit();
   </script>

Как вы можете видеть сообщения формы в paypal, а затем возвращается в зависимости от результата, если он не выполнен/отменен, он переходит к paypal-notcompleted.php.

Если он будет успешным, он перейдет к paypal-complet.php. И вот где я не могу понять, я не настроил IPN, все, что я хочу сделать, это захватить некоторые переменные в сообщениях paypal, чтобы запустить простой запрос вставки и отобразить некоторые детали в сообщении с подтверждением заказчику.

Мне разрешено иметь notify_url и return_url как одну и ту же страницу?

Почему paypal не публикует все ожидаемые (см. здесь: Уведомлять URL-адрес Paypal) на страницу?

Я понимаю, что есть что-то делать с XML и т.д., но я просто понял, что смогу $_GET переменные, которые отправил PayPal обратно. Кто-нибудь сделал это таким образом, могут ли они сказать мне, в чем я ошибаюсь?

4b9b3361

Ответ 1

Чтобы вернуть данные обратно к URL-адресу возврата, вам необходимо использовать PDT. Он очень похож на IPN, за исключением того, что он предназначен для использования с вашим URL-адресом возврата, тогда как IPN предназначенный для использования с сторонним IPN прослушивателем script на вашем сервере.

PDT отлично подходит для простого отображения транзакции пользователю на странице URL-адреса возврата, но не рекомендуется выполнять какую-либо обработку после оплаты с помощью PDT (т.е. обновления базы данных, отправка рассылок электронной почты и т.д.), потому что нет гарантии, что пользователь вернет ее на эту страницу, даже если включена функция автоматического возврата в вашей учетной записи PayPal.

IPN будет запускаться каждый раз, когда происходит транзакция, независимо от того, вернется ли пользователь к вашему сайту после завершения оплаты.

URL-адрес уведомления используется только для IPN, и он отменяет любые настройки, которые у вас есть в вашем профиле PayPal для IPN. PDT необходимо настроить в профиле учетной записи PayPal, чтобы получить данные, возвращенные на ваш URL-адрес.

Вы захотите использовать другой URL для возврата и уведомления, иначе этот же код будет работать дважды: один раз, когда пользователь вернется на ваш сайт и снова из POST PayPal IPN.

Ответ 2

Передача платежных данных (PDT)

URL-адреса return и cancel_return являются одноразовыми платежами (PDT), в первую очередь, поэтому пользователь завершает транзакцию на Вашем сайте. Это только передача информации, чтобы разумно помочь вашему сайту выполнить эту задачу. Нет гарантии, что покупатель не выйдет перед возвратом, поэтому вы не можете полагаться на возможность выполнять любую последующую транзакцию с использованием этих данных.

Мгновенное уведомление об оплате (IPN)

notify_url используется методом мгновенного оповещения о транзакции (IPN) и вызывается с каждым изменением статуса транзакции. Он предназначен для полной записи всех действий, предпринятых в течение жизненного цикла транзакции, на которых вы можете положиться на процесс бэкэнд-процесса, например, учет, выполнение заказа или аннулирование. Процесс IPN принимает меры для обеспечения целостности процесса.

Их цели различны, и, следовательно, информация и безопасность различны. Для плюсы и минусы.

Сообщения IPN могут быть сильно задержаны, поэтому используйте все три переменные

Обратите внимание, что, хотя большинство сообщений IPN отправляются в течение нескольких секунд после завершения транзакции PayPal, я испытал задержки до нескольких часов, поэтому они надежны, но не всегда своевременны.

Я бы предложил использовать все return, return_cancel и notify_url, так как первые два будут немедленно возвращены, так что вы сможете мгновенно получить обратную связь с пользователем и обновить данные о бэкэнд-данных/инициировать выполнение, но используйте последнюю в качестве резервной копии, если пользователь покидает PayPal до того, как будет возвращен. Укажите покупателям, чтобы они вернулись на ваш сайт, чтобы обеспечить своевременную обработку их заказа.

Просто нужно управлять статусом заказа, чтобы IPN не вызывал выполнение, если PDT уже сделал это, что в основном является тем, что вам нужно сделать, чтобы повторные сообщения Completed IPN не выполняли повторное выполнение после первый.

notify_url продолжает использоваться для последующих сообщений для одной и той же транзакции

Сообщения IPN для одной и той же транзакции продолжают идти по тому же адресу notify_url. Я просмотрел нашу историю IPN, а сообщение Refund IPN перешло к оригиналу notify_url.

Это продолжается, даже если вы меняете предпочтения IPN, согласно https://developer.paypal.com/docs/classic/ipn/integration-guide/IPNSetup/:

Сообщение IPN всегда отправляется на ваш URL-адрес уведомления, если вы не отключили предпочтение получать сообщения IPN. Даже если вы не включили получение сообщений IPN в своем профиле или у вас есть reset ваши предпочтения, отключив IPN-сообщения, PayPal по-прежнему отправляет IPN-сообщения на URL-адрес уведомления, указанный вами для определенного платежа. IPN сообщения, не отправленные, поскольку вы отключили предпочтение в своем профиле, будут отображаться в истории IPN при включении приема IPN. После того, как они появятся в истории, вы можете выбрать, отправлять ли их повторно.

Я не уверен, что связанные транзакции, такие как споры или последующие платежи по подписке, будут по-прежнему использовать оригинал notify_url. Возможно, кто-то, кто действительно знает, может дать ответ.

Ответ 3

ваш url-url-url и return url оба они разные. ваш обратный URL-адрес направляет вашего клиента после успешной оплаты с некоторой информацией о возврате. кстати, уведомить url о том, чтобы получить полную информацию о транзакциях покупки ваших клиентов и к которым не может получить доступ ваш клиент, и это для вашей базы данных или целей хранения.