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

Таблица oc_order_subscription

Таблица oc_order_subscription хранит данные о подписках, созданных из заказов. Каждая запись представляет собой отдельную подписку на товар, которая может иметь свой собственный график платежей и статус.

Поля

Поле Тип данных Описание
order_subscription_id int Уникальный идентификатор подписки.
order_id int Идентификатор заказа, из которого была создана подписка. Внешний ключ для таблицы oc_order.
order_product_id int Идентификатор товара в заказе. Внешний ключ для таблицы oc_order_product.
subscription_plan_id int Идентификатор плана подписки. Внешний ключ для таблицы oc_subscription_plan.
trial_price decimal(10,4) Цена пробного периода подписки.
trial_frequency enum('day', 'week', 'semi_month', 'month', 'year') Частота оплаты для пробного периода (день, неделя, полмесяца, месяц, год).
trial_cycle int Количество интервалов пробного периода (например, 2 месяца).
trial_duration int Продолжительность пробного периода в указанных интервалах.
trial_remaining int Количество оставшихся платежей пробного периода.
trial_status tinyint(1) Статус пробного периода (1 - активен, 0 - неактивен).
price decimal(10,4) Основная цена подписки после пробного периода.
frequency enum('day', 'week', 'semi_month', 'month', 'year') Частота оплаты для основного периода подписки.
cycle int Количество интервалов основного периода.
duration int Продолжительность основного периода в указанных интервалах.
remaining int Количество оставшихся платежей основного периода.
date_next datetime Дата следующего платежа по подписке.
status tinyint(1) Общий статус подписки (1 - активна, 0 - неактивна).

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

Когда клиент оформляет заказ с товаром, который имеет подписку, система создает запись в таблице oc_order_subscription. Эта запись содержит все параметры подписки: цену, частоту платежей, продолжительность, а также информацию о пробном периоде, если он предусмотрен.

Система регулярных платежей OpenCart использует эту таблицу для управления подписками. Cron-задача или другой механизм планирования проверяет таблицу на наличие подписок, у которых наступила дата следующего платежа (date_next), и инициирует процесс списания средств.

После успешного платежа система обновляет поля remaining (уменьшает количество оставшихся платежей) и date_next (устанавливает новую дату следующего платежа в соответствии с настройками частоты).

Когда количество оставшихся платежей (remaining) достигает 0, подписка автоматически переходит в неактивный статус.

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

Получить все активные подписки с информацией о заказе и товаре:

SELECT os.*, o.order_id, o.email, op.name as product_name FROM oc_order_subscription os LEFT JOIN oc_order o ON (os.order_id = o.order_id) LEFT JOIN oc_order_product op ON (os.order_product_id = op.order_product_id) WHERE os.status = 1;

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

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