IPN против PDT в Paypal

У меня возникли проблемы с выбором между мгновенным уведомлением PayPal (IPN) и Transfer Data Transfer (PDT).

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

Однако документация PayPal PDT содержит эту загадочную строку: "PDT не предназначен для использования с транзакциями с помощью кредитной карты или экспресс-проверки".... но я не могу найти что-то еще по этой теме.

  • Являются ли кредитные карты ДЕЙСТВИТЕЛЬНО не предназначены для использования с PDT? Я хотел бы больше, чем предложение.

  • Означает ли это, что пользователь должен/создать учетную запись PayPal для оплаты?

  • Означает ли это, что если я хочу, чтобы пользователи платили со своими учетными записями PayPal И/ИЛИ с помощью кредитных карт напрямую, я должен реализовать IPN?

Может ли кто-нибудь, кто прошел через это, пролить свет?

Ответ 1

API для PDT и IPN аналогичны. Основное различие заключается в получении уведомления. По этой причине я бы рекомендовал внедрить оба.

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

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

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

Edit Еще одна вещь: IPN несет больше информации, чем PDT. Существует множество различных сообщений, которые вы можете получать от IPN, таких как уведомление о возврате платежей и т.д., И поэтому вы действительно должны его реализовать.


Система PayPal PDT отправляет подтверждения заказа торговым сайтам, использующим стандарт PayPal Payments Standard, и позволяет им аутентифицировать эту информацию. Такие сайты могут затем отображать эти данные локально на странице подтверждения заказа.

Когда использовать PDT?

IPN предоставляет те же возможности, которые описаны выше. Итак, когда вы должны выбрать PDT вместо IPN?

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

Итак, используйте PDT, если на вашем сайте есть функция, требующая немедленного уведомления об оплате.

Например, рассмотрите магазин цифровой музыки. С помощью PDT этот магазин позволяет клиентам сразу же загружать свои покупки, так как PDT немедленно отправляет подтверждения заказа. С IPN такое немедленное выполнение заказа невозможно.

Преимущества IPN

PDT имеет серьезную слабость: он отправляет подтверждения заказа один раз и только один раз. В результате, когда PDT отправляет подтверждение, ваш сайт должен работать; в противном случае он никогда не получит сообщение.

С IPN, напротив, доставка подтверждений заказа практически гарантирована, так как IPN передает подтверждение, пока ваш сайт не подтвердит получение. По этой причине PayPal рекомендует вам внедрять IPN, а не PDT.

Еще одно преимущество IPN заключается в том, что он отправляет множество типов уведомлений, тогда как PDT отправляет только подтверждения заказа. Таким образом, используя IPN, ваш сайт может получать, например, уведомления о возврате платежей, а также подтверждения заказа. Примечание. Если ваш сайт должен быть немедленно уведомлен о платежах, вы можете реализовать как IPN, так и PDT. Однако, если вы это сделаете, ваш сайт получит два подтверждения заказа для каждой продажи. В результате вы должны быть осторожны, чтобы принять меры (например, отправить товар) только на одну копию данного подтверждающего сообщения.

Документация здесь

Ответ 2

Re 1. PDT предназначен для использования с функцией Auto Return for Website Payments. Auto Return перенаправляет на сайт PDT после оплаты денег продавцу. К сожалению, невозможно использовать эту функцию вместе с учетной записью PayPal Необязательно - используется для включения оплаты кредитной картой. Вот примечание от PayPal: "Если вы включили Auto Return и решили включить учетную запись PayPal Необязательно для новых пользователей, новый пользователь будет не будет автоматически перенаправляться на ваш сайт, но вам будет предоставлена ​​возможность вернуться. '. У пользователя будет возможность вернуться на ваш сайт (шаг PDT) или остаться на сайте PayPal. Подводя итог при оплате кредитной картой, пользователь может пропустить шаг PDT, если пользователь не нажмет кнопку" вернуться к сохранению ссылки".

Re 2. Это зависит от вас, какие варианты оплаты вы хотите разрешить. Если вы хотите разрешить оплату без учетной записи PayPal, вы можете включить "Дополнительно" . Если вы хотите, чтобы только пользователи с учетными записями PayPal отключили эту функцию. Может быть больше вариантов.

Re 3. В вашем случае вам нужно активировать действие после успешной покупки. Рекомендуемым способом было бы внедрение IPN. PDT не работает для всех случаев и не гарантирует доставку сообщений. Вот ссылка на doc, охватывающая эту тему PDT vs IPN.