我正在使用 Micha 的 PayPal IPN 脚本,并且在大多数情况下效果很好:https ://github.com/Quixotix/PHP-PayPal-IPN
当我在网站上单击“立即付款”时,它会使用正确的信息重定向到贝宝,允许付款,但在返回时没有任何反应,即它不会按应有的方式升级用户。现在我已经在 IPN 之外测试了我的代码的脚本,它运行良好,所以在我看来 IPN 脚本正在丢失会话?
这是我的按钮代码:
<form name="_xclick" action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_xclick">
<input type="hidden" name="business" value="EMAIL_TO">
<input type="hidden" name="currency_code" value="GBP">
<input type="hidden" name="item_name" value="Text Light">
<input type="hidden" name="amount" value="0.01">
<input type="hidden" name="return" value="http://domain.co.uk/editors">
<input type="hidden" name="notify_url" value="http://domain.co.uk/account/upgrade">
<input type="submit" value="Pay now" class="btn btn-preview" name="submit" alt="Make payments with PayPal - it's fast, free and secure!">
</form>
所以通知 url(IPN 代码)是 /account/upgrade - 据我所知,这是它应该执行升级任务的地方?所以这是我的(精简)代码
if ($verified) {
$errmsg = '';
// some error checking
if (!empty($errmsg)) {
// manually investigate errors from the fraud checking
} else {
// upgrade user
$package = serialize($_SESSION['package']);
$this->db->update('users',array('id' => $_SESSION['user']['id']),array('payment_plan' => $package));
}
} else {
// not verified, investigate problems
}
如上所述,“// 升级用户”下的代码在外面可以正常工作,但从贝宝返回时,它显然没有保持会话。它没有抛出任何错误,它只是没有做任何事情。
我哪里出错了?我如何确保会话信息将从 PayPal 传回。
谢谢