Paypal оплата и автоматическая загрузка цифрового мультимедиа - PullRequest
3 голосов
/ 28 декабря 2011

Я создаю веб-сайт, где буду продавать компьютерные и калькуляторные программы.Когда нажата кнопка «купить».Я хотел бы, чтобы пользователь был перенаправлен на Paypal (независимо от того, остаются ли они на сайте или нет).После оплаты пользователь будет возвращен на мой веб-сайт, и программа автоматически загрузит его.

Как я могу это сделать, чтобы:

  • Пользователь правильно оплачиваетпрограмма через Paypal
  • Правильная программа, которую они заплатили за загрузку после
  • Нет прямой ссылки на программу, чтобы пользователь мог затем загрузить ее много раз без оплаты.*

    Большое спасибо заранее!

1 Ответ

4 голосов
/ 28 декабря 2011

Paypal PDT (перенаправление после оплаты) и IPN (за кадром) - это именно то, что вам нужно.

Проверьте это: https://www.paypal.com/cgi-bin/webscr?cmd=p/xcl/rec/pdt-intro-outside

Вот пример кода для сценария длямгновенное начало работы:

https://www.paypal.com/us/cgi-bin/?cmd=p/xcl/rec/pdt-code-outside

Несколько дополнительных советов по безопасности: проверьте сумму, валюту и идентификатор продукта с помощью данных вашей базы данных, чтобы сделать загрузку доступной.Откройте учетную запись PayPal.

Чтобы не раскрывать местоположение загрузки: используйте идентификатор заказа, проверенный pdt, в качестве уникального идентификатора загрузки.Вы должны использовать такой скрипт: перенаправить пользователя в pdt-скрипт сюда или включить его в pdt, если платеж проверен:

<?
$orderid = $_GET['orderid'];
$productid = $_GET['productid'];
$time = $_GET['time_from_paypal']; // when the purchase was made
$fn = "files/".$productid.".mp3";
($time =here your conditional)?$do==true:$do==false;
if ($do==true){
header('Content-Disposition: attachment; filename=' . basename($fn));
readfile($fn);
} else {.....
?>

часть "здесь ваш условный" может быть чем угодно.Вы можете ограничить их загрузку в течение следующих x секунд после оплаты.обычно обработка из PayPal занимает максимум 20 секунд.поэтому, если вы хотите, чтобы загрузка производилась только один раз, проверьте, отличаются ли значения payment_time и фактического времени менее 30 секунд.из-за перенаправления пользователь получает загрузку сразу после подтверждения оплаты.написал, но не проверял

...