我正在尝试使用paypal ipn让我网站上的会员使用立即购买按钮购买高级会员资格。当我第一次尝试时它根本不起作用。经过一些更改后,我能够成功收到付款。唯一的问题是假设通过ipn进入我的数据库的数据是......不知何故不对。电子邮件地址是正确的,但txn_id错误,并且没有插入日期。事务结束时给出的事务id与插入到我的数据库中的事务id不匹配。
即使交易完成,它仍然会将我发送到return_cancel网址。
表columns-id(自动递增),txn_id(paypal交易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在交易完成后返回INVALID?是因为它是paypal沙盒的东西吗?
有谁知道这可能是什么原因,或者有人自己有这个问题吗?
答案 0 :(得分:0)
或者,互联网上有一些PHP Paypal IPN集成类,您尝试过这些吗?我已将其中两个链接起来,看看是否有帮助。
http://www.micahcarrick.com/php-paypal-ipn-integration-class.html
http://www.geniegate.com/other/paypal/
我希望这会有所帮助。