【发布时间】:2011-10-01 17:43:30
【问题描述】:
我正在尝试使用 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."'???
我现在解决了电子邮件问题。剩下的唯一一件事是为什么当交易完成时贝宝返回无效?是因为它是一个贝宝沙盒吗?
有谁知道这可能是什么原因,或者有没有人自己遇到过这个问题?
【问题讨论】:
-
用很少的信息有很多可能性与贝宝沙盒一起玩
-
你能给出一些可能性吗?我检查了语法,我在我的 paypal 帐户中启用了 ipn,并在具有 paypal 立即购买按钮的表单中,我真的迷路了。
-
还有什么会导致交易完成,但返回为无效?
标签: php mysql paypal-ipn paypal-sandbox