没有正确写入MySQL数据库

时间:2015-05-20 20:15:01

标签: php mysql

我已经为网站设置了自动捐赠功能,但是当PayPal验证IPN时,数据没有写入数据库。 IPN日志写入webhost,它表示付款已经过验证,但没有数据写入数据库。

这是处理ipn的小片段

  if ($p->validate_ipn()) {

     $fh = fopen(".ipn", "a");
     fwrite($fh, print_r($p->ipn_data, true));
     fclose($fh);

     if($p->ipn_data["payment_status"] != "Completed") die();

     if($p->ipn_data["mc_gross"] > 0) {
         $user = $p->ipn_data["custom"];
         $date = $p->ipn_data["payment_date"];
         $prodid = $p->ipn_data["item_number"];
         $amount = $p->ipn_data["mc_gross"];
         $amountTickets = 1;

         //$user = str_replace("-", "_", $user);
         //$user = str_replace(" ", "_", $user);
         $user = str_replace("-", " ", $user);
         $user = str_replace("_", " ", $user);
         $user = mysql_real_escape_string($user);
         $conn = mysql_connect("localhost", "USERNAME", "PASSWORD");
         mysql_select_db('web_donations', $conn);
         mysql_query("INSERT INTO donation (username, time, productid, price, tickets) VALUES ('" . $user . "', '" . $date . "', '" . $prodid . "', " . $amount . ", " . $amountTickets . ");");
         $fh = fopen(".ipnerr", "a");
         fwrite($fh, mysql_error());
         fclose($fh);
         mysql_close($conn);
      }
  }

我没有收到任何错误。只是数据没有写入数据库,其他所有内容都在日志中验证。

编辑:我已经解决了这个问题,问题是:

 if($p->ipn_data["payment_status"] != "Completed") die();

付款是待定的,这意味着它永远不会通过这个阶段

1 个答案:

答案 0 :(得分:1)

为了实现这一点,你有一些事情要做,有些与PHP编程无关,因此,我不会发布源代码。您在手动调用时对它的评论表明culplrit是SSL证书。

去过那里!做到了!

1.-确保您的网站安装了SSL证书。 PayPal要求网站能够支持HTTPS而不仅仅是HTTP,它会通过HTTPS发送付款通知。

2.-如果您使用的是已保存的按钮请确保该按钮指向正确的HTTPS通知URL。

3.-您无法将error_reporting()的错误读取为sugested,因为这是PayPal与您的网站之间的交易。你唯一能做的就是保存某个地方(例如一个文件)a" flag"看看PayPal是否调用了URL,除非你执行第1步和第2步,否则不会这样做。

如果我记得,我会添加更多积分,现在检查一下。 :)