public static IServiceCollection AddPaymentProviderFactory(this IServiceCollection services) { services.AddScoped <IPaymentProviderFactory>(sp => { PaymentProviderFactory factory = new(); IPayPalService payPalService = sp.GetRequiredService <IPayPalService>(); IPaymentProviderOptions paymentProviderOptions = sp.GetRequiredService <IPaymentProviderOptions>(); factory.RegisterPaymentProvider(PaymentProvider.PayPal, () => new PayPalPaymentProvider(payPalService, paymentProviderOptions)); return(factory); }); return(services); }
public PayPalPaymentProvider(IPayPalService paypalService, IPaymentProviderOptions paymentProviderOptions) { _paypalService = paypalService ?? throw new ArgumentNullException(nameof(paypalService)); _paymentProviderOptions = paymentProviderOptions ?? throw new ArgumentNullException(nameof(paymentProviderOptions)); }