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