我目前正在使用 PHP/MySQL 构建电子商务网站。最近,我一直在研究购物车集成。客户希望确保潜在买家可以获得库存,因此我创建了一个库存管理系统。购物车的工作原理如下:

  • 客户端添加一个商品的数量到
    他的购物车。
  • 商品数量从
    数据库中的可用库存。
  • 其他人无法购买 保留
    股票。
  • 库存保留到客户
    处理订单 - 那么库存在哪里
    从数据库中删除。
  • 如果客户放弃购物车,库存仍保留。
  • 如果另一个客户想要购买一件物品,但只有可用库存被另一个客户预留,那么如果预留库存已闲置 20 分钟,则该客户可以窃取该预留库存。

  • 我的问题是,这种场景的最佳实践是什么?我这样做正确吗?最主要的是客户不想出售他没有的股票。

    我希望就如何改进功能或其他人正在做些什么来实现这一点进行讨论。

    最佳答案

    另一种方法可能是在将库存放入购物车时不保留库存。每次重新加载页面时执行检查,如果该项目不再可用,则显示一条消息,例如“您要购买的项目刚刚售罄。很快就会有货”。然后您将产品从购物车中移除。

    现在,您绝对必须在开始付款操作之前保留购物车内容,然后根据付款的成功/失败将其从库存中移除或移除保留。您在一次代码运行中做得更好,以便储备尽可能短地持续。

    ProcessOrder ()
    {
        bool reserved = ReserveShoppingCartContents ();
        if (reserved)
        {
            bool paymentStatus = ProcessPayment ();
            if (paymentStatus)
                RemoveShoppingCartContentsFromStock ();
            else
                ReleaseShoppingCartReserve ();
        }
        else
        {
            RefreshShoppingCartContents (); // Remove positions or adjust quantities
            MessageBox ("Could not reserve your shopping cart contents. Please check out your selection");
        }
    }
    

    您的储备持续时间越短,您的商品实际售出的机会就越大。您将冲突的可能性降至最低:客户 A 从购物车开始,商品被保留,客户 B 来了,看到商品没有库存并离开,客户 A 决定他不喜欢这个价格并取消操作。您有两个潜在客户,但无法销售给任何一个。

    关于php - 购物车和库存管理,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1357143/

    10-13 01:44