Gow*_*wri 5 mysql database-design
我需要有关付款流程的最佳销售模式的建议。基本上我的系统是一种市场。有两种交易。
客户将全额支付给管理员。
管理员将收取一些费用并向卖方付款。
所以对于单笔订单,我们需要做两笔交易。但 Paypal 提供延迟链式付款选项,可在单笔交易中进行,如下所示。
但我不确定其他主要支付网关是否证明了这个选项。所以我想为两者设计兼容的数据库。
注意:我想在这个时候付款后通知客户我不知道谁会是卖家。在一定的时间点后,管理员将选择卖家,管理员将向卖家发放付款。在这里,我想为卖家和客户发送通知。
从上面,我需要为两个交易使用唯一的 order_id。那么我应该将订单分成两份并存储为两条记录,还是可以在单个订单行中管理它。针对这两种情况建议我可靠的和更好的设计模式。
我试过的!
帮帮我!
我发现在金融交易中,您希望对每次资金流动都有详细的审计跟踪。这意味着包含使用复式记账模型的资金变动的一次写入(无更新)表。
在一个简单的版本中,您将有一个包含收款人和付款人(您的发送者、管理员和接收者)列表的表格。然后你会有另一个包含金融交易的表(或更好的两个)。表大致如下:
PARTY : 姓名、地址、银行账户、有关付款人/收款人的其他详细信息。
TRANSACTION : 日期、交易 ID、订单参考、其他一般信息。
TRANSACTION-DETAIL:FK 到交易,FK 到当事人,金额。
当有人进行简单的付款时,您会记录一个TRANSACTION
和两个TRANSACTION-DETAIL
记录。第一个记录显示谁付款,第二个记录显示谁付款。两个详细信息的金额总和必须为零,这意味着您需要为正和负金额选择一个约定,这样一个意味着给钱,另一个意味着获得钱。
如果交易更复杂,您只需添加更多TRANSACTION-DETAIL
记录,例如,不是一个人获得报酬,而是两个人获得报酬(例如管理员和卖家)。
虽然任何交易的交易明细金额总和为零,但任何给定金额的总和PARTY
可能不为零,这意味着您的系统中有他们的一些钱。要清算这些金额,您需要PARTY
代表您与之打交道的任何付款结算组织或银行。这些是资金的最终来源和来源,从长远来看,它们的余额不需要为零。
所有这一切可能看起来很复杂,尤其是与您的想法相比,但它的优点是它允许您详细记录发生的事情和发生的时间。如果您需要进行更新,即取消和订购或发出贷记单,只需添加更多交易和交易详情。你总是可以回去看看到底发生了什么。数百年来,这种惯例是人们处理和核算金融交易的方式,因此,如果不出意外,人们就会明白您在做什么。
这是一个包含一些数据的示例。在此示例中,买方 X 为订单支付 100.00。代理商收取 10.00 并支付给卖方 1 40.00 和卖方 2 50.00。他们的买家用贝宝和代理付款,两个卖家都将钱存入两家银行之一。请注意,此示例非常简单,因为代理商和卖家仅在一次订单后就清算了他们的帐户。在实际场景中,许多订单的付款可能会在结算之前分批进行。
请注意,对于 OP 确定卖方可能会延迟的情况,该机构需要拥有某种托管账户。这将是一个附加方,例如“未结订单付款”。在这种情况下,该机构可以立即收取费用,余额将存入托管账户。当稍后确定卖方时,他们将从托管账户中支付,而不是从买方账户中支付,如上例所示。
另请注意,虽然每笔交易都显示有上面的两个详细信息,但如果您碰巧想以这种方式记录一笔交易的三个或更多详细信息,那么它也是合法的。例如,如果您愿意,8001、8002 和 8003 中的所有详细信息都可以表示为单个事务。