protected bool IsPaymentExcluded(PaymentFilterRequest request) { var ba = request.Customer.BillingAddress; var sa = request.Customer.ShippingAddress; if (ba?.Country != null && !ba.Country.TwoLetterIsoCode.IsCaseInsensitiveEqual("DE")) { return(true); } if (sa != null && sa.Country != null && !sa.Country.TwoLetterIsoCode.IsCaseInsensitiveEqual("DE")) { return(true); } var settings = _services.Settings.LoadSetting <PayPalInstalmentsSettings>(request.StoreId); if (settings.ClientId.IsEmpty() || settings.Secret.IsEmpty()) { return(true); } if (!CanPayOrderAmount(settings, request)) { return(true); } return(false); }
protected bool CanPayOrderAmount(PayPalInstalmentsSettings settings, PaymentFilterRequest request) { var cartTotal = ((decimal?)_orderTotalCalculationService.Value.GetShoppingCartTotal(request.Cart)) ?? decimal.Zero; if (cartTotal == decimal.Zero) { return(false); } return(cartTotal >= settings.FinancingMin && cartTotal <= settings.FinancingMax); }
public void OnActionExecuting(ActionExecutingContext filterContext) { if (filterContext == null || filterContext.ActionDescriptor == null || filterContext.HttpContext == null || filterContext.HttpContext.Request == null) { return; } var store = _services.StoreContext.CurrentStore; var customer = _services.WorkContext.CurrentCustomer; var paymentProvider = _paymentService.LoadPaymentMethodBySystemName(PayPalPlusProvider.SystemName, true, store.Id); if (paymentProvider == null) { return; } var cart = customer.GetCartItems(ShoppingCartType.ShoppingCart, store.Id); var filterRequest = new PaymentFilterRequest { PaymentMethod = paymentProvider, Customer = customer, StoreId = store.Id, Cart = cart }; if (_paymentService.IsPaymentMethodFiltered(filterRequest)) { return; } // Skip payment if the cart total is zero. PayPal would return an error "Amount cannot be zero". decimal?cartTotal = _orderTotalCalculationService.Value.GetShoppingCartTotal(cart, true); if (cartTotal.HasValue && cartTotal.Value == decimal.Zero) { var urlHelper = new UrlHelper(filterContext.HttpContext.Request.RequestContext); var url = urlHelper.Action("Confirm", "Checkout", new { area = "" }); filterContext.Result = new RedirectResult(url, false); } else { _genericAttributeService.Value.SaveAttribute(customer, SystemCustomerAttributeNames.SelectedPaymentMethod, PayPalPlusProvider.SystemName, store.Id); var routeValues = new RouteValueDictionary(new { action = "PaymentWall", controller = "PayPalPlus" }); filterContext.Result = new RedirectToRouteResult("SmartStore.PayPalPlus", routeValues); } }
public bool IsExcluded(PaymentFilterRequest request) { if (request.Customer == null) { return(false); } var method = request.PaymentMethod?.Metadata?.SystemName; if (method.IsCaseInsensitiveEqual(PayPalInstalmentsProvider.SystemName)) { return(IsPaymentExcluded(request)); } return(false); }