/// <summary> /// Gets the URL to capture the payment information. /// </summary> /// <param name="payment">Payment information.</param> /// <param name="cultureInfo">CultureInfo of the request.</param> /// <returns>URL to capture the payment information.</returns> public virtual string GetCapturePaymentUrl(Overture.ServiceModel.Orders.Payment payment, CultureInfo cultureInfo) { if (payment.PaymentMethod == null || payment.PaymentMethod.PropertyBag == null || !payment.PaymentMethod.PropertyBag.ContainsKey(HostedCardTokenizationUrl)) { return(null); } var url = payment.PaymentMethod.PropertyBag[HostedCardTokenizationUrl].ToString(); Uri rawCaptureUri; if (!Uri.TryCreate(url, UriKind.Absolute, out rawCaptureUri)) { return(null); //TODO: Throw here instead. } var queryString = rawCaptureUri.ParseQueryString(); var finalQueryString = FilterQueryString(queryString, cultureInfo); var finalUrl = UrlFormatter.AppendQueryString(rawCaptureUri.GetLeftPart(UriPartial.Path), finalQueryString); return(finalUrl); }
public virtual OrderSummaryPaymentViewModel BuildOrderSummaryPaymentViewModel(Overture.ServiceModel.Orders.Payment payment, CultureInfo cultureInfo) { var creditCartNumber = string.Empty; var expiryDate = string.Empty; var paymentMethodName = string.Empty; if (payment.PaymentMethod.PropertyBag != null) { //TODO : use viewmodelmapper through cartviewmodelfactory ( already exist ) if (payment.PaymentMethod.Type == PaymentMethodType.SavedCreditCard) { if (payment.PaymentMethod.PropertyBag.ContainsKey(SavedCardMask)) { creditCartNumber = payment.PaymentMethod.PropertyBag[SavedCardMask].ToString(); } if (payment.PaymentMethod.PropertyBag.ContainsKey(SavedExpiryDate)) { expiryDate = payment.PaymentMethod.PropertyBag[SavedExpiryDate].ToString(); } if (payment.PaymentMethod.PropertyBag.ContainsKey(SavedCardType)) { paymentMethodName = payment.PaymentMethod.PropertyBag[SavedCardType].ToString(); } } else { if (payment.PaymentMethod.PropertyBag.ContainsKey(CreditCardPaymentProperties.CreditCardNumberLastDigitsKey)) { creditCartNumber = payment.PaymentMethod.PropertyBag[CreditCardPaymentProperties.CreditCardNumberLastDigitsKey].ToString(); } if (payment.PaymentMethod.PropertyBag.ContainsKey(CreditCardPaymentProperties.CreditCardExpiryDateKey)) { expiryDate = payment.PaymentMethod.PropertyBag[CreditCardPaymentProperties.CreditCardExpiryDateKey].ToString(); } if (payment.PaymentMethod.PropertyBag.ContainsKey(CreditCardPaymentProperties.CreditCardBrandKey)) { paymentMethodName = payment.PaymentMethod.PropertyBag[CreditCardPaymentProperties.CreditCardBrandKey].ToString(); } } } DateTime expirationDate; bool hasExpired = false; if (DateTime.TryParse(expiryDate, out expirationDate)) { hasExpired = expirationDate < DateTime.UtcNow; } var paymentVm = new OrderSummaryPaymentViewModel { FirstName = payment.BillingAddress.FirstName, LastName = payment.BillingAddress.LastName, PaymentMethodName = paymentMethodName, CreditCardNumber = creditCartNumber, ExpiryDate = expiryDate, IsExpired = hasExpired }; paymentVm.BillingAddress = CartViewModelFactory.GetAddressViewModel(payment.BillingAddress, cultureInfo); paymentVm.Amount = LocalizationProvider.FormatPrice((decimal)payment.Amount, cultureInfo); return(paymentVm); }
/// <summary> /// Augments the ViewModel with useful data. /// </summary> /// <param name="viewModel">The ViewModel to augment.</param> /// <param name="payment">The payment.</param> public virtual void AugmentViewModel(ActivePaymentViewModel viewModel, Overture.ServiceModel.Orders.Payment payment) { }
/// <summary> /// Determines if the payment information should be captured. /// </summary> /// <param name="payment">Payment information.</param> /// <returns>True if the payment should be captured. False otherwise.</returns> public virtual bool ShouldCapturePayment(Overture.ServiceModel.Orders.Payment payment) { //TODO: There may be cases where we'll want to not capture the payment. return(true); }
/// <summary> /// Gets the URL to capture the payment information. /// </summary> /// <param name="payment">Payment information.</param> /// <param name="cultureInfo">Culture of the request.</param> /// <returns>URL to capture the payment information.</returns> public virtual string GetCapturePaymentUrl(Overture.ServiceModel.Orders.Payment payment, CultureInfo cultureInfo) { return(null); }
/// <summary> /// Determines if the payment information should be captured. /// </summary> /// <param name="payment">Payment information.</param> /// <returns>True if the payment should be captured. False otherwise.</returns> public virtual bool ShouldCapturePayment(Overture.ServiceModel.Orders.Payment payment) { return(false); }
public virtual OrderSummaryPaymentViewModel BuildOrderSummaryPaymentViewModel(Overture.ServiceModel.Orders.Payment payment, CultureInfo cultureInfo) { var methodDisplayNames = LookupService.GetLookupDisplayNamesAsync(new GetLookupDisplayNamesParam { CultureInfo = cultureInfo, LookupType = LookupType.Order, LookupName = "PaymentMethodType", }).Result; var paymentMethodDisplayName = methodDisplayNames.FirstOrDefault(x => x.Key == payment.PaymentMethod.Type.ToString()).Value; var paymentVm = new OrderSummaryPaymentViewModel { FirstName = payment.BillingAddress == null ? null: payment.BillingAddress.FirstName, LastName = payment.BillingAddress == null? null : payment.BillingAddress.LastName, PaymentMethodName = paymentMethodDisplayName, }; paymentVm.BillingAddress = CartViewModelFactory.GetAddressViewModel(payment.BillingAddress, cultureInfo); paymentVm.Amount = LocalizationProvider.FormatPrice((decimal)payment.Amount, cultureInfo); return(paymentVm); }