1

我正在尝试使用 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."'?

我现在解决了电子邮件问题。剩下的唯一一件事是为什么当交易完成时贝宝返回无效?是因为它是一个贝宝沙盒吗?

有谁知道这可能是什么原因,或者有没有人自己有这个问题?

4

1 回答 1

0

或者,互联网上有一些 PHP Paypal IPN 集成类,你试过吗?我已经链接了其中的2个,看看是否有帮助。

http://www.micahcarrick.com/php-paypal-ipn-integration-class.html

http://www.geniegate.com/other/paypal/

我希望这有帮助。

于 2011-07-09T15:52:47.320 回答