НОВИНКА!
Занимательная математика от Трепачёва. Присоединяйтесь к нам!
141 of 152 menu

Таблица oc_subscription_plan

Таблица oc_subscription_plan является ключевой для функционала подписок в OpenCart, начиная с версии 4.x. Она хранит шаблоны планов подписок, которые затем могут быть назначены на товары для организации рекуррентных (повторяющихся) платежей.

Поля

Поле Тип данных Описание
subscription_plan_id int Уникальный идентификатор плана подписки. Первичный ключ таблицы.
trial_price decimal(10,4) Цена пробного периода подписки. Если установлена, клиент будет платить эту сумму в течение пробного периода, после чего начнутся платежи по основной цене.
trial_frequency enum('day', 'week', 'semi_month', 'month', 'year') Единица измерения для длительности пробного периода (день, неделя, полмесяца, месяц, год).
trial_duration int Длительность пробного периода в единицах, указанных в trial_frequency. Например, если trial_frequency = 'day' и trial_duration = 7, пробный период составит 7 дней.
trial_cycle int Количество повторений пробного периода. Например, если установлено в 2, пробный период повторится дважды.
trial_status tinyint(1) Флаг, указывающий, активен ли пробный период для данного плана (1 - да, 0 - нет).
price decimal(10,4) Основная цена подписки за один платежный цикл.
frequency enum('day', 'week', 'semi_month', 'month', 'year') Единица измерения для основного платежного цикла (день, неделя, полмесяца, месяц, год).
duration int Длительность основного платежного цикла. Определяет, как часто будет списываться плата price. Например, frequency = 'month' и duration = 1 означает ежемесячные платежи.
cycle int Количество платежных циклов. Указывает, сколько раз будет произведен платеж. Например, значение 12 означает, что подписка активна 12 циклов (например, 12 месяцев). Значение 0 означает бессрочную подписку до момента ее отмены.
status tinyint(1) Статус плана подписки (1 - включен, 0 - выключен). Выключенные планы нельзя выбрать при оформлении заказа.
sort_order int Порядок сортировки плана подписки при отображении в списке на странице оформления заказа.

Как это работает

Администратор создает в админ-панели (Раздел "Каталог" → "Планы подписок") различные планы, например: "Ежемесячная подписка", "Годовая подписка со скидкой", "Пробная неделя". Каждый план сохраняется как запись в таблице oc_subscription_plan.

Затем эти планы назначаются на конкретные товары через вкладку "Подписка" в карточке редактирования товара. Покупатель, добавляя такой товар в корзину, видит опцию выбора плана подписки.

При оформлении заказа с подпиской создается запись в таблице oc_subscription, которая ссылается на subscription_plan_id и содержит индивидуальные данные подписки (дату следующего платежа, статус и т.д.). Платежи обрабатываются через механизмы оплаты, поддерживающие рекуррентные списания.

Поля trial_* позволяют настроить пробный период с особой ценой и длительностью, что является стандартной практикой для монетизации подписок.

Пример SQL-запроса

Выбрать все активные планы подписок с пробным периодом можно следующим запросом:

SELECT * FROM oc_subscription_plan WHERE status = 1 AND trial_status = 1 ORDER BY sort_order;

Смотрите также

  • таблицу oc_subscription,
    которая хранит активные подписки покупателей
  • таблицу oc_product_subscription,
    которая связывает товары с планами подписок
  • таблицу oc_product,
    которая содержит данные о товарах
  • таблицу oc_order_subscription,
    которая хранит историю платежей по подпискам
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить