public ParamPaymentProcessor(ICustomerService customerService,
                              IParamPaymentSettings paramPaymentSettings,
                              ISettingService settingService,
                              IStoreContext storeContext,
                              IUrlHelperFactory urlHelperFactory,
                              ILocalizationService localizationService,
                              IHttpContextAccessor httpContextAccessor,
                              IActionContextAccessor actionContextAccessor,
                              ICurrencyService currencyService,
                              IAddressService addressService,
                              IPaymentService paymentService,
                              INotificationService notificationService,
                              CurrencySettings currencySettings,
                              OrderSettings orderSettings,
                              IWebHelper webHelper)
 {
     this._customerService       = customerService;
     this._paramPaymentSettings  = paramPaymentSettings;
     this._settingService        = settingService;
     this._storeContext          = storeContext;
     this._localizationService   = localizationService;
     this._webHelper             = webHelper;
     this._httpContextAccessor   = httpContextAccessor;
     this._urlHelperFactory      = urlHelperFactory;
     this._actionContextAccessor = actionContextAccessor;
     this._currencyService       = currencyService;
     this._currencySettings      = currencySettings;
     this._addressService        = addressService;
     this._paymentService        = paymentService;
     this._notificationService   = notificationService;
     this._orderSettings         = orderSettings;
 }
        /// <summary>
        /// Install plugin
        /// </summary>
        public override async Task InstallAsync()
        {
            var settings = new IParamPaymentSettings()
            {
                UseSandbox     = true,
                ClientCode     = "10738",
                ClientUsername = "******",
                ClientPassword = "******",
                Guid           = "0c13d406-873b-403b-9c09-a5766840d98c",
                TestUrl        = "https://test-dmz.param.com.tr:4443/turkpos.ws/service_turkpos_test.asmx?wsdl",
                ProductUrl     = "https://posws.param.com.tr/turkpos.ws/service_turkpos_prod.asmx?wsdl",
                Installment    = false
            };
            await _settingService.SaveSettingAsync(settings);

            //locales
            await _localizationService.AddLocaleResourceAsync(new Dictionary <string, string>
            {
                ["Plugins.Payments.Param.UseSandbox"]          = "Test Mode:",
                ["Plugins.Payments.Param.UseSandbox.Hint"]     = "Use test mode?:",
                ["Plugins.Payments.Param.ClientCode"]          = "Client Code:",
                ["Plugins.Payments.Param.ClientUsername"]      = "******",
                ["Plugins.Payments.Param.ClientUsername.Hint"] = "Enter Client Username.",
                ["Plugins.Payments.Param.ClientPassword"]      = "******",
                ["Plugins.Payments.Param.Guid"]                     = "GUID:",
                ["Plugins.Payments.Param.Installment"]              = "Installment:",
                ["Plugins.Payments.Param.Installment.Hint"]         = "Use installment?:",
                ["Plugins.Payments.Param.PaymentMethodDescription"] = "Pay with credit card via the param.",
                ["Plugins.Payments.Param.BankName"]                 = "Bank Name:",
                ["Plugins.Payments.Param.ErrorAvailable"]           = "This page has expired. Please, create a new order."
            }, 1); //EN

            await _localizationService.AddLocaleResourceAsync(new Dictionary <string, string>
            {
                ["Plugins.Payments.Param.UseSandbox"]               = "Test Modu:",
                ["Plugins.Payments.Param.UseSandbox.Hint"]          = "Test Modunu?:",
                ["Plugins.Payments.Param.ClientCode"]               = "Müşteri Kodu:",
                ["Plugins.Payments.Param.ClientUsername"]           = "******",
                ["Plugins.Payments.Param.ClientPassword"]           = "******",
                ["Plugins.Payments.Param.Guid"]                     = "GUID:",
                ["Plugins.Payments.Param.Installment"]              = "Taksitlendirme:",
                ["Plugins.Payments.Param.Installment.Hint"]         = "Taksitlendirme?:",
                ["Plugins.Payments.Param.PaymentMethodDescription"] = "Param ile kredi kartı ödemesi yaparsınız.",
                ["Plugins.Payments.Param.BankName"]                 = "Banka Adı:",
                ["Plugins.Payments.Param.ErrorAvailable"]           = "Bu ödeme sayfasının süresi doldu. Lütfen yeni bir sipariş oluşturun."
            }, 2); //TR

            await base.InstallAsync();
        }