it-swarm.com.ru

IPN против PDT в Paypal

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

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

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

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

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

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

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

94
Tom

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

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

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

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

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

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

109
Mr. Shiny and New 安宇

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

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

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

0
jan salawa

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

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

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

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

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

0
Sol