Ejemplo n.º 1
0
        public UserCardDetailModel GetUserCardDetails(long userId)
        {
            var user = _accessTokenRepository.GetUser(userId);
            var userCardDetailModel = new UserCardDetailModel();

            if (user == null)
            {
                throw _exception.ThrowException(System.Net.HttpStatusCode.BadRequest, "", "Användare finns inte.");
            }

            var userCardDetails = _userRepository.GetUserCardDetailsByUserId(userId);

            if (userCardDetails == null)
            {
                return(userCardDetailModel);
            }


            var cardNumber   = _cryptoGraphy.DecryptString(userCardDetails.CardNumber);
            var maskedNumber = Enums.Enums.MaskCardDigits(cardNumber);

            //cardNumber = Regex.Replace(cardNumber, @"\d{4}\ ", "xxxx ");


            userCardDetailModel.Id           = userCardDetails.Id;
            userCardDetailModel.UserId       = userCardDetails.UserId;
            userCardDetailModel.CardNumber   = maskedNumber;
            userCardDetailModel.ExpiredMonth = userCardDetails.ExpiredMonth;
            userCardDetailModel.ExpiredYear  = userCardDetails.ExpiredYear;
            userCardDetailModel.CVC          = userCardDetails.CVC;
            userCardDetailModel.PhoneNumber  = userCardDetails.PhoneNumber;
            userCardDetailModel.IsRegistered = true;
            return(userCardDetailModel);
        }
Ejemplo n.º 2
0
 public IHttpActionResult AddUserCardDetais(long userId, UserCardDetailModel model)
 {
     try
     {
         model.UserId = userId;
         var userCardDetailId = _userService.AddUserCardDetails(model);
         return(Ok(new { Message = "Kreditkortsuppgifter är uppdaterad." }));
     }
     catch (Exception ex)
     {
         _log.ErrorFormat("Error in adding user card details. Error : {0}", ex.Message);
         _log.Error(ex);
         throw;
     }
 }
Ejemplo n.º 3
0
        public bool UpdateUserCardDetails(UserCardDetailModel model)
        {
            _userCardDetailValidators.Validate(model);

            var userCardDetails = _userRepository.GetCradDetailsById(model.Id);

            if (userCardDetails == null)
            {
                throw _exception.ThrowException(System.Net.HttpStatusCode.BadRequest, "", "Kortet existerar inte.");
            }


            userCardDetails.CardNumber   = _cryptoGraphy.EncryptString(model.CardNumber);
            userCardDetails.ExpiredMonth = model.ExpiredMonth;
            userCardDetails.ExpiredYear  = model.ExpiredYear;
            userCardDetails.CVC          = model.CVC;
            userCardDetails.PhoneNumber  = model.PhoneNumber;
            userCardDetails.ModifiedDate = DateTime.Now;
            return(_userRepository.UpdateUserCardDetails(userCardDetails));
        }
Ejemplo n.º 4
0
        public bool AddUserCardDetails(UserCardDetailModel model)
        {
            try
            {
                _userCardDetailValidators.Validate(model);
                var errorMessage        = string.Empty;
                var userCardDetailModel = new UserCardDetailModel();
                var user = _accessTokenRepository.GetUser(model.UserId.Value);

                if (user == null)
                {
                    throw _exception.ThrowException(System.Net.HttpStatusCode.BadRequest, "", "Användare finns inte.");
                }

                //var cardExist = _userRepository.GetUserCardDetailByCardNumber(model.CardNumber, model.UserId.Value);

                //if (cardExist != null)
                //    throw _exception.ThrowException(System.Net.HttpStatusCode.BadRequest, "", "Kortnummer finns redan.");


                //if (response.CvcCheck.ToLower() != "pass")
                //    throw _exception.ThrowException(System.Net.HttpStatusCode.BadRequest, "", "Card is not valid.");

                //var isValidCard = CreditCardHelper.IsCardNumberValid(model.CardNumber, out errorMessage);
                //if (!isValidCard)
                //    throw _exception.ThrowException(System.Net.HttpStatusCode.BadRequest, "", errorMessage);


                var updateCard = UpdateUserCard(model);
                if (!updateCard)
                {
                    var customers = new StripeCustomerService();

                    StripeConfiguration.SetApiKey(ConfigurationManager.AppSettings["StripPublishKey"]);
                    var tokenService = new StripeTokenService();

                    var token = tokenService.Create(new StripeTokenCreateOptions {
                        Card = new StripeCreditCardOptions {
                            Cvc = model.CVC.ToString(), Number = model.CardNumber.Replace(" ", ""), ExpirationMonth = model.ExpiredMonth, ExpirationYear = model.ExpiredYear
                        }
                    });

                    StripeConfiguration.SetApiKey(ConfigurationManager.AppSettings["StripSecretKey"]);
                    var customerId = customers.Create(new StripeCustomerCreateOptions {
                        SourceToken = token.Id
                    });
                    var cardType           = CreditCardHelper.GetCardType(model.CardNumber);
                    StripeCardService card = new StripeCardService();
                    var cardToken          = CreditCardHelper.GetCardTokens(token.StripeCard.Brand);
                    var response           = card.Create(customerId.Id, new StripeCardCreateOptions {
                        SourceToken = cardToken
                    });

                    var userCardDetails = new UserCardDetails
                    {
                        UserId       = model.UserId,
                        CardNumber   = _cryptoGraphy.EncryptString(model.CardNumber),
                        CardType     = cardType.ToString(),
                        ExpiredMonth = model.ExpiredMonth,
                        ExpiredYear  = model.ExpiredYear,
                        CVC          = model.CVC,
                        CreditCardId = customerId.Id,
                        PhoneNumber  = model.PhoneNumber,
                        CreatedDate  = DateTime.Now,
                        ModifiedDate = DateTime.Now
                    };
                    var userCardDetailId = _userRepository.AddUserCardDetails(userCardDetails);
                }
            }
            catch (StripeException ex)
            {
                switch (ex.StripeError.ErrorType)
                {
                case "card_error":
                    throw _exception.ThrowException(System.Net.HttpStatusCode.BadRequest, "", ex.StripeError.Message);

                case "api_connection_error":
                    break;

                case "api_error":
                    break;

                case "authentication_error":
                    break;

                case "invalid_request_error":
                    break;

                case "rate_limit_error":
                    break;

                case "validation_error":
                    break;

                default:
                    // Unknown Error Type
                    break;
                }
            }
            return(true);
        }
