2012-08-02 147 views
1

我正在从事电子商务网站。该网站应与付款处理器集成。我有以下的订单表。电子商务网站设计

orders(InnoDB) 
----------------------- 
id int PRIMARY KEY 
user_account_id int 
item_id int 
price decimal(6,2) 
payment_mode ENUM(cash,pg) 
payment_status(pending,paid,lost) 
order_timestamp Timestamp 

当订单被放置,PAYMENT_STATUS将 '未决'。用户被重定向到付款处理器。如果付款被授权,payment_status应被更新为'付款'。如果交易丢失(或)未授权的payment_status应更新为 '丢失'。我想给用户30分钟付费。如果他在30分钟内未付款,payment_status将被更新为丢失,并且订购的物品将被卡入并可供其他人预订。

那么,这是如何实现的?如何在30分钟后运行脚本以更新订单(或)我应该每隔5分钟使用一次cron-job检查丢失的交易?

+1

我可能使用事件schedular http://dev.mysql.com/doc/refman/5.1/en/events-overview.html – 2012-08-02 01:45:00

+0

为什么没有从支付处理器决定结果?通常情况下,订单将保留为待处理状态,您可以运行cron并检查“停滞”订单。否则,付款处理器应提供状态更新。 – Jakub 2012-08-02 01:45:09

+0

@RPM我们可以在事件调度程序中使用事务吗? – ravi 2012-08-02 05:00:15

回答

0

我早就这样做了,在应用商店挂起的交易信息,并与计时器后30分钟更新数据库+的cron任务everуñ分钟(可靠性)

UPD: 哎呀,没有注意到PHP的标签。作为变体,更新付款状态之前选择按状态付款