public CardknoxPaymentProcessor(CardknoxPaymentSettings cardknoxPaymentSettings,
                                 CurrencySettings currencySettings,
                                 ICurrencyService currencyService,
                                 ICustomerService customerService,
                                 IEncryptionService encryptionService,
                                 ILocalizationService localizationService,
                                 ILogger logger,
                                 IOrderProcessingService orderProcessingService,
                                 IOrderService orderService,
                                 IPaymentService paymentService,
                                 ISettingService settingService,
                                 IWebHelper webHelper)
 {
     this._cardknoxPaymentSettings = cardknoxPaymentSettings;
     this._currencySettings        = currencySettings;
     this._currencyService         = currencyService;
     this._customerService         = customerService;
     this._encryptionService       = encryptionService;
     this._localizationService     = localizationService;
     this._logger = logger;
     this._orderProcessingService = orderProcessingService;
     this._orderService           = orderService;
     this._paymentService         = paymentService;
     this._settingService         = settingService;
     this._webHelper = webHelper;
 }
        public override void Install()
        {
            //settings
            var settings = new CardknoxPaymentSettings
            {
                TransactMode                = TransactMode.Authorize,
                TransactionKey              = "",
                HideAddressDetails          = false,
                SendReceiptToCustomerEmail  = false,
                SoftwareName                = "nopCommerce Cardknox Plugin",
                SoftwareVersion             = "Default",
                UseShippingAddressAsBilling = false
            };

            _settingService.SaveSetting(settings);

            //locales
            _localizationService.AddOrUpdatePluginLocaleResource("Plugins.Payments.Cardknox.Fields.UseShippingAddressAsBilling", "Use shipping address.");
            _localizationService.AddOrUpdatePluginLocaleResource("Plugins.Payments.Cardknox.Fields.UseShippingAddressAsBilling.Hint", "Check if you want to use the shipping address as a billing address.");
            _localizationService.AddOrUpdatePluginLocaleResource("Plugins.Payments.Cardknox.Fields.TransactModeValues", "Transaction mode");
            _localizationService.AddOrUpdatePluginLocaleResource("Plugins.Payments.Cardknox.Fields.TransactModeValues.Hint", "Choose transaction mode.");
            _localizationService.AddOrUpdatePluginLocaleResource("Plugins.Payments.Cardknox.Fields.TransactionKey", "Transaction key");
            _localizationService.AddOrUpdatePluginLocaleResource("Plugins.Payments.Cardknox.Fields.TransactionKey.Hint", "Specify transaction key.");
            _localizationService.AddOrUpdatePluginLocaleResource("Plugins.Payments.Cardknox.Fields.AdditionalFee", "Additional fee");
            _localizationService.AddOrUpdatePluginLocaleResource("Plugins.Payments.Cardknox.Fields.AdditionalFee.Hint", "Enter additional fee to charge your customers.");
            _localizationService.AddOrUpdatePluginLocaleResource("Plugins.Payments.Cardknox.Fields.AdditionalFeePercentage", "Additional fee. Use percentage");
            _localizationService.AddOrUpdatePluginLocaleResource("Plugins.Payments.Cardknox.Fields.AdditionalFeePercentage.Hint", "Determines whether to apply a percentage additional fee to the order total. If not enabled, a fixed value is used.");
            _localizationService.AddOrUpdatePluginLocaleResource("Plugins.Payments.Cardknox.Fields.SoftwareName", "Software Name to send to the Cardknox SDK (required)");
            _localizationService.AddOrUpdatePluginLocaleResource("Plugins.Payments.Cardknox.Fields.SoftwareName.Hint", "This is a required field to declare to the SDK");
            _localizationService.AddOrUpdatePluginLocaleResource("Plugins.Payments.Cardknox.Fields.SoftwareVersion", "Software Version to send to the Cardknox SDK (required)");
            _localizationService.AddOrUpdatePluginLocaleResource("Plugins.Payments.Cardknox.Fields.SoftwareVersion.Hint", "This is a required field to declare to the SDK");
            _localizationService.AddOrUpdatePluginLocaleResource("Plugins.Payments.Cardknox.Fields.SoftwareApiVersion", "Custom API version to be used");
            _localizationService.AddOrUpdatePluginLocaleResource("Plugins.Payments.Cardknox.Fields.SoftwareApiVersion.Hint", "Leave this option empty to use the default API version");
            _localizationService.AddOrUpdatePluginLocaleResource("Plugins.Payments.Cardknox.Fields.UseCustomSoftwareApiVersion", "Use a custom API version");
            _localizationService.AddOrUpdatePluginLocaleResource("Plugins.Payments.Cardknox.Fields.UseCustomSoftwareApiVersion.Hint", "Leave this option unchecked to use the default API version");
            _localizationService.AddOrUpdatePluginLocaleResource("Plugins.Payments.Cardknox.PaymentMethodDescription", "Pay by credit card");

            base.Install();
        }