Ejemplo n.º 5
0
        public bool UpdateUserCard(UserCardDetailModel model)
        {
            var userCardDetailsByUserId = _userRepository.GetUserCardDetailsByUserId(model.UserId.Value);

            if (userCardDetailsByUserId != null)
            {
                try
                {
                    var trimCard = model.CardNumber.Replace(" ", "");
                    if (trimCard.Contains("XXXXXX"))
                    {
                        userCardDetailsByUserId.ExpiredMonth = model.ExpiredMonth;
                        userCardDetailsByUserId.ExpiredYear  = model.ExpiredYear;
                        userCardDetailsByUserId.CVC          = model.CVC;
                        userCardDetailsByUserId.PhoneNumber  = model.PhoneNumber;
                        userCardDetailsByUserId.ModifiedDate = DateTime.Now;
                        return(_userRepository.UpdateUserCardData(userCardDetailsByUserId));
                    }
                    else
                    {
                        var customers = new StripeCustomerService();

                        StripeConfiguration.SetApiKey(ConfigurationManager.AppSettings["StripPublishKey"]);
                        var tokenService = new StripeTokenService();

                        var token = tokenService.Create(new StripeTokenCreateOptions {
                            Card = new StripeCreditCardOptions {
                                Cvc = model.CVC.ToString(), Number = model.CardNumber.Replace(" ", ""), ExpirationMonth = model.ExpiredMonth, ExpirationYear = model.ExpiredYear
                            }
                        });

                        StripeConfiguration.SetApiKey(ConfigurationManager.AppSettings["StripSecretKey"]);
                        var customerId = customers.Create(new StripeCustomerCreateOptions {
                            SourceToken = token.Id
                        });
                        var cardType           = CreditCardHelper.GetCardType(model.CardNumber);
                        StripeCardService card = new StripeCardService();
                        var cardToken          = CreditCardHelper.GetCardTokens(token.StripeCard.Brand);
                        var response           = card.Create(customerId.Id, new StripeCardCreateOptions {
                            SourceToken = cardToken
                        });

                        userCardDetailsByUserId.CardNumber   = _cryptoGraphy.EncryptString(model.CardNumber);
                        userCardDetailsByUserId.CardType     = cardType.ToString();
                        userCardDetailsByUserId.ExpiredMonth = model.ExpiredMonth;
                        userCardDetailsByUserId.ExpiredYear  = model.ExpiredYear;
                        userCardDetailsByUserId.CVC          = model.CVC;
                        userCardDetailsByUserId.CreditCardId = customerId.Id;
                        userCardDetailsByUserId.PhoneNumber  = model.PhoneNumber;
                        userCardDetailsByUserId.ModifiedDate = DateTime.Now;
                        return(_userRepository.UpdateUserCardDetails(userCardDetailsByUserId));
                    }
                }
                catch (StripeException ex)
                {
                    switch (ex.StripeError.ErrorType)
                    {
                    case "card_error":
                        throw _exception.ThrowException(System.Net.HttpStatusCode.BadRequest, "", ex.StripeError.Message);

                    case "api_connection_error":
                        break;

                    case "api_error":
                        break;

                    case "authentication_error":
                        break;

                    case "invalid_request_error":
                        break;

                    case "rate_limit_error":
                        break;

                    case "validation_error":
                        break;

                    default:
                        // Unknown Error Type
                        break;
                    }
                }
            }
            else
            {
                return(false);
            }
            return(false);
        }