用于处理多个支付网关的架构设计


9

这更多是一个需要反馈的问题。我正在设计一个处理多个支付网关的数据库。支付网关通常需要在付款之前有一张表,用于显示订单详细信息(这对于所有PG来说都是常见的),以及一个用于交易详细信息的表,用于存储在付款后的响应。

现在要处理多个支付网关,我可以保留一个交易表,用所有支付网关的所有可用字段填充该表,并在该字段中说明该行来自哪个PG。
或者,我可以为每个PG创建单独的事务表中包含前缀paypal_bank_等等,每一个都具有场他们每个人的需要。

我只是不确定哪种方法更理想。还需要针对以后可能遇到的类似情况学习它。


这取决于您的实际情况。通常,选择一个大表的子集比将许多小表与UNION合并要便宜。但是在某些情况下,小表设计会更好。
Walter Mitty 2012年

到目前为止你有什么?
亚伦

@ BryceAtNetwork23现在,我正在处理两个PG,并且它们都有单独的表。但是我将来必须添加更多的PG。因此,我在考虑是否应该继续执行此操作,因为每次必须不断添加更多表。在增加表数和增加列数和记录数的一个表之间进行选择。我有点困惑。
Bibhas 2012年

@Bibhas,是否可以与我们分享您使用的解决方案?我也有同样的疑问。
Marcio Mazzucato 2014年

@MarcioSimao我们就用一个表具有相似特性paypal_transaction_idbank_transaction_id等等。我们没有太多的支付网关,所以它为我们工作。可能无法与支持许多PG的人员一起使用。
Bibhas 2014年

Answers:


7

这取决于付款类型之间数据的差异。

对于我在工作中支持的网站,我们有一个表来存储所有付款类型的数据。这对我们有用,因为我们的付款类型基本上是4种信用卡和公司采购订单。我们的大多数客户都使用信用卡付款,因此数据没有很大的偏差。当然,对那些信用卡客户的查询总是在PONumber字段中产生NULL值。同样,对PO客户的查询会在所有与信用卡相关的字段中产生NULL。

如果您的数据中有很多不同的字段,则可以尝试使用一个主交易表,其中每个付款网关都有单独的表。每个支付网关类型表都有一个transaction_id外键,它将链接回到主交易表。

另一方面,如果您的支付网关类型都具有相似的字段,那么我会坚持使用一个交易表。


1
感谢您清理。我想它就在我眼前,但只需要有人指出。:)
Bibhas 2012年

@ BryceAtNetwork23,如果我有许多网关,例如5个或更多,您认为我将很难获取数据吗?我问这个问题是因为我认为主交易表必须在每种支付网关类型中进行许多左联接。
Marcio Mazzucato 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.