【问题标题】:payment transactions and order table?付款交易和订单表?
【发布时间】:2011-08-24 05:06:43
【问题描述】:

处理数据库支付交易的最佳方式是什么?

这是我想出的:

订单表

  • OrderID(主键)**
  • 会员 ID (FK)
  • 订单总数
  • 状态(待处理,处理中 已完成)
  • 付费 (0, 1)

付款表

  • PaymentID(主键)
  • OrderID(与 Orders 表相关)
  • 日期
  • 交易状态

例如,如果 Payments 表中有两个来自 OrderID-123 的付款交易。

一个是Decline,另一个是成功

如果有一行Successs,那么Orders.Paid会变成1

或者什么是更好的解决方案?

【问题讨论】:

  • 别忘了将 PaymentID 与其对应的 OrderID 关联起来

标签: mysql database-design payment


【解决方案1】:

根据我的经验,衰落和成功是不够的。在丰富多彩的用例中,您可能会遇到等待资金清算的成功付款(例如电子支票)、退款(由您进行)、撤销(由客户/API 提供商进行)、部分退款/撤销(例如狗的玩具但不是他的食物,在同一个订单内),撤销退款/撤销。

更不用说订阅固有的各种其他情况,例如订阅升级和降级、订阅更改、取消、取消取消、锁定等等。

不用说,如果您需要处理附属付款、无用户发票、不同的计费/运输联系人、经销商等,问题会变得更加棘手。

显然,确切的答案取决于您的具体要求,但我发现从满足 T 分类帐严格要求的模型开始(即带有科目表的借方/贷方)几乎总是更好),然后逐步开发您的特定产品。

【讨论】:

  • Denis +1 - 特别是关于 T-ledger 的概念。与付款相关的记录,甚至欠款的状态变化都应该只写一次,永远不要更新。这为您提供了所有转换的审计跟踪。您可能需要考虑的另一个问题是付款申请,即一次付款涵盖(部分)多个订单。如果您有账单付款(而不是发票),这肯定很重要。
猜你喜欢
  • 1970-01-01
  • 2013-02-06
  • 1970-01-01
  • 1970-01-01
  • 2013-06-12
  • 2012-12-17
  • 2014-06-11
  • 1970-01-01
  • 2012-07-05
相关资源
最近更新 更多