2011-05-12 6 views
1

データベースへの支払いトランザクションを処理する最善の方法は何ですか?ここで支払いトランザクションと注文表?

は私が思いついたものです:

注文表

  • 受注コード(主キー)**
  • MEMBERID(FK)
  • たOrderTotal
  • ステータス(保留、処理 完了)
  • 有償(0,1)

支払い表

  • PaymentID
  • 受注(Ordersテーブルに関連した)(プライマリキー)
  • トランザクションステータス例えば

、もしからの2つの支払取引がありますPaymentsテーブルのOrderID-123。

一つは、衰退であり、もう一つはSucesssある

Sucesssの行がある場合、Orders.Paidは1

または何ソリューションが優れているになるのだろうか?

+0

DenisのPaymentIDと対応するOrderID –

答えて

4

私の経験では、衰退と成功は十分ではありません。カラフルなユースケースの中で、資金の清算(e-小切手など)、払い戻し(あなたによって作られたもの)、逆転(顧客/ APIプロバイダによるもの)、部分的な払い戻し/取り消し(例:犬のおもちゃ彼の食物ではなく、同じ注文内で)、払い戻し/取り消しを逆転した。

他にもサブスクリプションに固有のさまざまなケースはもちろんですが、サブスクリプションのアップグレードとダウングレード、サブスクリプションの変更、キャンセル、キャンセルの取り消し、ロックされたもの、およびそうでないもの。言うまでもなく

は、問題は、

正確な答えはあなたの特定の要件に依存など、あなたがアフィリエイトの支払い、ユーザーレスの請求書、異なる課金/出荷の連絡先、販売店に対処する必要がある場合であっても厄介になります明らかに、私はTシャツ会計の厳しさを満たすモデル(つまり、借方/勘定科目表での借方)を満たすモデルから出発して、あなたの特定の製品。

+0

+1との関連付けを忘れないでください。特にT元帳の概念に関しては特にそうです。負担金額の支払いやステータスの変更に関連する記録は、一度書かれて更新されるべきではありません。これにより、すべての遷移の監査証跡が得られます。あなたが考慮する必要がある別のしわは、支払い申請です。つまり、1回の支払いは複数の注文をカバーします。これは、(請求書とは対照的に)明細書の支払いがある場合は、間違いなく重要です。 –

関連する問題