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. Однак, якщо ви зробите це, ваш сайт отримає два підтвердження замовлення для кожної продажу. Як результат, ви повинні бути обережними, щоб вжити заходів (скажімо, відправити товар) лише на одній копії заданого повідомлення про підтвердження.
Документація тут