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, и даст простой способ выяснить, что вам нужно.

http://www.codeproject.com/Articles/42894/Introduction-to-PayPal-for-C-ASP-NET-developers?msg=4382854

После завершения установки Express Checkout я понял, как ее можно использовать.

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

В итоге я добавил несколько дополнительных проверок, чтобы гарантировать, что данный счет был последним счетом, назначенным этому пользователю. Да, тот же идентификатор сеанса сохраняется даже после посещения Paypal и обратно.

Другие вопросы по тегам