сейчас подобным занимаюсь. что надо: фабрику точно, один интерфейс для каждого вида операции (внесение средств возврат средств), какие либо адаптеры, для саязи с вашей црм, и декораторы (чтобы в любой момент добавлять функционал не изменяя старый код). и возможно еще нужна будет стратегия (для принятия решения если транзакция будет отменена, то что делать).