未付款如何防止用户重新下单?

问题描述 投票:0回答:1

当用户创建订单时,我将其存储在数据库中并将用户重定向到支付平台,但如果用户没有完成购买并返回网站并创建新订单,它也会被存储。因此理论上可以存储 100 个未付款订单。

我被要求让用户只存储一个未付款的订单。创建订单无需用户登录。

我正在考虑按顺序存储会话令牌并在订单完成后将其删除,但我不知道这是否是正确的方法?

database-design payment
1个回答
0
投票

我被要求让用户只存储一个未付款的订单。 创建订单无需用户登录。

这个要求无法实现:我们当然可以实现每个经过身份验证的用户最多一个“草稿”订单的目标,但是,正如您提到的,我们只能对匿名用户进行相同的网络会话操作,当然,匿名用户可以通过多种方式创建任意独立会话。 人们可以考虑更精细地跟踪 IP 地址:但我建议反对这种做法以及类似的强化,至少有两个原因:1)它变得越来越复杂(而且脆弱!),我们仍然无法完全实现目标; 2)通常扰乱这些界面的自然流程只会困扰合法用户并影响不可预见但合法的用例,另一方面,例如DoS 攻击仍然非常简单...

总的来说,我建议我认为该场景的规范解决方案,即有一个作业服务器端来修剪早于特定设定时间段的“草稿”订单。 (虽然,如果 DoS 确实是一个问题,则应该以其自身的权利和条款来解决。)

© www.soinside.com 2019 - 2024. All rights reserved.