PayPal returnURL безопасность
Резюме: я хочу использовать returnUrl в качестве доказательства того, что транзакция была принята PayPal.
Я реализую очень простой рабочий процесс покупки на основе PayPal.
Все работает хорошо, Пользователь нажимает на оплату, Пользователь переходит на PayPal, PayPal отправляет Пользователя на мой returnURL... и я принимаю оплату на этом последнем шаге.
Я знаю, что должен был бы реализовать конечную точку IPN и принять там оплату, но этот проект очень прост, и я слишком стар или слишком ленив, чтобы реализовать все это асинхронное поведение, которое может быть адом крайних случаев.
Было бы неплохо, если бы я просто сделал returnUrl более уверенным, трудным подделать.
Я думал, что существует вероятность того, что в returnURL будет включена подпись контрольной суммы, основанная на секретном ключе, хранящемся в учетной записи PayPal, и фактическом токене транзакции.
Я не знаю, существует ли это, я не нашел ничего из этого в документации, приветствуется любое предложение, чтобы сделать returnUrl более уверенным.
Также, если кто-то думает, что я полностью неправ, и returnUrl никогда не будет доказательством того, что транзакция была принята, пожалуйста, заявите о себе.
2 ответа
Когда вы просто делаете обратный URL-адрес, вам нужно снова отправить сообщение в PayPal, чтобы подтвердить транзакцию с помощью вашего токена PDT.
Скажите, что ваш обратный URL - Спасибо.aspx:
"Исходя из кода Thanks.aspx, вы проанализируете значение tx и создадите HTTP POST для https://www.paypal.com/cgi-bin/webscr со следующими параметрами: cmd=_notify-synch&tx=[TransactionID]& у =[PDTIdentityToken] ".
Это ответит тем, был ли этот запрос действительным.
Проблема в том, что эта страница не гарантированно получит удар. Пользователь может закрыть свой браузер, или его интернет может быть отключен, или что-то еще.
IPN будет получать доступ от серверов PayPals, и вы действительно не можете победить это.
Это довольно легко настроить, но я предлагаю прочитать этот документ, который объяснит методы PDT и IPN, и даст простой способ выяснить, что вам нужно.
После завершения установки Express Checkout я понял, как ее можно использовать.
Несмотря на то, что я создаю уникальный номер счета и возвращаю его, чтобы пометить его как оплаченный, я обнаружил, что он все еще может быть использован пользователем, изменившим параметр счета в обратной ссылке. Конечно, уже были проверки, чтобы гарантировать, что любой счет мог быть оплачен только один раз, но я должен был сделать его доказательством взлома.
В итоге я добавил несколько дополнительных проверок, чтобы гарантировать, что данный счет был последним счетом, назначенным этому пользователю. Да, тот же идентификатор сеанса сохраняется даже после посещения Paypal и обратно.