Таблица oc_order_recurring
Таблица oc_order_recurring предназначена для управления подписками на регулярные платежи, которые были созданы из заказов. Она отслеживает статус, историю и параметры повторяющихся списаний.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
order_recurring_id |
int |
Уникальный идентификатор подписки на регулярный платеж. |
order_id |
int |
Идентификатор исходного заказа, из которого была создана подписка. Внешний ключ для таблицы oc_order.
|
reference |
varchar(255) |
Уникальный идентификатор подписки, присвоенный платежным шлюзом (например, PayPal, Stripe). Используется для взаимодействия с API платежной системы. |
product_id |
int |
Идентификатор товара, для которого создана подписка. Внешний ключ для таблицы oc_product.
|
product_name |
varchar(255) |
Название товара на момент создания подписки. Сохраняется для исторической целостности. |
product_quantity |
int |
Количество товара в подписке. |
recurring_id |
int |
Идентификатор профиля регулярного платежа. Внешний ключ для таблицы oc_recurring.
|
recurring_name |
varchar(255) |
Название профиля регулярного платежа на момент создания подписки. |
recurring_description |
varchar(255) |
Описание профиля регулярного платежа (например, "Ежемесячная оплата в течение 12 месяцев"). |
recurring_frequency |
varchar(25) |
Частота платежей (например, 'day', 'week', 'semi_month', 'month', 'year'). |
recurring_cycle |
int |
Количество единиц частоты между платежами (например, при frequency='month' и cycle=2 - платеж каждые 2 месяца). |
recurring_duration |
int |
Общее количество платежей в подписке (0 = бесконечно). |
recurring_price |
decimal(10,4) |
Стоимость одного регулярного платежа. |
trial |
tinyint(1) |
Флаг trial-периода (1 - есть trial, 0 - нет trial). |
trial_frequency |
varchar(25) |
Частота платежей в trial-периоде. |
trial_cycle |
int |
Количество единиц частоты между платежами в trial-периоде. |
trial_duration |
int |
Продолжительность trial-периода в количестве платежей. |
trial_price |
decimal(10,4) |
Стоимость trial-периода. |
status |
tinyint(4) |
Статус подписки (1 - активна, 2 - приостановлена, 3 - отменена, 4 - приостановлена до ответа, 5 - истекла). |
date_added |
datetime |
Дата и время создания подписки. |
Как это работает
Когда клиент оформляет заказ на товар с включенной опцией регулярных платежей, после успешной оплаты начального заказа в таблице oc_order_recurring создается запись. Эта запись содержит все параметры подписки: частоту, стоимость, продолжительность и ссылку на исходный заказ.
Поле reference критически важно, так как содержит идентификатор подписки в платежной системе. Этот идентификатор используется cron-задачей или модулем для автоматического списания средств согласно графику.
Статус подписки (status) отслеживает ее жизненный цикл. Администратор может вручную изменить статус в панели управления OpenCart в разделе "Продажи → Подписки".
Каждый успешный или неуспешный платеж по подписке регистрируется в связанной таблице oc_order_recurring_transaction, которая ссылается на order_recurring_id.
Пример SQL-запроса
Получить список всех активных подписок с информацией о заказе и клиенте:
SELECT
orec.*,
o.order_id,
o.invoice_no,
o.firstname as customer_firstname,
o.lastname as customer_lastname,
o.email as customer_email
FROM oc_order_recurring orec
LEFT JOIN oc_order o ON (orec.order_id = o.order_id)
WHERE orec.status = 1;
Смотрите также
-
таблицу
oc_order,
которая хранит информацию о заказах -
таблицу
oc_order_recurring_transaction,
которая хранит историю транзакций по подпискам -
таблицу
oc_recurring,
которая содержит профили регулярных платежей -
таблицу
oc_product,
которая содержит товары, доступные для подписки