Database design 是否需要存储由支付网关处理的交易?

Database design 是否需要存储由支付网关处理的交易?,database-design,e-commerce,Database Design,E Commerce,背景:我正在设计一个网站来提供一些在线服务。要使用任何服务,客户必须使用信用卡支付费用。该交易由支付网关处理,该网关保存了一份记录,记录了所收取的金额、持卡人姓名、信用卡号的最后四位数字和交易日期。如果返回成功响应,将运行一个代码来更新客户数据库,以使客户能够使用付费服务。否则,客户将被重定向到失败的事务页面 问题:由于这是我第一次设计电子商务应用程序,我想得到一些建议。我的问题是,在将数据传输到网关作为验证形式或出于会计目的之前,是否需要将存储在支付网关中的内容分别存储在交易表中。很高兴能听到

背景:我正在设计一个网站来提供一些在线服务。要使用任何服务,客户必须使用信用卡支付费用。该交易由支付网关处理,该网关保存了一份记录,记录了所收取的金额、持卡人姓名、信用卡号的最后四位数字和交易日期。如果返回成功响应,将运行一个代码来更新客户数据库,以使客户能够使用付费服务。否则,客户将被重定向到失败的事务页面


问题:由于这是我第一次设计电子商务应用程序,我想得到一些建议。我的问题是,在将数据传输到网关作为验证形式或出于会计目的之前,是否需要将存储在支付网关中的内容分别存储在
交易
表中。很高兴能听到那些在设计电子商务应用程序方面有实际经验的人的意见。谢谢大家!

我会记录客户名称、交易日期和时间、交易金额、支付网关响应,但不会记录抄送的任何详细信息,您不需要,所以不要保存抄送。这将允许您分析网站的使用情况,发现网关可能存在的问题等。假设网关返回某种形式的交易id,您可能也希望保留该id。

我没有从事过电子商务,但我曾为一家非常大的银行工作过一次,他们通常的策略是,总是用审计表保存与系统中发生的每个重要事务相关的数据

我认为这一点很重要,因为如果您以后发现系统中存在缺陷,您将始终有一个“回滚”选项,最重要的是,如果您公司内部有人试图欺诈或利用您的系统,那么如果您有审计表,将更容易捕获他们(我知道这听起来有点偏执,但银行总是对安全性持偏执态度)


最后,因为你是在处理别人的钱,我认为你应该至少在一段时间内跟踪你的交易。例如,你可以创建一个触发器来删除超过一年或两年的交易。

假设你没有提到存储(甚至没有访问)卡数据(号码/cvv等)这是一个完全不同的壶鱼,我会建议你存储任何你可以,只要你可以

  • 这是一个微不足道的、廉价的、易于存储的数据量
  • 能够在您自己的系统上跟踪交易的每一个细节以进行审计/客户查询等,肯定比依赖其他人要好
  • 在分析/报告方面,您可以随心所欲地使用它,而无需依赖第三方网关提供的服务
  • 如果网关提供商破产了怎么办
  • 如果您决定更改网关或实现其他网关,您将能够维护规范化事务数据的中央存储

我可以选择在传输前和传输后进行日志记录。要获得交易响应,我只能在传输后进行。在数据传输前是否需要进行日志记录?是否有会计用途?我可以随时登录支付网关网站查看交易记录。我不确定是否应创建副本或者在发送到支付网关之前创建一个流程来记录交易。关于回滚,我不知道我的应用程序应该如何进行,因为没有资金转账。这是一个很好的答案。我现在可以看到背后的原理。谢谢:)