php - 如何阻止用户规避付款?

标签 php cookies paypal

我有一个网站使用 Paypal 来收取电子显示数据的费用。变量不能通过 paypal 与 URL 一起传递(或者我无法让它们工作)所以我使用 cookie 来传递项目编号。然而,狡猾的用户可以在cookie 写入部分之后,直接在地址栏中输入paypal 重定向URL 并免费获取电子数据。绕过 Paypal 。我该如何解决这个问题?

这是一些代码。您会看到我试图通过直接传递 cookie 写入 (pre_contact.php) 和 paypal 重定向 URL (step.php) 来让用户感到困难。

//pre_contact.php
<?PHP
global $id;
setcookie("property", $id, time()+1800);
echo "<META HTTP-EQUIV=Refresh CONTENT=\"0; URL=contact.php\">";
?>

//contact.php - paypal pay button
echo "<form action='https://www.paypal.com/cgi-bin/webscr' method='post'>";
echo "<input type='hidden' name='cmd' value='_s-xclick'>";
echo "<input type='hidden' name='hosted_button_id' value='156320'>";
echo "<input type='image'
src='https://www.paypal.com/en_GB/i/btn/btn_paynowCC_LG.gif' border='0' name='submit' 
alt='Click to pay'>";
echo "<img alt='' border='0' src='https://www.paypal.com/en_GB/i/scr/pixel.gif'  width='1' height='1'>";
echo "</form>";

//step.php - paypal redirect on successful payment
<?PHP
require("generate_url.php");
?>

//generate_url.php - This generates a unique URL so the info can only be accessed once
<?PHP
if (eregi("generate_url.php", $_SERVER['SCRIPT_NAME'])) {
Header("Location: index.php"); die();
}
$token = md5(uniqid(rand(),1));
setcookie("token", $token, time()+4);
$cwd = substr($_SERVER['PHP_SELF'],0,strrpos($_SERVER['PHP_SELF'],"/"));
Header("Location: $cwd/get_file.php?q=$token"); die();
?>

//get_file.php - displays the file after payment
$qtoken = $_GET['q'];
if ($qtoken===$_COOKIE["token"]){
$id=$_COOKIE["property"];
DISPLAY FILE HERE!!

提前致谢

最佳答案

您可能正在寻找的是 Paypal IPN(即时付款通知)..基本上有人从您那里购买产品..Paypal 将数据发布到您指定的脚本/url(只有您和他们知道)..然后您所做的是将数据发回 paypal,以确认他们发送的帖子是真实的,而不是由某人模拟/伪造的。此时您知道交易是有效的。

一旦您收到有效付款的通知,您可以执行一些操作,例如通过电子邮件发送下载 URL,或者使用 HTACCESS 身份验证等简单的方法将所有这些打包到一个小型登录/密码系统中,您就可以开始了。

祝你好运。

关于php - 如何阻止用户规避付款?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/241063/

相关文章:

iframe - 为什么浏览器允许在 iframe 的父(跨)域上设置 cookie?

javascript - 寻找一种将整数写入 cookie 的好方法

perl - Paypal IPN : unable to get local issuer certificate

php - 如何修复 magento 中的 getIdFieldName fatal error ?

php - 从数据库获取信息时遇到问题

php - 如何使用 php artisan serve 设置域名

php - 脚本执行后如何保存用户在表单页面输入的数据?

cookies - 如何生成有效的 Cookie

html - 具有网络标准的初始页面上的数量值

html - 使用 PayPal 立即购买按钮向卖家发送备注