-
Order - Запись о разовой оплате и/или старте подписки. С точки зрения шлюза - запись о переданной ему команде.
-
Transaction - Запись об взаимодействии с платёжной системой (в т.ч. о каждом списании).
-
Subscription - Подписка. Трассируется в виде subscriptionId.
-
Invoice - Обязательство, выставленное клиенту. Фиксируется в Transaction.
- Команды на изменение и отмену подписок. Должны оформляться отдельными Order.
- Тарифные планы. Достаточно добавить planId и planTitle в Order и OrderItem. Реализация по-умолчанию - автогенерация из условий подписки.
- Работа с кредитными картами из своего кода
- Структурированная поддержка параметров, передаваемых сквозь шлюз. А не так, как сейчас в Робокассе - скидывается всё, что пришло.
- Методы start() и startInternal() не пишут в БД ничего такого, что нельзя было бы записать и вычислить, используя остальную часть интерфейса шлюза. Поэтому в случаях, когда интерфейс продукта прибит к конкретным платёжным системам, вызов start() не обязателен. Если платёжная система вернула мгновенный ответ, его следует записывать, используя prepareTransaction()/logTransaction() с $logId = null.