2012-08-02 144 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的標籤。作爲變體,更新付款狀態之前選擇按狀態付款