Good point. But instead of going with the main class, I’d go with an interface instead to avoid violating the D in solid. Because you have several payment-related classes that your high-level module would depend on. Going with an interface (e.g IPaymentProcessor) and having all your payment-related classes implement…
I see your point and yes you could do that, but I think going the IoC route might be a bit too much if all you need to do is accessing the methods from those interfaces, I would just go with composition instead. The point I was trying to make is that implementing multiple interfaces per class has both its advantages and disadvantages.