【问题标题】:How to prevent duplicate payments in a shopping cart application built using servlets?如何防止使用 servlet 构建的购物车应用程序中的重复付款?
【发布时间】:2014-11-27 11:54:40
【问题描述】:

在开发购物车应用程序时, 假设用户点击支付按钮,请求到达服务器,但由于网络连接速度慢,页面没有刷新。现在如果用户觉得点击没有反应,第二次点击按钮,如何避免重复支付?

【问题讨论】:

  • 您可以检查订单是否已经处理,如果已经处理则不处理...第二次提交应在数据库级别检查是否已处理,如果已经处理什么都不做……

标签: java servlets


【解决方案1】:

简单的解决方案:禁用控件。 更好的解决方案:添加到表单隐藏的 uuid 操作字段,并检查服务器端之前是否未处理操作。

【讨论】:

    【解决方案2】:

    您可以在会话对象中设置一个属性,每当您收到任何付款请求时,首先检查该会话的属性是否存在。如果是,则丢弃新的付款请求。

    付款后,从会话中删除该属性。

    HttpSession session = request.getSession();
    if(session.getAttribute("Payment") == null){
    
       session.setAttribute("Payment");
    
       //Process your payment here
    
      session.removeAttribute("Payment");
    }else{
       //Alert User that his payment is already in Process 
       //OR 
       //Do NOTHING
     }
    

    【讨论】:

    • ThnQ Anurag .. 我会尝试这种方法。
    • @sujith 不客气,试了之后告诉我结果。
    猜你喜欢
    • 1970-01-01
    • 2023-04-02
    • 2011-05-20
    • 2014-12-19
    • 1970-01-01
    • 2015-10-02
    • 2012-07-30
    • 1970-01-01
    • 2017-10-16
    相关资源
    最近更新 更多