如何阻止用户规避付款?

10 php cookies paypal

我有一个使用paypal收集电子显示数据付款的网站.变量不能通过paypal传递URL(或者我无法让它们工作)所以我使用cookie来传递项目编号.但是,在cookie写入部分之后,一个狡猾的用户可以直接在地址栏中输入paypal重定向URL并免费获取电子数据.绕过贝宝.我怎么能绕过这个?

这是一些代码.您将看到我试图通过直接通过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!!
Run Code Online (Sandbox Code Playgroud)

提前致谢

Dre*_*erx 12

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

一旦您收到有效付款的通知,您可以执行类似的操作,例如通过电子邮件发送下载URL,或使用像HTACCESS auth这样简单的东西将所有内容包装到一个小型登录/密码系统中,您就可以开始使用了.

祝好运.

  • 您需要正确解决问题一次,或者继续使用URL跟踪等黑客修复程序,以便人们最终能够规避.如果没有正确解决问题可能会使您在欺诈中失去更多销售额.IPN肯定是要走的路. (3认同)
  • 我在我的销售系统中使用PayPal IPN,效果很好.通知在付款后的几秒钟内发出,然后我只是通过电子邮件向该人发送密钥.自从我开始使用它以来一直很好用. (2认同)

Mar*_*iek 11

我认为你无法通过所采用的方法一步完成你想做的事情,因为你的代码无法知道交易是否真的成功完成.

我认为上述方法的唯一方法是,如果您不自动将它们发送到他们付费的文件.

相反,他们必须等待您通过Paypal验证他们的交易,然后通过电子邮件向他们发送下载链接.


它可能都可以使用Paypal API自动完成.我不熟悉Paypal API,但它应该像这样工作.

  1. 用户决定从您那里购买东西
  2. 您启动一个将用户发送到Paypal的交易,并且可能会生成某种交易ID.
  3. 用户付款(或决定取消和/或不付款)
  4. 用户返回您的站点
  5. 您获取交易ID并验证付款是否成功
  6. 如果付款成功,请向用户提供他们付款的内容.

Paypal API参考