Ответ 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. Однако, если вы это сделаете, ваш сайт получит два подтверждения заказа для каждой продажи. В результате вы должны быть осторожны, чтобы принять меры (например, отправить товар) только на одну копию данного подтверждающего сообщения.