我正在尝试使用 paypal ipn 让我网站上的会员使用立即购买按钮购买高级会员资格。当我第一次尝试它时,它根本不起作用。经过一些更改后,我能够成功收到付款。唯一的问题是假设通过 ipn 进入我的数据库的数据......不知何故不正确。电子邮件地址是正确的,但 txn_id 是错误的,并且没有插入日期。在事务结束时给出的事务 id 与插入到我的数据库中的不匹配。
此外,即使交易完成,它仍然会将我发送到 return_cancel 网址。
表列 - id(自动递增)、txn_id(贝宝交易 ID)、电子邮件(买方)
// assign posted variables to local variables
$txn_id = $_POST['txn_id'];
$payer_email = $_POST['payer_email'];
$user_id = mss($_POST['custom']); //user id
$curdate = date("Y-m-d H:i:s");
if (!$fp) {
// HTTP ERROR
} else {
fputs ($fp, $header . $req);
while (!feof($fp)) {
$res = fgets ($fp, 1024);
if (strcmp ($res, "VERIFIED") == 0) {
$update_prem = mysql_query("UPDATE `users` SET `accountype` = '2' WHERE `users`.`id` ='".$user_id."'");
$log_query=mysql_query("INSERT INTO `log` (`id`, `txn_id`, `date`, `email`) VALUES ('','".$txn_id."', '".$curdate."','1".$payer_email."')");
}
else if (strcmp ($res, "INVALID") == 0) {
// log for manual investigation
$log_query=mysql_query("INSERT INTO `pplog` (`lid`, `txn_id`, `date`, `email`) VALUES ('','".$txn_id."', '".$curdate."','000".$payer_email."')");
}
}
fclose ($fp);
}
同样在代码中显示“1”.$payer_email."' 和 '000".$payer_email."',我曾经让我知道记录的值是 VALID 还是 INVALID 日志。前几次,它被记录了两次,然后我弄清楚为什么会这样,但现在它只记录了一次,但只是 '".$payer_email."'?
我现在解决了电子邮件问题。剩下的唯一一件事是为什么当交易完成时贝宝返回无效?是因为它是一个贝宝沙盒吗?
有谁知道这可能是什么原因,或者有没有人自己有这个问题?