API для PDT и IPN аналогичны. Основное отличие заключается в том, когда вы получаете уведомление. По этой причине я бы рекомендовал реализовать оба.
- С помощью PDT вы мгновенно получаете уведомление, можете выполнить любую дополнительную обработку и показать пользователю страницу подтверждения.
- С IPN вы гарантированно получите уведомление о том, что платеж получен, даже если компьютер пользователя взорвется до того, как сможет отправить вам PDT.
Реализуйте оба и получите лучшее из обоих миров. Но если вы делаете только один, IPN является надежным.
Один улов: если вы реализуете оба варианта, есть вероятность, что ваши платежи могут быть обработаны дважды. Позаботьтесь, чтобы этого не произошло. Приложение, которое я написал, обрабатывает PDT и IPN практически одинаково (внутренняя часть одинакова), и этот код получает блокировку для каждого веб-пользователя в базе данных, поэтому, если один и тот же пользователь пытается отправить один и тот же платеж несколько раз, он может быть обработан только один раз. После обработки результат этого процесса повторно используется для любых последующих попыток его обработки.
Редактировать
Еще одна вещь: IPN несет больше информации, чем PDT. Существует множество различных сообщений, которые вы можете получать из IPN, таких как уведомления о возврате платежей и т. Д., И поэтому вам действительно следует реализовать это.
Система PDT PayPal отправляет подтверждения заказов торговым сайтам, использующим 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. Однако, если вы это сделаете, ваш сайт получит два подтверждения заказа для каждой продажи. В результате вы должны быть осторожны, чтобы принять меры (например, отправить товар) только с одной копией данного подтверждающего сообщения.
Документация здесь