Каков наилучший способ добавить скидки к процессу заказа?

Допустим, веб-сайт продает продукты и хочет разрешить скидки с использованием кодов купонов. Каков наилучший способ структурировать это? Вот что я имею в виду, можете ли вы подтвердить, что это правильный путь? Любые другие предложения, пожалуйста? Как это делают другие?

Вот мое мышление:

В заказе будет указан продукт в качестве позиции заказа. Будет введен ввод кода купона, и при вводе правильного кода в заказ будет добавлена ​​новая позиция с отрицательным значением. Другими словами, теперь заказ будет состоять из двух пунктов:

  • Продукт - 10 долларов
  • Скидка - 5 $ Итого: 5 $

Это правильный подход к скидкам и купонам?

2 ответа

Есть несколько способов сделать это. Там нет одного решения. Тем не менее, вот несколько ошибок.

  • Пользователь удаляет скидку из корзины?
  • Пользователь добавляет несколько одинаковых кодов купонов?
  • У пользователя есть пустая корзина?

В конце концов, решение, которое применяет скидку по завершении заказа, будет наименее подвержено вышесказанному. Не пытайтесь отслеживать порядок и добавлять флаги в базу данных или сеанс. Это будет бесполезно. Вы действительно хотите сосредоточиться на тестировании, если условия купонов были выполнены. Envision функции, такие как applyCoupons() или же eligibleForDiscount($coupon),

У вас должно быть две реляционные таблицы в базе данных. Купоны имеют разные значения скидок?

Ты можешь иметь coupons таблицу с идентификатором, кодом, скидкой, и вы можете хранить код купонов через запятую в code поле, подобное этому (ABC, BBC, CCS) или по одному на строку.

если пользователь вводит идентификатор купона в поле ввода, проверьте его в базе данных, прочитайте discount и сделайте $final_price = $price * $discount (при условии, что вы сохраните скидку как 0.2 (для 20%) и так далее.

Если вы хотите разделить запятыми коды купонов, сделайте это, чтобы управлять ими:

$discount = 1;
while ( $var = mysql_fetch_assoc($result)) {
   $coupon = explode(',', $var['code']);
   $count = count($coupon);
   for ($i = 0; $i <= $count; $i++) {
     if($_POST['input_coupon'] == $coupon[$i]) { $discount = $var['discount'] }
   }

и тогда вы $ final_price = $ цена * $ скидка; Вы можете поместить его в запрос AJAX POST и вуаля;

Или используйте одну строку с каждым кодом купона и это проще.

Или выполните запрос JOIN (таблицы, связанные по id), чтобы упростить процесс.

Другие вопросы по тегам