Как я могу отделить модуль оплаты от других модулей?
Я использую весеннюю загрузку для разработки проекта "заказ-оплата". Бывают ситуации, когда клиент создает заказ, я создаю для него счет, он оплачивает счет, и когда я замечаю, что счет оплачивается, я что-то делаю для заказа.
Вот простое описание рабочего процесса: Мой рабочий процесс
1⃣️ Клиент хочет разместить заказ. Я обрабатываю заказ, в том числе:
1. create an order entity, id + price, etc.
2. create a bill for this order. I call 3rd party API, i.e. Alipay or WxPay, and generate a payment string to the customer, either in web browser or APP. The client can then render payment page for the customer to pay this bill.
3. save this bill.
2. Клиентский интерфейс клиента получает строку платежа и отображает страницу оплаты.
3⃣️ Клиент платит и сообщает третьей стороне, что он оплатил этот счет.
4. Третье лицо сообщает одному из моих уведомителей (Али или Wx) в модуле оплаты, что счет был оплачен, с указанием конкретного идентификатора счета.
5. Уведомитель публикует событие, используя Spring Boot Event, включая идентификатор счета в Объекте события.
6⃣️ В модуле заказа я слушаю событие об оплаченном счете и делаю вещи соответственно.
В этом рабочем процессе модуль заказа сильно зависит от модуля оплаты.
Есть ли какие-либо решения, позволяющие сделать модуль заказа независимым от платежного модуля? Я хочу использовать инверсию зависимостей и обработку событий, но пока не имею какой-либо зрелой идеи.