防止用户进行重复信用卡交易的最佳方法是什么?可以通过单击提交按钮太多次,或者从收据页面返回并再次单击提交按钮来实现。
答案 0 :(得分:8)
您可以生成唯一值,并将其置于隐藏表单中。在您对信用卡收费之前,请确保尚未处理此唯一值。这与CodeToGlory关于禁用按钮的建议相结合,可以解决您的两个用例。
答案 1 :(得分:4)
几种方式:
点击后立即停用该按钮。
有一个批处理过程可以在当天晚些时候从结算中删除重复项,因此不会向他们收费。
使用某种模态窗口阻止用户导航,直到处理完信用卡交易。 Jquery has block.UI plugin that can work for you.
答案 2 :(得分:3)
大多数银行要求您提供唯一订单ID,因此无法为同一订单收取两次费用。
现在,如果您要求防止重复提交,标准方式是 Post/Redirect/Get pattern 。您也可以将其与使用JavaScript停用提交按钮相结合。
你有:
现在,如果用户点击重新加载,则只重新加载静态thankyou.html
。如果他选择回击,请回到order_form.aspx
,但他的篮子已经空了。如果它以某种方式被缓存,它将被缓存使用相同的订单ID,因此没有在那里充电两次的风险。
答案 3 :(得分:1)
为您的后端系统添加某种同步机制,以便在任何一个时间点只有一个线程可以处理“收费”记录到您的基础数据源。在此同步区域内,添加一个检查以确保数据源中尚不存在即将处理的费用。如果确实发生了这样的错误,请确保向客户输出某种优雅的信息 - 至少在后端不会致命。
如CodeToGlory所示,它还有助于在UI级别添加第二层保护。这样可以最大限度地减少发生这种情况的次数。
答案 4 :(得分:0)
订购后立即移除购物篮项目并禁用提交按钮。
在这种情况下,即使用户回来,刷新等也无法购买两次,因为购物篮中没有任何东西可以购买。
答案 5 :(得分:0)
您可以在客户进入第一个结账页面时创建会话,然后在按下提交按钮时强制会话超时。这样客户就必须重新开始结账流程。