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@hotmail.com">
 <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.РНР.

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

могу ли я иметь notify_url и return_url как одну и ту же страницу?

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

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

3 ответов


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

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

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

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

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


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

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

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


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