Самый простой способ реализовать покупку электронных книг через PayPal

У меня есть существующий веб-сайт django, и я хотел бы продавать через него несколько файлов PDF с помощью PayPal. Покупатель должен иметь возможность выбрать 1 или несколько книг, получить перевод на сайт PayPal, чтобы ввести платежную информацию. Затем, после успешной оплаты, покупатель перенаправляется обратно на мой веб-сайт, и книги начинают загружаться автоматически.

Я просмотрел приложения django-paypal и django-merchent, но не знаю, как обрабатывать несколько загрузок. Насколько я знаю, при использовании этих приложений, после успешной покупки приложение посылает сигнал об успехе, но не говорит мне, какие книги были заказаны.

Каков наилучший способ реализовать это с помощью приложения django-paypal или с помощью другого метода? Опять же, я ищу самое простое/быстрое решение.

Спасибо,


person bcoop713    schedule 03.11.2013    source источник
comment
Разве эти приложения не просят вас предоставить URL-адрес перенаправления? если это так, создайте ссылку для оплаты этих книг, отправьте их на страницу PayPal с URL-адресом перенаправления, который может состоять из некоторого идентификатора для идентификации ваших книг, и после оплаты отправьте их на redirect-url. Этот URL-адрес перенаправления может быть ссылкой для скачивания tar из этих книг.   -  person Deepankar Bajpeyi    schedule 03.11.2013
comment
Я не уверен, что следую. Но мне нужна функциональность типа корзины для покупок, поэтому мне нужно будет получить от PayPal список книг, которые были куплены.   -  person bcoop713    schedule 03.11.2013
comment
Неважно, кажется, я понимаю, о чем вы говорите. Как можно защитить этот URL-адрес перенаправления, чтобы он загружался только при получении сигнала о том, что платеж прошел успешно?   -  person bcoop713    schedule 03.11.2013
comment
посмотрите, принимают ли эти приложения URL-адрес перенаправления. Это URL-адрес, по которому вы будете отправлены PayPal после оплаты. Это может быть представление, где вы можете делать свои загрузки. Я бы сделал это, создав external_id для каждой платежной ссылки, когда вы уходите в PayPal. Когда вы вернетесь оттуда, PayPal нажмет на ссылку перенаправления с этим внешним идентификатором, по которому вы будете знать, какие книги скачать. Я не уверен в ваших проблемах с безопасностью, можете ли вы объяснить больше?   -  person Deepankar Bajpeyi    schedule 03.11.2013
comment
Итак, вы предлагаете мне создать URL-адрес перенаправления, такой как www.example.com/download=book1&download=book3, верно? Затем, когда PayPal перенаправляет на него, я знаю, что книги 1 и 3 были куплены. Но что, если кто-то перейдет по этому URL-адресу, не заплатив за них?   -  person bcoop713    schedule 03.11.2013
comment
Хм. это немного сложно. Но базовый уровень безопасности, который я могу предложить, заключается в том, что вы делаете эти идентификаторы строкой случайных ascii. Но это не решение.   -  person Deepankar Bajpeyi    schedule 04.11.2013
comment
давайте продолжим это обсуждение в чате   -  person Deepankar Bajpeyi    schedule 04.11.2013


Ответы (1)


С уважением, вопрос немного наивен, поскольку обычно существует разделение между корзиной и обработкой платежей. Платеж возвращает бинарный результат — либо сработал, либо нет. Ваше приложение может вспомнить, за что платили.

API Paypal возвращает успех или неудачу идентифицированного платежа; plus с радостью воспользуется списком элементов, которые вы ему предоставите, чтобы пользователю была представлена ​​разбивка общей суммы. Но обратите внимание, что вы сообщаете PayPal, за что платят. Он потребляет эти данные, а не предоставляет их.

Таким образом, ответ полностью зависит от выбранного вами решения (django-paypal или django-merchant или что-то еще). Почитайте их документацию. Предположительно, есть какой-то способ проверить содержимое недавно одобренной транзакции. Прокрутите корзину и включите загрузку каждого из них.

Django-paypal, например, не интересует, что лежит в корзине. Он просто запускает сигнал, когда платеж прошел успешно, и возвращает идентификатор транзакции. Ваше приложение должно помнить, для чего была совершена транзакция.

Часто это не так просто, как хотелось бы.

person John Mee    schedule 18.01.2014