Exemple #1
0
        private PayPalPlusCheckoutModel.ThirdPartyPaymentMethod GetThirdPartyPaymentMethodModel(
            Provider <IPaymentMethod> provider,
            PayPalPlusPaymentSettings settings,
            Store store)
        {
            var model = new PayPalPlusCheckoutModel.ThirdPartyPaymentMethod();

            model.MethodName  = GetPaymentMethodName(provider);
            model.RedirectUrl = Url.Action("CheckoutReturn", "PayPalPlus", new { area = Plugin.SystemName, systemName = provider.Metadata.SystemName }, store.SslEnabled ? "https" : "http");

            try
            {
                if (settings.DisplayPaymentMethodDescription)
                {
                    // not the short description, the full description is intended for frontend
                    var paymentMethod = _paymentService.GetPaymentMethodBySystemName(provider.Metadata.SystemName);
                    if (paymentMethod != null)
                    {
                        string description = paymentMethod.GetLocalized(x => x.FullDescription);
                        if (description.HasValue())
                        {
                            description = HtmlUtils.ConvertHtmlToPlainText(description);
                            description = HtmlUtils.StripTags(HttpUtility.HtmlDecode(description));

                            if (description.HasValue())
                            {
                                model.Description = description.EncodeJsString();
                            }
                        }
                    }
                }
            }
            catch { }

            try
            {
                if (settings.DisplayPaymentMethodLogo && provider.Metadata.PluginDescriptor != null && store.SslEnabled)
                {
                    var brandImageUrl = _pluginMediator.GetBrandImageUrl(provider.Metadata);
                    if (brandImageUrl.HasValue())
                    {
                        if (brandImageUrl.StartsWith("~"))
                        {
                            brandImageUrl = brandImageUrl.Substring(1);
                        }

                        var uri = new UriBuilder(Uri.UriSchemeHttps, Request.Url.Host, -1, brandImageUrl);
                        model.ImageUrl = uri.ToString();
                    }
                }
            }
            catch { }

            return(model);
        }
        private PayPalPlusCheckoutModel.ThirdPartyPaymentMethod GetThirdPartyPaymentMethodModel(
            Provider <IPaymentMethod> provider,
            PayPalPlusPaymentSettings settings,
            Store store)
        {
            var model = new PayPalPlusCheckoutModel.ThirdPartyPaymentMethod();

            try
            {
                model.RedirectUrl = Url.Action("CheckoutReturn", "PayPalPlus", new { area = Plugin.SystemName, systemName = provider.Metadata.SystemName }, store.SslEnabled ? "https" : "http");

                if (provider.Metadata.SystemName == PayPalInstalmentsProvider.SystemName)
                {
                    // "The methodName contains up to 25 characters. All additional characters are truncated."
                    // https://developer.paypal.com/docs/paypal-plus/germany/how-to/integrate-third-party-payments/
                    model.MethodName = T("Plugins.Payments.PayPalInstalments.ShortMethodName");
                }
                else
                {
                    model.MethodName = _pluginMediator.GetLocalizedFriendlyName(provider.Metadata).NullEmpty()
                                       ?? provider.Metadata.FriendlyName.NullEmpty()
                                       ?? provider.Metadata.SystemName;
                }

                model.MethodName = model.MethodName.EmptyNull();

                if (settings.DisplayPaymentMethodDescription)
                {
                    // Not the short description, the full description is intended for frontend.
                    var paymentMethod = _paymentService.GetPaymentMethodBySystemName(provider.Metadata.SystemName);
                    if (paymentMethod != null)
                    {
                        string description = paymentMethod.GetLocalized(x => x.FullDescription);
                        if (description.HasValue())
                        {
                            description = HtmlUtils.ConvertHtmlToPlainText(description);
                            description = HtmlUtils.StripTags(HttpUtility.HtmlDecode(description));

                            if (description.HasValue())
                            {
                                model.Description = description.EncodeJsString();
                            }
                        }
                    }
                }
            }
            catch { }

            try
            {
                if (settings.DisplayPaymentMethodLogo && provider.Metadata.PluginDescriptor != null && store.SslEnabled)
                {
                    // Special case PayPal instalments.
                    if (provider.Metadata.SystemName == PayPalInstalmentsProvider.SystemName && model.ImageUrl.IsEmpty())
                    {
                        var uri = new UriBuilder(Uri.UriSchemeHttps, Request.Url.Host, -1, "Plugins/SmartStore.PayPal/Content/instalments-sm.png");
                        model.ImageUrl = uri.ToString();
                    }
                    else
                    {
                        var brandImageUrl = _pluginMediator.GetBrandImageUrl(provider.Metadata);
                        if (brandImageUrl.HasValue())
                        {
                            if (brandImageUrl.StartsWith("~"))
                            {
                                brandImageUrl = brandImageUrl.Substring(1);
                            }

                            var uri = new UriBuilder(Uri.UriSchemeHttps, Request.Url.Host, -1, brandImageUrl);
                            model.ImageUrl = uri.ToString();
                        }
                    }
                }
            }
            catch { }

            return(model);
        }