IPN против PDT в Paypal


99

У меня возникли проблемы с выбором между мгновенным уведомлением о платеже (IPN) PayPal и передачей платежных данных (PDT).

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

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

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

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

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

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


Я нашел веб-страницу, которая действительно лучше объясняет это. [PayPal PDT и IPN: как это работает?] [1] [1]: webmasters.stackexchange.com/questions/21634/…
Ананиз Скотт

Что касается вопроса 2, есть PayPal Account Optionalнастройка, при My selling preferences > Website preferencesкоторой вы можете включить, чтобы не заставлять клиентов создавать / иметь учетную запись PayPal, т.е. оплатить кредитной / дебетовой картой.
kaiyaq

Ответы:


112

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

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


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

1
+1 за реализацию IPN и PDT, мы сделали это, и это хорошо работает.
Марк Редман

3
@Tom: Моя реализация: когда приходит PDT или IPN, прочтите параметры и попробуйте обработать платеж. Процессор A) блокирует другую одновременную обработку (для этого пользователя), а B) проверяет, была ли она уже обработана. После завершения обработки с IPN вы закончите, с PDT вы показываете пользователю страницу подтверждения или страницу квитанции или что-то еще. Как сторона PDT, так и сторона IPN могут работать правильно, если другая сторона не работает, но вы получаете хорошую надежность, имея обе. Довольно высокий% пользователей не переходят по ссылке до того, как приходит IPN.
Mr. Shiny and New 安 宇

8
Этот ответ не отвечает на вопросы OP # 1, # 2 или # 3, но он принят?
Клинт Пахл

2
IPN отвечает за 4 дня ... это отстой
Тоскан

1

По вопросу 1. PDT предназначен для использования с функцией автоматического возврата платежей через веб-сайт. Auto Return перенаправляет на сайт PDT после выплаты денег продавцу. К сожалению, эту функцию невозможно использовать вместе с PayPal Account Optional - используется для включения оплаты кредитной картой. Вот примечание от PayPal: «Если вы включили автоматический возврат, и выбрали опцию PayPal Account Optional для новых пользователей, новый пользователь не будет автоматически перенаправлен обратно на ваш сайт, но получит возможность вернуться». . У пользователя будет возможность вернуться на ваш сайт (шаг PDT) или остаться на сайте PayPal. Подводя итог, при оплате кредитной картой пользователь может пропустить шаг PDT, если пользователь не нажмет «ссылку возврата в магазин».

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

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


0

Это старый вопрос, но я могу просто ответить: почему бы не использовать и PDT, и IPN? Они будут работать с карточными транзакциями.

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

Между тем, вы можете дождаться полной проверки от IPN в фоновом режиме. После получения вы можете использовать его для дальнейшего обновления своей БД и обработки заказа.

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

https://www.codexworld.com/paypal-standard-payment-gateway-integration-php/

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.