首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >只使用Auth的信用卡交易是否应该与Auth捕获事务分开存储在数据库中?

只使用Auth的信用卡交易是否应该与Auth捕获事务分开存储在数据库中?
EN

Stack Overflow用户
提问于 2016-09-14 20:42:07
回答 2查看 537关注 0票数 3

背景

我已经建立了一个电子商务应用程序,连接到Authorize.net的支付网关。管理员可以通过以下方式处理信用卡:

  1. “捕获”交易,管理员立即收取客户的信用卡费用。
  2. “仅限8月”事务,其中管理员授权$X从信用卡,然后实际捕获金额后(见下面第3)
  3. “优先-8月-捕获”事务,其中管理员捕获的金额等于或少于以前捕获的金额,从一个“只在八月”的事务。

这个问题涉及如何将这些类型的事务存储在数据库中。我的“支付”表中有以下模式:

当进行新的支付时,我将有关支付方法的信息存储在PaymentAmount字段中(例如信用卡、支票、现金)。

如果PaymentType是“信用卡”,我存储TransactionType (例如,捕获,只在八月,之前-8月-捕获“)。

PaymentAmount列保存支付金额(如果TransactionType是“捕获”或“优先捕获”)。如果TrandactionType是“只在八月”,我会将金额存储在AuthorizedAmount列中,并跟踪在AuthExpDate中使用的auth金额适合的日期。

与Authorize.net的事务/引用数据相关的字段存储在ApprovalCode和TransactionID列中。

回到问题上

现在您有了一些背景知识,让我们深入了解我的问题的细节:每个事务应该在这个表中获得它自己的记录吗?或者,当我从这些交易中获取资金时,是否应该更新现有的“仅限于八月”的交易?

示例:

  1. 每个动作的新记录:如果一个用户做了一个“只允许”的事务,我将在Payments表中创建一个新记录。如果用户稍后在初始事务上运行“优先捕获”事务,我应该在数据库中创建第二行,还是应该更新原始事务并将捕获的金额添加到PaymentAmount列中? TransactionID PaymentType PaymentAmount AuthorizedAmount PaymentAmount 1 ABC123 Auth 0.00 100.00 2 ABC123 8月-捕获100.00 0.00
  2. 每个TransactionID的单行,并使用每个自动捕获更新原始事务。 TransactionID PaymentType PaymentAmount AuthorizedAmount 1 ABC123 100.00 100.00

从逻辑上讲,我可以看到这两种情况的论据。一方面,如果我为每个事务创建一个新的行,我可以看到每个“仅限”事务的每一个命中事件的良好历史。缺点是在这样的情况下,您对单个“仅限”事务进行多个“先捕获”事务,因为要计算出还剩下多少,您必须编写一个稍微复杂一些的查询(将表加入到自己并由TransactionID分组以得到PaymentAmount之和)。

如果我为每个TransactionID创建一个行,那么我可以很容易地更新PaymentAmount并使用简单的计算(AuthorizedAmount - PaymentAmount = AuthorizedBalance)来计算auth中剩余的数量。这种方法还使事情变得更简洁,因为TransactionID、ApprovalCode、Payment和几乎所有其他东西都将保持不变,因此表中的冗余数据更少。此外,从报告的角度来看,为了简单起见,大多数用户只是希望看到每个事务的一行。

我很想听听你对解决这个问题的正确方法的想法。

EN

回答 2

Stack Overflow用户

发布于 2016-09-15 10:14:39

为了简单起见,我将避免失去数据/灵活性的诱惑;如果您更新原始行,如何独立地确定auth /捕获的日期/时间?拍了多少次?每个网关API返回的单独的auth代码和其他新值是什么?

如果有很多重复的字段,在不同的事务类型之间共享相同的值,那么通过将它们移动到一个新表并存储一个ID值来实现正常化。

票数 1
EN

Stack Overflow用户

发布于 2016-09-15 14:12:21

我不认为这里有任何正确或错误的答案(因此问题应该以意见为基础结束)。不过,我建议第三条路.

使用您的“更新行”模型,但随后添加一个新表,用于存储与Authorize.net的低级别通信。新表将捕获付款id、日期/时间、auth类型、auth值等。

这样,您就有了可以调试的东西,以及每张卡的日期/时间/值的历史记录,以及它们创建和充电的时间。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39499340

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档