1

我正在一个网站上工作,人们可以在该网站上注册课程的“时间段”。可用的日期/时间段存储在数据库中。当页面打开时,PHP 脚本会检查“booked”变量设置为“no”(默认值)的所有条目,并将它们显示为可用插槽。每个时段只有一个人可以注册。

我有 IPN 脚本,它将在付款完成后更新数据库并将时间段“预订”变量更改为“是”。都好。

为了避免可能的重复预订,一旦有人点击它,我需要暂时删除一个时间段。但是,如果有人注册但从未真正付款,会发生什么?(也就是说,他们填写了他们的姓名、电子邮件等,然后它会进入数据库,但是他们从不点击完成 PayPal 付款?)如果付款被取消或未验证,我的 IPN 脚本会重置 DB 表变量,但是如果他们一开始就没有使用 PayPal,就没有什么可以重置它的。

如果 PayPal 没有更新,是否有某种方法可以在一段时间后(例如 30 分钟)自动将“已预订”变量重置为“否”?或任何其他建议如何处理?

4

1 回答 1

0

正如评论所说,如果您还没有时间戳和状态字段,则应在表结构中添加它们。当有人去“预订”会话时,运行 Paypal API 的脚本应该将状态更新为挂起。现在,为了清除那些在您提到的“30 分钟”时间之后未支付的费用,在向感兴趣的人显示时间段的同一脚本中,就像您在此处描述的那样:

“当页面打开时,PHP 脚本会检查所有“booked”变量设置为“no”(默认值)的条目,并将它们显示为可用插槽。”

在将它们显示给用户之前,应在此脚本的开头添加一个小功能,以删除当前处于“待定”状态超过 30 分钟的那些。像这样的东西:

$deletetime = strtotime('-30 minutes');

mysql_query("DELETE FROM time_slots WHERE timestamp < '$deletetime' and status = 'pending'");
于 2013-06-14T21:40:13.950 回答