IPN против PDT в Paypal - PullRequest
       51

IPN против PDT в Paypal

94 голосов
/ 14 мая 2010

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

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

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

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

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

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

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

Ответы [ 3 ]

109 голосов
/ 14 мая 2010

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

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

1 голос
/ 16 сентября 2015

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

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

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

0 голосов
/ 27 июля 2018

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

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

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

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

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

...