Коды купонов электронной коммерции: создать много уникальных купонов, которые соответствуют одной скидке?
Я делаю свой собственный сайт электронной коммерции с php. Я хочу предложить купоны для моих прошлых клиентов без рассылки универсального "10% СКИДКИ" всем, кто может распространяться как лесной пожар. Я хотел бы, чтобы каждый код был уникальным, но соответствовал известному значению скидки.
Есть ли плагин /framework/easy функция, которую я могу использовать, которая может оценивать коды купонов (строки) на лету, не заполняя мою базу данных всеми возможными комбинациями?
4 ответа
Попробуйте Voucherify - это API для кодов купонов. Используя их веб-приложение, вы сможете создать ваучерную кампанию, т.е. сгенерировать тысячи уникальных кодов, которые соответствуют той же скидке:
Затем вы можете интегрировать его в свой сайт электронной коммерции с помощью PHP SDK. Чтобы выкупить ваучер:
$result = $voucherify->redeem("unique-voucher-code", "customer-id");
Результат будет включать указанную скидку в $result->voucher->discount->percent_off
если данный код был действительным.
Полное раскрытие, я разработчик Voucherify.
Вы можете структурировать код купона таким образом, чтобы он мог определять тип купона без проверки БД (или вы могли бы хранить их в таблице, заполненной только типами купонов (см. Ниже), таким образом, вам не нужно хранить каждой возможной комбинации), затем добавьте в конец уникальный номер, который можно использовать для проверки, использовался ли купон ранее. Например:
d8h7bb0778719945
-> d8h7bb
тип купона (то же самое для всех других купонов этого типа) и 0778719945
это уникальный номер (отличается для всех купонов, независимо от типа).
Проверьте, является ли тип купона действительным для товара, приобретаемого первым. Если это так, проверьте 0778719945
по вашей базе данных купонов, чтобы увидеть, был ли он востребован или нет.
Поскольку вы пишете это сами, вот что я бы предложил.
Создайте новый тип купона, который при применении купона проверяет историю заказов вошедших пользователей, чтобы убедиться, что они разместили заказ раньше.
В таблице купонов добавьте следующие поля requireSignIn
а также requirePastOrders
, Создайте один купон с этими полями. Когда клиент пытается применить этот купон, выполните необходимые проверки, чтобы убедиться, что он вошел в систему и разместил заказ раньше. Показать соответствующие сообщения об ошибках, если эти тесты не пройдены.
Для компании, в которой я работал, мы создали генератор "код купона", который позволил нам генерировать миллионы самопроверкаемых кодов без затрат на их загрузку в базу данных.
Коды были рассчитаны следующим образом:
Создайте и храните соль из 16 или более символов.
Цикл счетчика от 0 до количества кодов - 1. Для каждого счетчика:
а. генерировать хеш счетчика и соли, скажем
md5(counter + salt)
б. генерировать код купона в качестве счетчика плюс хэш-значение
Затем, когда получен код купона, мы извлекаем счетчик, хешируем счетчик + соль и сравниваем его с найденным в коде хешем. Если они одинаковы, мы знаем, что код действителен.
Если продажа генерируется с использованием кода, мы записываем ее использование в таблицу, чтобы ее нельзя было использовать снова.
Для печатных СМИ мы сгенерировали коды купонов с использованием прописных 32-значных значений (2-9,AH,JN,PZ). Для электронных писем и URL-адресов мы использовали измененные значения base-64 (см. Urlsafe_b64encode ())
К сожалению, я не могу предоставить реальный код, так как он находится под NDA. Удачи!