Таблица oc_subscription_transaction
Таблица oc_subscription_transaction служит для ведения полного журнала всех транзакций, связанных с подписками. Каждая запись в этой таблице представляет собой отдельную платежную операцию: успешное списание, неудачную попытку оплаты, возврат средств или другие финансовые действия в рамках подписки.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
subscription_transaction_id |
int |
Уникальный идентификатор транзакции подписки. |
subscription_id |
int |
Внешний ключ, связывающий транзакцию с конкретной подпиской. Ссылается на таблицу oc_subscription.
|
order_id |
int |
Внешний ключ, идентифицирующий заказ, к которому привязана подписка. Ссылается на таблицу oc_order.
|
order_product_id |
int |
Внешний ключ, указывающий на конкретный товар в заказе, для которого оформлена подписка. Ссылается на таблицу oc_order_product.
|
description |
text |
Описание транзакции: тип операции (платеж, возврат, ошибка), детали списания, информация о периоде подписки. |
amount |
decimal(15,4) |
Сумма транзакции. Может быть положительной (списание) или отрицательной (возврат). |
type |
varchar(255) |
Тип транзакции: 1 - создание, 2 - продление, 3 - изменение, 4 - отмена, 5 - ошибка платежа.
|
payment_method |
varchar(255) |
Метод оплаты, использованный для данной транзакции. |
payment_code |
varchar(255) |
Код платежного метода (модуля оплаты), через который была проведена транзакция. |
date_added |
datetime |
Дата и время создания записи о транзакции. |
Как это работает
Когда клиент оформляет заказ с товаром-подпиской, система создает запись в таблице oc_subscription. При каждом периодическом списании средств за продление подписки в таблицу oc_subscription_transaction добавляется новая запись.
Процесс работы с таблицей включает:
- Фиксацию успешных платежей с указанием суммы, метода оплаты и описания операции
- Запись неудачных попыток списания с указанием причины ошибки
- Отслеживание истории всех финансовых операций по каждой подписке
- Формирование отчетов о доходах от подписок
Поле type позволяет categorizeровать транзакции для последующего анализа. Система использует эту таблицу для определения даты следующего списания, отслеживания проблем с оплатой и управления статусом подписки.
Связь с таблицами oc_order и oc_order_product обеспечивает полную прослеживаемость от транзакции к исходному заказу и конкретному товару.
Пример SQL-запроса
Получить историю транзакций для конкретной подписки можно следующим запросом:
SELECT st.*, o.invoice_no, op.name as product_name
FROM oc_subscription_transaction st
LEFT JOIN oc_order o ON (st.order_id = o.order_id)
LEFT JOIN oc_order_product op ON (st.order_product_id = op.order_product_id)
WHERE st.subscription_id = 42
ORDER BY st.date_added DESC;
Смотрите также
-
таблицу
oc_subscription,
которая хранит основную информацию о подписках -
таблицу
oc_order,
которая содержит данные о заказах -
таблицу
oc_order_product,
которая хранит информацию о товарах в заказах