gpt4 book ai didi

php - 未正确写入 MySQL 数据库

转载 作者:行者123 更新时间:2023-11-29 12:12:48 25 4
gpt4 key购买 nike

我为网站设置了自动捐赠功能,但当 Paypal 验证 IPN 时,数据没有写入数据库。 IPN 日志写入网络主机,显示付款已验证,但没有数据写入数据库。

这是处理 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();

付款处于待处理状态,这意味着它永远不会通过此阶段

最佳答案

为了让它工作,你必须做一些事情,一些与 PHP 编程无关,所以,我不会发布源代码。您对手动调用时它的工作情况的评论表明罪魁祸首是 SSL 证书。

去过那里!做到了!

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

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

3.- 您无法按照建议使用 error_reporting() 读取错误,因为这是 PayPal 和您的网站之间的交易。您唯一能做的就是在某处(例如文件)保存一个“标志”,以查看该 URL 是否由 PayPal 调用,除非您执行步骤 1 和 2,否则这是不会的。

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

关于php - 未正确写入 MySQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30359535/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com