0

我正在开发一个简单的电子商务网站。当用户进行购买时,它会触发几个同步的级联事件。一些数据被写入我们的数据库,信用卡供应商可以(或不)购买,更多的数据被写入我们的数据库,然后发送一封电子邮件。

Step 1. Initial Purchase info recorded on local database
Step 2. Purchase API called on Credit Card vendor
Step 3. Details of transaction written to local database
Step 4. Email receipt/alert sent

当这些步骤之一失败时,是否有经过验证的方法可以处理?例如,如果我们已经写入数据库,但信用卡交易失败。或者我们已经完成了第 1 步和第 2 步,但第 3 步失败了。我正在尝试了解基础知识-例如创建数据的“预购买-快照”是否更谨慎,然后在出现故障时回滚所有内容,或者创建“假购买”对象并假设一切正常,然后将其复制到实际数据库中。

欢迎任何建议。我在这方面远远超出了我的联盟。

干杯!

4

1 回答 1

0

我建议数据库信息在插入时是原子正确的。这与适当的标准化非常直接。

例如,如果客户输入他的地址,那么它就会保存到数据库中——即使客户未能下订单,它仍然有效。

同样,如果客户下订单——即使信用卡交易失败,这也是有效的——这在其他地方将是一个单独的事实。(在说允许运输步骤之前会检查这个事实)

电子邮件步骤可能会根据可用的事实更改其消息,但如果电子邮件服务器出现故障,您不希望回滚购买。

所以我的建议:正常化,并保留所有信息,然后在过程的关键步骤中适当地检查。- 不要回滚。

于 2013-07-10T13:50:44.573 回答