IPN проти PDT в Paypal


99

У мене виникають проблеми з вибором між повідомленням про миттєві платежі PayPal (IPN) та передачею платіжних даних (PDT).

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

Однак PDT-документація PayPal містить цю криптовалюту: "PDT не призначений для використання з трансакціями з кредитною карткою або Express Checkout". ... але я нічого не можу знайти більше нічого з цієї теми.

  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, і дозволяє їм автентифікувати цю інформацію. Потім такі сайти можуть відображати ці дані локально на сторінці "підтвердження замовлення".

Коли використовувати 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.
Містер Блискучий і Новий 安 宇

8
Ця відповідь не відповідає на запитання №1, №2 чи №3 ОП, проте прийнята?
Клінт Пахл

2
IPN потребує до 4 днів, щоб відповісти ... це смокче
Тоскан

1

Re 1. PDT призначений для використання з функцією автоматичного повернення платежів через веб-сайт. Auto Return переадресовує на сайт PDT після сплати грошей продавцю. На жаль, неможливо використовувати цю функцію разом із рахунком PayPal Необов’язково - використовується для ввімкнення оплати за допомогою кредитної картки. Ось примітка від PayPal: "Якщо ви ввімкнули функцію автоматичного повернення та вибрали ввімкнути рахунок PayPal Необов’язково для нових користувачів, новий користувач не буде автоматично перенаправлений назад на ваш веб-сайт, але йому буде надана можливість повернення." . Користувач матиме можливість повернутися на ваш сайт (крок PDT) або залишитися на сайті PayPal. Підсумовуючи це під час оплати за допомогою кредитної картки, користувач може пропустити крок PDT, якщо користувач не натисне "повернутися до магазину".

Повторне питання 2. Ви вирішуєте, які варіанти оплати ви хочете дозволити. Якщо ви хочете дозволити оплату без рахунку PayPal, ви можете ввімкнути рахунок необов’язково . Якщо ви хочете дозволити лише користувачам з обліковими записами PayPal, цю функцію відключити. Можливо, буде більше варіантів.

Re 3. У вашому випадку вам потрібно запустити дії після успішної покупки. Рекомендованим способом було б впровадження IPN. PDT працює не у всіх випадках і не гарантує доставку повідомлень. Ось посилання на документ, що висвітлює цю тему PDT проти 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.