Alışveriş Sepeti ve stok yönetimi

1 Cevap php

Şu vea PHP / MySQL ile bir e-ticvardırt sitesi içindeşa ediyveyaum. Son zamanlarda, Alışveriş Sepeti entegrasyonu üzeriçindede çalışıyveya. İstemci stok potansiyel alıcılar içiçinde mevcut değildi emiçinde olmak istedim, bu yüzden bir stok yönetim sistemi oluşturdu. Aşağıdaki gibi alışveriş sepeti çalışır:

  • Client adds a quantity of an item to his cart.
  • Item quantity is reserved from available stock içinde the database.
  • No one else can purchase reserved stock.
  • Stock remaiçindes reserved until client processes veyader - nerede stock is then removed from database.
  • Müvekkilim arabası terk ederse, stok mahfuzdur.
  • Başka bir müşteri bir öğeyi satın almak istediği, ancak mevcut stok başka bir istemci tarafından rezerve edildi ise, 20 dakika boyunca etkiçinde olmuştur, daha sonra istemci saklıdır stok çalabilir.

Benim sveyau senaryo bu tür içiçinde en iyi uygulamaları nelerdir, nedir? Ben bu doğru yapıyveya muyum? Ana şey müvekkiliçindeiçinde olmadığını hisse senedi satmak istemiyveya olmasıdır.

Ben işlevselliğiçindei artırmak içiçinde nasıl bir tartışma var arıyveyaum, ya da başkalarının bu gerçekleştirmek içiçinde yapıyveyauz.

1 Cevap

Alternatif bir yaklaşım alışveriş sepeti koyarak üzerine bir stok rezerve etmek olmayabilir. Bir sayfa tekrar, her seferinde bir kontrol yapmak, öğe "satın almak isteyen madde sadece dışarı satıldı. Kısaca mevcut olacak" gibi bir mesaj görüntüler, artık mevcut olmalıdır. Ve alışveriş sepeti ürünü kaldırabilirsiniz.

Şimdi, kesinlikle size stoktan kaldırmak veya ödeme başarı / başarısızlık bağlı olarak rezerv kaldırın, sonra da ya ödeme işlemini başlatmak hemen önce alışveriş sepeti içeriği ayırmak zorunda. Rezerv olabildiğince kısa sürer, böylece bir kod vadede daha iyi yapmak.

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");
    }
}

Briefer sizin rezervi madde aslında satışa sunulacak şansı daha yüksek, sürer. Eğer bir çatışma olasılığını en aza indirmek: Customerï alışveriş sepeti ile başlar, madde ayrılmış olur, CustomerB gelir, madde stoku üzerinde değildir ve uzağa gider, Customerï o fiyatı sevmiyor karar verir ve işlemi iptal görür. Siz iki potansiyel müşterileri vardı ama birine satmak olamazdı.