public async Task<Order> CreateOrderAsync(string userId, ShoppingCart shoppingCart, Address shippingAddress,
                                                  Address billingAddress, PaymentMethod paymentMethod, ShippingMethod shippingMethod)
        {
            Order order = new Order
                {
                    UserId = userId,
                    ShoppingCart = shoppingCart,
                    ShippingAddress = shippingAddress,
                    BillingAddress = billingAddress,
                    PaymentMethod = paymentMethod,
                    ShippingMethod = shippingMethod
                };

            order.Id = await _orderService.CreateOrderAsync(order, _accountService.ServerCookieHeader);

            return order;
        }
 private CheckoutDataViewModel CreateCheckoutData(PaymentMethod paymentMethod)
 {
     return new CheckoutDataViewModel(paymentMethod.Id,
                                     _resourceLoader.GetString("PaymentMethod"),
                                     string.Format(CultureInfo.CurrentUICulture, _resourceLoader.GetString("CardEndingIn"), paymentMethod.CardNumber.Substring(paymentMethod.CardNumber.Length - 4)),
                                     string.Format(CultureInfo.CurrentUICulture, _resourceLoader.GetString("CardExpiringOn"),
                                     string.Format(CultureInfo.CurrentCulture, "{0}/{1}", paymentMethod.ExpirationMonth, paymentMethod.ExpirationYear)),
                                     paymentMethod.CardholderName,
                                     new Uri(Constants.PaymentMethodLogo, UriKind.Absolute),
                                     Constants.PaymentMethod,
                                     paymentMethod);
 }
 public PaymentMethodUserControlViewModel(ICheckoutDataRepository checkoutDataRepository)
 {
     _paymentMethod = new PaymentMethod();
     _checkoutDataRepository = checkoutDataRepository;
 }
 public void SetDefaultPaymentMethod(PaymentMethod paymentMethod)
 {
     throw new NotImplementedException();
 }
 public async Task CreateBasicOrderAsync(string userId, ShoppingCart shoppingCart, Address shippingAddress, Address billingAddress, PaymentMethod paymentMethod)
 {
     var basicShippingMethod = await _shippingMethodService.GetBasicShippingMethodAsync();
     _currentOrder = await CreateOrderAsync(userId, shoppingCart, shippingAddress, billingAddress, paymentMethod, basicShippingMethod);
     _suspensionManagerState.SessionState[OrderKey] = _currentOrder;
 }
 public Task<PaymentMethod> SavePaymentMethodAsync(PaymentMethod paymentMethod)
 {
     throw new NotImplementedException();
 }
 public Task<Order> CreateOrderAsync(string userId, ShoppingCart shoppingCart, Address shippingAddress, Address billingAddress, PaymentMethod paymentMethod, ShippingMethod shippingMethod)
 {
     return CreateOrderAsyncDelegate(userId, shoppingCart, shippingAddress, billingAddress, paymentMethod, shippingMethod);
 }
        private static bool IsMatchingPaymentMethod(PaymentMethod firstPaymentMethod, PaymentMethod secondPaymentMethod)
        {
            if (firstPaymentMethod.CardNumber != secondPaymentMethod.CardNumber) return false;
            if (firstPaymentMethod.CardVerificationCode != secondPaymentMethod.CardVerificationCode) return false;
            if (firstPaymentMethod.CardholderName != secondPaymentMethod.CardholderName) return false;
            if (firstPaymentMethod.ExpirationMonth != secondPaymentMethod.ExpirationMonth) return false;
            if (firstPaymentMethod.ExpirationYear != secondPaymentMethod.ExpirationYear) return false;
            if (firstPaymentMethod.Phone != secondPaymentMethod.Phone) return false;

            return true;
        }
        public void SetDefaultPaymentMethod(PaymentMethod paymentMethod)
        {
            if (paymentMethod == null)
            {
                throw new ArgumentNullException("paymentMethod", "paymentMethod is null");
            }

            _settingsStoreService.SaveValue(Constants.Default, Constants.PaymentMethod, paymentMethod.Id);
        }
        // </snippet502>

        public async Task<PaymentMethod> SavePaymentMethodAsync(PaymentMethod paymentMethod)
        {
            paymentMethod.Id = Guid.NewGuid().ToString();
            PaymentMethod savedPaymentMethod = (await GetAllPaymentMethodsAsync()).FirstOrDefault(c => IsMatchingPaymentMethod(c, paymentMethod));

            if (savedPaymentMethod == null)
            {
                paymentMethod.CardNumberBuffer = await _encryptionService.EncryptMessage(paymentMethod.CardNumber);
                _paymentMethods.Add(paymentMethod);
                _settingsStoreService.SaveEntity(Constants.PaymentMethod, paymentMethod.Id, paymentMethod);
                savedPaymentMethod = paymentMethod;
            }

            // If no default value is stored, use this one
            if (GetDefaultPaymentMethodAsync() == null)
            {
                SetDefaultPaymentMethod(savedPaymentMethod);
            }

            return savedPaymentMethod;
        }