电子交易的一个很基本的问题,就是避免用户下重复订单。用户明明想买一次,结果一看下了两个单。如果没有及时发现,就会带来额外的物流成本和扯皮。对商家的信誉也不好看。
工具/原料
pc
方法/步骤
1、在技术方面,这是一个分布式一致性的问题,即客户端和服务器端对某个订单是否成功/失败嚼秒躞句达成一致。防止重单的关键是使用一个由客户端生成的,可用于避免重复的key,俗白镢梧螂称dedupkey(deduplicatekey之意)。这个key可以用任意可以保证全局唯一性的方式生成。
2、客户端需要实现这样一个下单界面。用户点击【确认下单】时,应该产生一个独一无二的dedupkey,连定订单数据发送给服务器端。在服务器返回之前,该界面应该一直等待,直到服务器响应成功/失败或者超时发生(比如15秒后,收不到服务器响应)。
3、比如下单的按键在点按之后,在没有收到服务器请求之前,按键的状态没有设为已禁用状态,还可以被按。
4、如果超时发生,应该向用户提示是否重试下撮劝丛食单或者退出该界面。当用户点击【重试】时,应该用刚刚生成的dedupkey来再次发送下单请求——如果用挥年抵遂户一直不退出这个流程,每次用户点击重试,都应该用这个dedupkey来重试下单,直到服务器正常返回,或者用户放弃返回。
5、用户的设备与服务器之间可能是不稳定的网路。这样一个下单请求过去,返回不一定回得来。