Как продавать цифровые ключи?

Возможно ли реализовать продажу цифровых ключей через WordPress так что бы можно было загрузить за один заход сразу некое количество ключей и при покупке покупателю выдавался только один а количество в наличии уменьшалось, так что бы один и той же ключ не выдавался разным людям. Может быть есть плагины для реализации этого?
  • Вопрос задан
  • 398 просмотров
Решения вопроса 1
AlexNest
@AlexNest
Работаю с Python/Django
Выше уже предложили вариант с коммерческими плагинами. Если это не устраивает, то можете писать сами.
Полный цикл разработки описывать не буду, только укажу на те моменты, которые были заданы в вопросе и, по факту, являются ключевыми, про защиту, оптимизацию кода, структуры БД и прочее думайте сами.

1.Организовать хранение ключей.
Поскольку ключи, по определению уникальны, но активируют конкретный продукт, то хранить их нужно в отдельной таблице, связанной с таблицей товаров через внешний ключ. Какие еще поля будут в этой таблице - зависит только от потребностей заказчика.
2.Организовать выборку так, чтобы один ключ мог купить только один покупатель.
Как работает wordpress не знаю, но в sql* есть конструкция select ... for update, которая блокирует дальнейшую выборку строк до тех пор, пока не закончится текущая транзакция (включающая и блокировку и изменение нужных данных).
простой пример
START TRANSACTION;
 
  -- заблокировать нужное
  SELECT value FROM counters WHERE id = 1 FOR UPDATE;
 
   -- увеличить значение.
  UPDATE counters SET value = value + 1 WHERE id = 1;
 
  COMMIT;

Как именно разделять проданные и не проданные товары - опять же, решать вам, вариантов - несколько.
3.Загружать ключи.
Есть такой замечательный формат как csv. Как по мне, для загрузки большого количества данных он подходит наиболее хорошо. Плагины для работы с ним должны быть. С другой стороны это больше вопрос к тому, в каком формате вы их будете получать и уже от этого будет зависеть то, как выгружать их в базу.
* - точно есть в mysql и postgresql (и, по идее, любых других бд, поддерживающих транзакции)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
Напишите свой
По сути вам нужно 2 функции
GenerateKeyForUuid(string param)
GetKeysForUuid(string uuid)

первой передается json cо следующей структурой

{
uuid: 111111111111,
userName: "name",
start: 19.02.2021,
end: 19.02.2022,
product: "some prod"
}


в коде складываете строки кроме uuid и вычисляете хэш
таблица для хранения ключей
id
uuid
start
end
productId
hash

Функция возвращает сгенерированный хэш

Вторая функция просто возвращает массив хэшей для данного пользователя, по вкусу можно добавить название продукта, старт, стоп
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы