2011-05-12 168 views
1

處理支付交易到數據庫的最佳方式是什麼?支付交易和訂單表?

這裏是我想出了:

訂單表

  • 訂單ID(主鍵)**
  • MEMBERID(FK)
  • 的OrderTotal
  • 狀態(待定,加工 已完成)
  • 已付(0,1)

付款表

  • PaymentID(主鍵)
  • 訂單ID(與訂單表)
  • 日期
  • 事務狀態

例如,如果有兩筆付款交易付款表中的OrderID-123。

一是下降和另一種是Sucesss

如果Sucesss的一排,然後Orders.Paid將成爲1

或什麼是更好的解決方案?

+0

不要忘記將付款ID與其對應的OrderID – 2011-05-12 15:01:25

回答

4

根據我的經驗,拒絕和成功是不夠的。在豐富多彩的使用案例中,您可能會遇到成功支付,包括清理資金(例如電子支票),退款(由您提供),逆轉(由客戶/ api提供商提供),部分退款/逆轉(例如狗的玩具,但不是他的食物,在相同的順序),扭轉退款/逆轉。

更不用說訂閱固有的各種其他情況,例如,訂閱升級和降級,訂閱更改,取消,取消取消,鎖定,以及沒有。

不用說,問題就變得如果你需要處理的會員費,用戶少的發票,不同的計費/航運接觸,經銷商甚至更爲棘手,等

精確的答案取決於您的具體要求,很明顯,但我發現,從滿足T分類賬會計準則的模型開始(比如借記卡/賬戶圖表),您幾乎總是會變得更好,然後朝着您的特定產品努力。

+0

+1相關聯,用於Denis--特別是關於T分類賬的概念。與付款相關的記錄甚至欠款額的狀態變化應該全部寫入一次,並且從不更新。這會爲您提供所有轉換的審計跟蹤。您可能需要考慮的另一個摺痕是支付應用程序,即一次付款涵蓋多個訂單(的部分)。如果您支付報表(而不是發票),這一定很重要。 – 2011-05-12 16:33:13