public PayPalAdvancedPaymentProcessor(PayPalAdvancedPaymentSettings payPalAdvancedPaymentSettings,
     ISettingService settingService,
     ICustomerService customerService,
     IWebHelper webHelper,
     IOrderTotalCalculationService orderTotalCalculationService,
     HttpContextBase httpContext,
     IOrderService orderService,
     ILicenseService licenseService,
     PayPalAdvancedObjectContext objectContext,
     IEncryptionService encryptionService,
     PayPalHelper payPalHelper)
 {
     this._payPalAdvancedPaymentSettings = payPalAdvancedPaymentSettings;
     this._settingService = settingService;            
     this._customerService = customerService;            
     this._webHelper = webHelper;
     this._orderTotalCalculationService = orderTotalCalculationService;
     this._httpContext = httpContext;
     this._licenseService = licenseService;
     this._objectContext = objectContext;
     this._encryptionService = encryptionService;
     this._payPalHelper = payPalHelper;               
 }
 public PayPalHelper(PayPalAdvancedPaymentSettings payPalAdvancedPaymentSettings, IEncryptionService encryptionService)
 {
     this._payPalAdvancedPaymentSettings = payPalAdvancedPaymentSettings;
     this._encryptionService = encryptionService;      
 }
        public override void Install()
        {
            //settings
            var settings = new PayPalAdvancedPaymentSettings
            {
                TransactMode = TransactMode.AuthorizeAndCapture,
                UseSandbox = true,
                PFPartner = "PayPal",
                SkipPaymentInfo = false,
                EnableMobileOptimizedLayout = false
            };
            _settingService.SaveSetting(settings);

            //data
            this._objectContext.Install();

            //locales
            this.AddOrUpdatePluginLocaleResource("Plugins.Payments.PayPalAdvanced.Fields.UseSandbox", "Use Sandbox (Test Mode)");
            this.AddOrUpdatePluginLocaleResource("Plugins.Payments.PayPalAdvanced.Fields.UseSandbox.Hint", "Check to enable Sandbox (testing environment).");
            this.AddOrUpdatePluginLocaleResource("Plugins.Payments.PayPalAdvanced.Fields.TransactMode", "Transaction mode");
            this.AddOrUpdatePluginLocaleResource("Plugins.Payments.PayPalAdvanced.Fields.TransactMode.Hint", "Specify transaction mode.");

            this.AddOrUpdatePluginLocaleResource("Plugins.Payments.PayPalAdvanced.Fields.PFPartner", "Payflow Partner");
            this.AddOrUpdatePluginLocaleResource("Plugins.Payments.PayPalAdvanced.Fields.PFPartner.Hint", "Specify Payflow Partner (ex. PayPal)");
            this.AddOrUpdatePluginLocaleResource("Plugins.Payments.PayPalAdvanced.Fields.PFMerchantLogin", "Payflow Merchant Login");
            this.AddOrUpdatePluginLocaleResource("Plugins.Payments.PayPalAdvanced.Fields.PFMerchantLogin.Hint", "Your unique, case sensitive merchant login");
            this.AddOrUpdatePluginLocaleResource("Plugins.Payments.PayPalAdvanced.Fields.PFUser", "Payflow User");
            this.AddOrUpdatePluginLocaleResource("Plugins.Payments.PayPalAdvanced.Fields.PFUser.Hint", "The same merchant login (the default admin user)");
            this.AddOrUpdatePluginLocaleResource("Plugins.Payments.PayPalAdvanced.Fields.PFPassword", "Payflow Account Password");            
            this.AddOrUpdatePluginLocaleResource("Plugins.Payments.PayPalAdvanced.Fields.PFPassword.Hint", "Specify Payflow account password.");
            this.AddOrUpdatePluginLocaleResource("Plugins.Payments.PayPalAdvanced.Fields.IsEncryptPassword", "Encrypt Password");
            this.AddOrUpdatePluginLocaleResource("Plugins.Payments.PayPalAdvanced.Fields.IsEncryptPassword.Hint", "Check to encrypt your password.");

            this.AddOrUpdatePluginLocaleResource("Plugins.Payments.PayPalAdvanced.Fields.AdditionalFee", "Additional fee");
            this.AddOrUpdatePluginLocaleResource("Plugins.Payments.PayPalAdvanced.Fields.AdditionalFee.Hint", "Enter additional fee to charge your customers.");
            this.AddOrUpdatePluginLocaleResource("Plugins.Payments.PayPalAdvanced.Fields.AdditionalFeePercentage", "Additional fee. Use percentage");
            this.AddOrUpdatePluginLocaleResource("Plugins.Payments.PayPalAdvanced.Fields.AdditionalFeePercentage.Hint", "Determines whether to apply a percentage additional fee to the order total. If not enabled, a fixed value is used.");
            this.AddOrUpdatePluginLocaleResource("Plugins.Payments.PayPalAdvanced.Fields.SkipPaymentInfo", "Skip Payment Info Page/Step");
            this.AddOrUpdatePluginLocaleResource("Plugins.Payments.PayPalAdvanced.Fields.SkipPaymentInfo.Hint", "Indicates whether we should display the payment information page/step of the checkout process.");
            this.AddOrUpdatePluginLocaleResource("Plugins.Payments.PayPalAdvanced.Fields.EnableMobileOptimizedLayout", "Enable Mobile Optimized Layout");
            this.AddOrUpdatePluginLocaleResource("Plugins.Payments.PayPalAdvanced.Fields.EnableMobileOptimizedLayout.Hint", "Enable PayPal’s hosted checkout pages to be mobile optimized for iPhone, iPod and Android devices");
            this.AddOrUpdatePluginLocaleResource("Plugins.Payments.PayPalAdvanced.Fields.LicenseKey", "License Keys");
            this.AddOrUpdatePluginLocaleResource("Plugins.Payments.PayPalAdvanced.Fields.LicenseKey.Hint", "When you purchase the license key, it will be emailed to you. The plugin for NopCommerce 3.70 and later is free.");

            this.AddOrUpdatePluginLocaleResource("Plugins.Payments.PayPalAdvanced.Fields.PaymentInfoTip", "Payment information will be entered after confirming the order.");
            
            base.Install();
        }