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); }
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; } }
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)); }
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); }
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); }