Таблица 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,
которая хранит историю платежей по подпискам