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);
        }
Example #2
0
 public PayPalPaymentProvider(IPayPalService paypalService, IPaymentProviderOptions paymentProviderOptions)
 {
     _paypalService          = paypalService ?? throw new ArgumentNullException(nameof(paypalService));
     _paymentProviderOptions = paymentProviderOptions ?? throw new ArgumentNullException(nameof(paymentProviderOptions));
 }