/// <summary> /// Validates the checkout order. /// you may save additional order info into the order, during validations. /// following is a sample which saves the date of birth as additional order info. /// </summary> /// <remarks> /// The method need to return within 3 seconds to be able to cancel placed an order at Klarna. /// </remarks> /// <param name="order">The order.</param> /// <returns>ValidationResult.</returns> public ValidationResult ValidateCheckoutOrder(ILitiumKcoOrder order) { var kcoOrder = order as LitiumKcoOrder; if (!string.IsNullOrEmpty(kcoOrder?.CheckoutOrder?.CheckoutCustomer?.DateOfBirth)) { AddOrUpdateAdditionalOrderInfo(order.OrderCarrier, "DateOfBirth", kcoOrder.CheckoutOrder.CheckoutCustomer.DateOfBirth); } var channel = _channelService.Get(order.OrderCarrier.ChannelID); var language = channel.WebsiteLanguageSystemId.HasValue ? _languageService.Get(channel.WebsiteLanguageSystemId.Value) : null; CultureInfo.CurrentUICulture = language != null ? language.CultureInfo : CultureInfo.CurrentUICulture; var routeRequestLookupInfo = new RouteRequestLookupInfo() { Channel = channel, IsSecureConnection = true, }; _errorPageResolver.TryGet(routeRequestLookupInfo, out var routeRequestInfo); // following result is used by Klarna AddOn to send the validation result back to Klarna. // ReSharper disable once ConvertToLambdaExpression return(new ValidationResult { IsOrderValid = true, RedirectToUrlOnValidationFailure = routeRequestInfo.DataPath, }); }
public bool TryGet(RouteRequestLookupInfo routeRequestLookupInfo, out string redirectUrl) { string resultUrl = null; if (_pageByFieldType.TryFindPage(page => { var url = _urlService.GetUrl(page, new PageUrlArgs(routeRequestLookupInfo.Channel.SystemId)); if (url == null) { return(false); } resultUrl = string.Concat(url, url.Contains("?") ? "&" : "?", "RedirectUrl=", HttpUtility.UrlEncode(routeRequestLookupInfo.RawUrl)); var statusCode = HttpContext.Current?.Response.StatusCode; if (Thread.CurrentPrincipal.Identity.IsAuthenticated || statusCode == (int)HttpStatusCode.Unauthorized) { resultUrl += $"&code={statusCode}"; } return(true); })) { redirectUrl = resultUrl; return(true); } return(_parentResolver.TryGet(routeRequestLookupInfo, out redirectUrl)); }
/// <summary> /// Validates the checkout order. /// you may save additional order info into the order, during validations. /// following is a sample which saves the date of birth as additional order info. /// </summary> /// <remarks> /// The method need to return within 3 seconds to be able to cancel placed an order at Klarna. /// </remarks> /// <param name="order">The order.</param> /// <returns>ValidationResult.</returns> public ValidationResult ValidateCheckoutOrder(ILitiumKcoOrder order) { //var order = kcoOrder as CheckoutOrder; //var customer = order.OrderDetailsRaw["customer"] as JObject; //if (customer != null) //{ // var dateOfBirth = customer["date_of_birth"]; // if (dateOfBirth != null) // { // AddOrUpdateAdditionalOrderInfo(order.OrderCarrier, "DateOfBirth", (string)dateOfBirth); // } //} var channel = _channelService.Get(order.OrderCarrier.ChannelID); var language = channel.WebsiteLanguageSystemId.HasValue ? _languageService.Get(channel.WebsiteLanguageSystemId.Value) : null; CultureInfo.CurrentUICulture = language != null ? language.CultureInfo : CultureInfo.CurrentUICulture; var routeRequestLookupInfo = new RouteRequestLookupInfo() { Channel = channel, IsSecureConnection = true, }; _errorPageResolver.TryGet(routeRequestLookupInfo, out var routeRequestInfo); //following result is used by Klarna AddOn to send the validation result back to Klarna. // ReSharper disable once ConvertToLambdaExpression return(new ValidationResult { IsOrderValid = true, RedirectToUrlOnValidationFailure = routeRequestInfo.DataPath, }); }
public bool TryGet(RouteRequestLookupInfo routeRequestLookupInfo, out string redirectUrl) { if (_signInUrlResolver.TryGet(routeRequestLookupInfo, out redirectUrl)) { redirectUrl += $"&code=403"; return(true); } return(_parent.TryGet(routeRequestLookupInfo, out redirectUrl)); }
public bool TryGet(RouteRequestLookupInfo routeRequestLookupInfo, out string redirectUrl) { string resultUrl = null; if (_pageByFieldType.TryFindPage(page => { var url = _urlService.GetUrl(page, new PageUrlArgs(routeRequestLookupInfo.Channel.SystemId)); if (url == null) { return(false); } resultUrl = string.Concat(url, url.Contains("?") ? "&" : "?", "RedirectUrl=", HttpUtility.UrlEncode(routeRequestLookupInfo.RawUrl)); return(true); })) { redirectUrl = resultUrl; return(true); } return(_parentResolver.TryGet(routeRequestLookupInfo, out redirectUrl)); }
public bool TryGet(RouteRequestLookupInfo routeRequestLookupInfo, out RouteRequestInfo routeRequestInfo) { var result = new RouteRequestInfo(); if (_pageByFieldType.TryFindPage(page => { var url = _urlService.GetUrl(page, new PageUrlArgs(routeRequestLookupInfo.Channel.SystemId)); if (url == null) { return(false); } result.PageSystemId = page.SystemId; result.DataPath = url; return(true); })) { routeRequestInfo = result; return(true); } return(_parentResolver.TryGet(routeRequestLookupInfo, out routeRequestInfo)); }
public bool TryFindPage(Func <Page, bool> predicate, bool ignorePermission = false, RouteRequestLookupInfo routeRequestLookupInfo = default) => TryGetPage(predicate, out var _, ignorePermission: ignorePermission, routeRequestLookupInfo: routeRequestLookupInfo);