PaymentProviderFactory.java
package org.petify.funding.service.payment;
import org.petify.funding.model.PaymentProvider;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Map;
@Component
public class PaymentProviderFactory {
private final Map<PaymentProvider, PaymentProviderService> providers;
@Autowired
public PaymentProviderFactory(StripePaymentService stripeService,
PayUPaymentService payuService) {
this.providers = Map.of(
PaymentProvider.STRIPE, stripeService,
PaymentProvider.PAYU, payuService
);
}
public PaymentProviderService getProvider(PaymentProvider provider) {
PaymentProviderService service = providers.get(provider);
if (service == null) {
throw new IllegalArgumentException("Unsupported payment provider: " + provider);
}
return service;
}
public Map<PaymentProvider, PaymentProviderService> getAllProviders() {
return providers;
}
}