Таблица oc_order_recurring_transaction
Таблица oc_order_recurring_transaction является ключевой для работы с повторяющимися платежами в OpenCart. Она хранит детальную историю всех операций (списаний, возвратов, ошибок) по каждому рекуррентному профилю, что позволяет администратору отслеживать финансовые потоки и статус регулярных оплат.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
order_recurring_transaction_id |
int |
Уникальный идентификатор транзакции (автоинкремент). |
order_recurring_id |
int |
Внешний ключ, связывающий транзакцию с рекуррентным профилем. Ссылается на oc_order_recurring.
|
reference |
varchar(255) |
Уникальный идентификатор транзакции, присвоенный платежным шлюзом (например, PayPal, Stripe). Используется для сверки с системой оплаты. |
type |
varchar(255) |
Тип проведенной транзакции. Наиболее распространенные значения: created (создание профиля), payment (успешный платеж), cancelled (отмена), suspended (приостановка), failed (неудачная попытка списания), expired (истек срок действия), refund (возврат средств).
|
amount |
decimal(10,4) |
Сумма транзакции. Для типа payment это сумма списания, для refund - сумма возврата.
|
date_added |
datetime |
Дата и время добавления записи о транзакции в базу данных. |
Как это работает
Когда клиент оформляет заказ с товаром, для которого настроены повторяющиеся платежи (например, подписка), в таблице oc_order_recurring создается профиль. Каждое действие, связанное с этим профилем (создание, списание, ошибка), фиксируется добавлением новой записи в oc_order_recurring_transaction.
Платежный модуль (например, PayPal Standard) или cron-задача инициирует процесс списания средств в соответствии с графиком (next_payment в oc_order_recurring). Результат операции (успех или неудача) записывается в эту таблицу с указанием типа payment или failed, суммы и reference ID от платежной системы.
Администратор в панели управления OpenCart может просмотреть полную историю транзакций по конкретному рекуррентному профилю, что является essential для бухгалтерского учета, анализа проблем с оплатой и коммуникации с клиентами.
Поле reference критически важно для идентификации транзакции на стороне платежного шлюза. По этому номеру можно найти детали операции в системе PayPal, Stripe или другой используемой платежной системы.
Пример SQL-запроса
Получить полную историю транзакций для рекуррентного профиля с ID 12, отсортированную по дате:
SELECT *
FROM oc_order_recurring_transaction
WHERE order_recurring_id = 12
ORDER BY date_added ASC;
Получить список всех неудачных попыток списания за последний месяц:
SELECT ort.*, orp.reference as profile_reference
FROM oc_order_recurring_transaction ort
LEFT JOIN oc_order_recurring orp ON (ort.order_recurring_id = orp.order_recurring_id)
WHERE ort.type = 'failed'
AND ort.date_added >= DATE_SUB(NOW(), INTERVAL 1 MONTH);
Смотрите также
-
таблицу
oc_order_recurring,
в которой хранятся основные профили повторяющихся платежей -
таблицу
oc_order,
которая содержит информацию о первоначальном заказе