public ButtonsViewComponent(IPaymentPluginManager paymentPluginManager,
                             IStoreContext storeContext,
                             IWorkContext workContext,
                             PayPalCommerceSettings settings)
 {
     _paymentPluginManager = paymentPluginManager;
     _storeContext         = storeContext;
     _workContext          = workContext;
     _settings             = settings;
 }
示例#2
0
 public PayLaterMessageMigration(PayPalCommerceSettings payPalCommerceSettings,
                                 ILanguageService languageService,
                                 ILocalizationService localizationService,
                                 ISettingService settingService)
 {
     _payPalCommerceSettings = payPalCommerceSettings;
     _languageService        = languageService;
     _localizationService    = localizationService;
     _settingService         = settingService;
 }
示例#3
0
 public ScriptViewComponent(IPaymentPluginManager paymentPluginManager,
                            IStoreContext storeContext,
                            IWorkContext workContext,
                            PayPalCommerceSettings settings,
                            ServiceManager serviceManager)
 {
     _paymentPluginManager = paymentPluginManager;
     _storeContext         = storeContext;
     _workContext          = workContext;
     _settings             = settings;
     _serviceManager       = serviceManager;
 }
 public ButtonsViewComponent(IPaymentPluginManager paymentPluginManager,
                             IPriceCalculationService priceCalculationService,
                             IProductService productServise,
                             IStoreContext storeContext,
                             IWorkContext workContext,
                             PayPalCommerceSettings settings)
 {
     _paymentPluginManager    = paymentPluginManager;
     _priceCalculationService = priceCalculationService;
     _productServise          = productServise;
     _storeContext            = storeContext;
     _workContext             = workContext;
     _settings = settings;
 }
 public PaymentInfoViewComponent(ILocalizationService localizationService,
                                 INotificationService notificationService,
                                 IPaymentService paymentService,
                                 OrderSettings orderSettings,
                                 PayPalCommerceSettings settings,
                                 ServiceManager serviceManager)
 {
     _localizationService = localizationService;
     _notificationService = notificationService;
     _paymentService      = paymentService;
     _orderSettings       = orderSettings;
     _settings            = settings;
     _serviceManager      = serviceManager;
 }
        /// <summary>
        /// Prepare credentials and onboarding model properties
        /// </summary>
        /// <param name="model">Comfiguration model</param>
        /// <param name="settings">Plugin settings</param>
        /// <param name="storeId">Store id</param>
        /// <returns>A task that represents the asynchronous operation</returns>
        private async Task PrepareCredentialsAsync(ConfigurationModel model, PayPalCommerceSettings settings, int storeId)
        {
            model.OnboardingModel.MerchantGuid = settings.MerchantGuid;
            model.OnboardingModel.SignUpUrl    = settings.SignUpUrl;

            //no need to check credentials if the plugin is already configured or credentials were manually set
            if (settings.SetCredentialsManually || ServiceManager.IsConfigured(settings))
            {
                return;
            }

            //no need to check credentials until the merchant has been onboarded and signed up
            if (string.IsNullOrEmpty(settings.MerchantGuid) || !string.IsNullOrEmpty(settings.SignUpUrl))
            {
                return;
            }

            var(merchant, error) = await _serviceManager.GetMerchantAsync(settings.MerchantGuid);

            if (merchant is null || !string.IsNullOrEmpty(error))
            {
                var locale = await _localizationService.GetResourceAsync("Plugins.Payments.PayPalCommerce.Configuration.Error");

                var errorMessage = string.Format(locale, error, Url.Action("List", "Log"));
                _notificationService.ErrorNotification(errorMessage, false);
                return;
            }

            model.OnboardingModel.AccountCreated     = !string.IsNullOrEmpty(merchant.MerchantId);
            model.OnboardingModel.EmailConfirmed     = merchant.EmailConfirmed;
            model.OnboardingModel.PaymentsReceivable = merchant.PaymentsReceivable;
            model.OnboardingModel.PermissionGranted  = merchant.PermissionGranted;
            model.OnboardingModel.DisplayStatus      = true;

            if (!merchant.EmailConfirmed || !merchant.PaymentsReceivable || !merchant.PermissionGranted)
            {
                var onboardingNotCompleted = await _localizationService.GetResourceAsync("Plugins.Payments.PayPalCommerce.Onboarding.InProcess");

                _notificationService.WarningNotification(onboardingNotCompleted);
                return;
            }

            if (string.IsNullOrEmpty(merchant.ClientId) || string.IsNullOrEmpty(merchant.ClientSecret))
            {
                var onboardingError = await _localizationService.GetResourceAsync("Plugins.Payments.PayPalCommerce.Onboarding.Error");

                _notificationService.ErrorNotification(onboardingError);
                return;
            }

            var onboardingCompleted = await _localizationService.GetResourceAsync("Plugins.Payments.PayPalCommerce.Onboarding.Completed");

            _notificationService.SuccessNotification(onboardingCompleted);

            //first delete the unused webhook on a previous client, if changed
            if ((!merchant.ClientId?.Equals(settings.ClientId) ?? true) &&
                !string.IsNullOrEmpty(settings.WebhookUrl) &&
                !string.IsNullOrEmpty(settings.ClientId) &&
                !string.IsNullOrEmpty(settings.SecretKey))
            {
                await _serviceManager.DeleteWebhookAsync(settings);
            }

            //set new settings values
            settings.ClientId  = merchant.ClientId;
            settings.SecretKey = merchant.ClientSecret;
            model.IsConfigured = ServiceManager.IsConfigured(settings);

            //ensure that webhook created, display warning in case of fail
            if (!string.IsNullOrEmpty(settings.ClientId) && !string.IsNullOrEmpty(settings.SecretKey))
            {
                var(webhook, _) = await _serviceManager.CreateWebhookAsync(settings, storeId);

                settings.WebhookUrl = webhook?.Url;
                if (string.IsNullOrEmpty(settings.WebhookUrl))
                {
                    var url     = Url.Action("List", "Log");
                    var warning = string.Format(await _localizationService.GetResourceAsync("Plugins.Payments.PayPalCommerce.WebhookWarning"), url);
                    _notificationService.WarningNotification(warning, false);
                }
            }

            if (!string.IsNullOrEmpty(merchant.Email) && !merchant.Email.Equals(settings.Email, StringComparison.InvariantCultureIgnoreCase))
            {
                settings.Email = merchant.Email;
                model.Email    = merchant.Email;
            }

            var overrideSettings = storeId > 0;
            await _settingService.SaveSettingOverridablePerStoreAsync(settings, setting => setting.Email, overrideSettings, storeId, false);

            await _settingService.SaveSettingOverridablePerStoreAsync(settings, setting => setting.WebhookUrl, overrideSettings, storeId, false);

            await _settingService.SaveSettingOverridablePerStoreAsync(settings, setting => setting.ClientId, overrideSettings, storeId, false);

            await _settingService.SaveSettingOverridablePerStoreAsync(settings, setting => setting.SecretKey, overrideSettings, storeId, false);

            await _settingService.ClearCacheAsync();
        }
示例#7
0
 public PayPalCommerceWebhookController(PayPalCommerceSettings settings,
                                        ServiceManager serviceManager)
 {
     _settings       = settings;
     _serviceManager = serviceManager;
 }