Paypal уведомляет URL-адрес и возвращает URL-адрес. Получение переменных без IPN с использованием PHP


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

ИТАК, моя основная форма 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-completed.php .И вот где я не могу понять, я не настроил IP-адрес, все, что я хочу сделать, это вернуть мне некоторые переменные, которые paypal публикует, чтобы выполнить простой запрос на вставку и отобразить некоторые детали в сообщении с подтверждением клиенту.

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

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

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

Author: Community, 2012-11-16

3 answers

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

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

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

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

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

 18
Author: Drew Angell, 2012-11-16 16:19:03

Передача платежных данных (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 в своем профиле или сбросили настройки, отключив сообщения IPN, PayPal все равно отправляет сообщения IPN на URL-адрес уведомления, указанный вами для конкретного платежа. Сообщения IPN не отправляются, потому что вы отключили настройки в своем профиле, которые появятся в истории IP-адресов, когда вы включите получение IP-адресов. После того, как они появятся в истории, вы можете выбрать, отправлять ли их повторно.

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

 8
Author: Patanjali, 2017-01-12 16:30:52

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

 5
Author: user2374680, 2013-05-21 14:09:56