public CreditCardDTO Delete(CreditCardDTO cardDTO)
 {
     CreditCards cardToRemove = cardRepository.Get(cardDTO.Id);
     cardRepository.Delete(cardToRemove);
     cardRepository.SaveChanges();
     return cardDTO;
 }
예제 #2
0
        public ActionResult <CreditCard> CreateCreditCard(string userToken, [FromBody] CreditCardDTO creditCardDTO)
        {
            var user = authService.CheckToken(userToken);

            if (user == null)
            {
                return(Conflict(new { message = $"Invalid user session token!" }));
            }

            if (creditCardDTO == null)
            {
                return(Conflict(new { message = $"Invalid credit card data!" }));
            }

            var creditCard = new CreditCard()
            {
                Number          = creditCardDTO.CreditCardNumber,
                ExpirationDate  = creditCardDTO.CreditCardExpirationDate,
                SecurityCode    = creditCardDTO.CreditCardSecurityCode,
                CreditCardToken = Guid.NewGuid().ToString()
            };

            if (!Startup.Users.ContainsKey(user.Id))
            {
                user.CreditCards = new List <CreditCard>();
                Startup.Users.Add(user.Id, user);
            }
            Startup.Users[user.Id].CreditCards.Add(creditCard);

            return(Ok(creditCard));
        }
예제 #3
0
        public CreditCardDTO AddUserCreditCard(AddCreditCardBindingModel model, int Id)
        {
            try
            {
                CreditCard card = new CreditCard {
                    CardNumber = model.CardNumber, CVV = model.CVV, Name = model.Name, CardTypeName = model.CardNumber
                };
                if (model.UserType == UserTypes.User)
                {
                    card.User_Id = Id;
                }
                else
                {
                    card.Driver_Id = Id;
                }

                _dbContext.CreditCards.Add(card);
                _dbContext.SaveChanges();
                CreditCardDTO creditCardDTO = Mapper.Map <CreditCard, CreditCardDTO>(card);
                return(creditCardDTO);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
예제 #4
0
        private bool IsValidExpiry(CreditCardDTO creditCardDTO)
        {
            Regex reg     = new Regex(@"^[0-1]\d{5}$");
            Match ismatch = reg.Match(creditCardDTO.Expiry);

            return(ismatch.Success);
        }
        public ValidationCreditCardDTO ValidationCreditCard(CreditCardDTO creditCardDTO)
        {
            string type = "";
            ValidationCreditCardDTO validationCreditCardDTO = new ValidationCreditCardDTO();

            bool vlidation = Validation(creditCardDTO, ref type);

            validationCreditCardDTO.CardType = type;
            if (vlidation)
            {
                using (MyDbContext db = new MyDbContext())
                {
                    SqlParameter cardnumber = new SqlParameter("@cardnumber", creditCardDTO.CardNumber);
                    SqlParameter expiryDate = new SqlParameter("@expiryDate", creditCardDTO.ExpiryDate);
                    SqlParameter result     = new SqlParameter("@ValidationResult", SqlDbType.NVarChar, 20);
                    result.Direction = ParameterDirection.Output;
                    db.Database.SqlQuery <string>("exec ValidationCreditCard @cardnumber,@expiryDate,@ValidationResult out", cardnumber, expiryDate, result).FirstOrDefault();

                    if (string.IsNullOrEmpty(result.Value.ToString()))
                    {
                        validationCreditCardDTO.ValidationResult = "valid";
                    }
                    else
                    {
                        validationCreditCardDTO.ValidationResult = result.Value.ToString();
                    }
                }
            }
            else
            {
                validationCreditCardDTO.ValidationResult = "invalid";
            }
            return(validationCreditCardDTO);
        }
예제 #6
0
        private CreditCardMetrics RefreshCreditCardMetrics(CreditCardDTO entity)
        {
            CreditCardMetrics metrics = new CreditCardMetrics();


            return(metrics);
        }
예제 #7
0
        public IList <CreditCardDTO> GetCreditCards()
        {
            SAPbobsCOM.Recordset  lObjResults        = (SAPbobsCOM.Recordset)DIApplication.Company.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset);
            IList <CreditCardDTO> lLstObjCreditCards = new List <CreditCardDTO>();

            try
            {
                string lStrQuery = this.GetSQL("GetCreditCards");
                lObjResults.DoQuery(lStrQuery);
                if (lObjResults.RecordCount > 0)
                {
                    for (int i = 0; i < lObjResults.RecordCount; i++)
                    {
                        CreditCardDTO lObjCreditCard = new CreditCardDTO();
                        lObjCreditCard.CreditCard = Convert.ToInt32(lObjResults.Fields.Item("CreditCard").Value.ToString());
                        lObjCreditCard.CardName   = lObjResults.Fields.Item("CardName").Value.ToString();
                        lObjCreditCard.AcctCode   = lObjResults.Fields.Item("AcctCode").Value.ToString();
                        lObjCreditCard.Country    = lObjResults.Fields.Item("Country").Value.ToString();
                        lLstObjCreditCards.Add(lObjCreditCard);
                        lObjResults.MoveNext();
                    }
                }
                return(lLstObjCreditCards);
            }
            catch (Exception e)
            {
                LogUtility.WriteError(string.Format("[CreditCardDAO - GetCreditCards] Error al obtener las tarjetas de credito: {0}", e.Message));
                throw new Exception(string.Format("Error al obtener las tarjetas de crédito: {0}", e.Message));
            }
            finally
            {
                MemoryUtility.ReleaseComObject(lObjResults);
            }
        }
예제 #8
0
 public static CreditCard CreateCreditCard(CreditCardDTO card, string securityCodeHash, string userId)
 {
     if (Regex.IsMatch(card.Number.ToString(), masterCardPattern))
     {
         return(new MasterCard()
         {
             Name = card.Name,
             Number = card.Number,
             Month = card.Month,
             Year = card.Year,
             SecurityCodeHash = securityCodeHash,
             UserProfileId = userId,
         });
     }
     if (Regex.IsMatch(card.Number.ToString(), visaCardPattern))
     {
         return(new VisaCard()
         {
             Name = card.Name,
             Number = card.Number,
             Month = card.Month,
             Year = card.Year,
             SecurityCodeHash = securityCodeHash,
             UserProfileId = userId,
         });
     }
     return(null);
 }
 public void CreateOrUpdate(CreditCardDTO cardDTO)
 {
     CreditCards card = cardRepository.Get(cardDTO.Id);
     card = mapper.Map<CreditCardDTO, CreditCards>(cardDTO);
     cardRepository.CreateOrUpdate(card);
     cardRepository.SaveChanges();
 }
예제 #10
0
        public OperationDetails Create(CreditCardDTO card, string userId)
        {
            List <CreditCard> c = Database.CardRepository.Find(x => x.Number == card.Number).ToList();

            if (c.Count == 0)
            {
                DateTime expiration = new DateTime(
                    Convert.ToInt32("20" + card.Year),
                    Convert.ToInt32(card.Month), 1);

                if (expiration < DateTime.Now)
                {
                    return(new OperationDetails(false, "Your card is expired", ""));
                }

                var        hash       = Database.UserManager.PasswordHasher.HashPassword(card.SecurityCode);
                CreditCard creditCard = CreditCardFactory.CreateCreditCard(card, hash, userId);
                if (creditCard != null)
                {
                    Database.CardRepository.Create(creditCard);
                    Database.CardRepository.SaveChanges();
                    return(new OperationDetails(true, "Card added successfully", ""));
                }
                return(new OperationDetails(false, "Card number is incorrect", "Number"));
            }
            return(new OperationDetails(false, "Card already exists", ""));
        }
        //1.result(valid,invalid,does not exist)
        //2.card type(visa,master,amex,jcb or unknown)

        /// <summary>
        /// Determine whether the input information is valid
        /// </summary>
        /// <param name="creditCardDTO">Credit card information</param>
        /// <param name="type">Credit card type</param>
        /// <returns>true:valid false:invalid</returns>
        private bool Validation(CreditCardDTO creditCardDTO, ref string type)
        {
            //6.only amex card number has 15 digits,the rest of card types have 16 digits.
            if (creditCardDTO.CardNumber.Length == 16)
            {
                int year = Convert.ToInt32(creditCardDTO.ExpiryDate.Substring(2, 4));
                //1.visa is a card number starting wiht 4,
                //7.a valid visa card is the card number where expiry year is a leap year.
                if (creditCardDTO.CardNumber.Substring(0, 1).Equals("4") && DateTime.IsLeapYear(year))
                {
                    type = "visa";
                    return(true);
                }
                //2.mastercard is a card number starting with 5.
                //8.a valid mastercard card is the card number where expiry year is prime number.
                else if (creditCardDTO.CardNumber.Substring(0, 1).Equals("5") && IsProbablePrime(Convert.ToInt32(creditCardDTO.ExpiryDate)))
                {
                    type = "master";
                    return(true);
                }
                //4.jcb is a card number starting wiht 3528-2589.
                //9.every jcb card is valid.
                else if (creditCardDTO.CardNumber.StartsWith("35282589"))
                {
                    type = "jcb";
                    return(true);
                }
                //5.the card starting with any other number is "unknown".
                else
                {
                    type = "unknown";
                    return(true);
                }
            }
            //3.amex is a card number starting with 34,37.
            //6.only amex card number has 15 digits,the rest of card types have 16 digits.
            else if (creditCardDTO.CardNumber.Length == 15)
            {
                //3.amex is a card number starting with 34,37.
                //6.only amex card number has 15 digits,the rest of card types have 16 digits.
                if (creditCardDTO.CardNumber.StartsWith("34") ||
                    creditCardDTO.CardNumber.StartsWith("37"))
                {
                    type = "amex";
                    return(true);
                }
                //5.the card starting with any other number is "unknown".
                else
                {
                    type = "unknown";
                    return(true);
                }
            }
            //11.the rest case is "invalid" card.
            else
            {
                return(false);
            }
        }
예제 #12
0
        public ActionResult OnSubscriptionComplete(Guid?requestId)
        {
            var    referral = Request.QueryString["ref"];
            string error;
            var    reqId = requestId;

            if (reqId == null)
            {
                return(Redirect2PaymentError("requestId missing"));
            }

            var baseInfo = _paypalServices.GetItemInfoFromPaymentRequest((Guid)reqId);

            if (!baseInfo.IsValid)
            {
                return(Redirect2PaymentError("Request not found"));
            }

            if (String.IsNullOrEmpty(Request.QueryString["TOKEN"]))
            {
                _paypalServices.UpdatePaypalRequestStatus((Guid)reqId, BillingEnums.ePaymentRequestStatus.failed, out error);

                return(Redirect2PaymentError("token missing"));
            }

            var agreement_token = Request.QueryString["TOKEN"];

            CreditCardDTO card = null;

            if (Session["RecurringCc"] != null)
            {
                card = Session["RecurringCc"] as CreditCardDTO;
            }

            RecurringPaymentExecutionResultToken result;

            var orderNo = -1;

            var executed = _paypalServices.ExecuteCourseSubscriptionPayalRecurringPayment(CurrentUserId, (Guid)reqId, agreement_token, card, out result, out error, Session.SessionID) && _billingServices.CompleteSubscriptionRequest(result, out orderNo, out error);

            //if (executed) return ReturnPurchaseSuccess(baseInfo.PriceLineId, orderNo, baseInfo.TrackingId, referral);

            //CheckoutBase.Message = error;

            //return View("Failure", CheckoutBase);

            return(RedirectToAction("PurchaseResult", new
            {
                isValid = executed,
                actionKind = eActionKinds.POST,
                id = baseInfo.PriceLineId,
                itemName = baseInfo.ItemName,
                trackingId = baseInfo.TrackingId,
                orderNo,
                error,
                referral
            }));
        }
예제 #13
0
        public IHttpActionResult ValidationCreditCard(CreditCardDTO creditCardDTO)
        {
            ValidationCreditCardDTO validationCreditCardDTO = creditCardService.ValidationCreditCard(creditCardDTO);

            return(Json(new AjaxResult()
            {
                Status = "000000", Data = validationCreditCardDTO
            }));
        }
예제 #14
0
        public override bool IsCorrectFormat(CreditCardDTO creditCardDTO)
        {
            var isValidExpiry = base.IsCorrectFormat(creditCardDTO);

            Regex reg     = new Regex(@"^3\d{14}$");
            Match ismatch = reg.Match(creditCardDTO.Number);

            return(ismatch.Success && isValidExpiry);
        }
예제 #15
0
 protected bool DALayer_Load(string key)
 {
     //Start Error Trapping
     try
     {
         //Use DAL object Factory to get the SQL Server FACTORY Data Access Object
         DALObjectFactoryBase objSQLDAOFactory =
             DALObjectFactoryBase.GetDataSourceDAOFactory(DALObjectFactoryBase.SQLSERVER);
         //now that you have the sql FACTORY data access object
         //call the correct Data Access Object to perform the Data Access
         CreditCardDAO objCreditCardDAO = objSQLDAOFactory.GetCreditCardDAO();
         //call the CreditCardDAO Data Access Object to do the work
         CreditCardDTO objCreditCardDTO = objCreditCardDAO.GetRecordByID(key);
         //test if DTO object exists & populate this object with DTO object's properties
         //and return a true or return a False if no DTO object exists.
         if (objCreditCardDTO != null)
         {
             //get the data from the Data Transfer Object
             this.CardNumber    = objCreditCardDTO.CardNumber;
             this.CardOwnerName = objCreditCardDTO.CardOwnerName;
             this.MerchantName  = objCreditCardDTO.MerchantName;
             this.ExpDate       = Convert.ToDateTime(objCreditCardDTO.ExpirationDate);
             this.AddressLines1 = objCreditCardDTO.AddressLine1;
             this.AddressLines2 = objCreditCardDTO.AddressLine2;
             this.City          = objCreditCardDTO.City;
             this.State         = objCreditCardDTO.State;
             this.ZipCode       = objCreditCardDTO.ZipCode;
             this.Country       = objCreditCardDTO.Country;
             this.CreditLimit   = objCreditCardDTO.CreditLimit;
             //this.ActivationStatus = objCreditCardDTO.ActivationStatus;
             //Handle activation status accordingly using methods
             //since ActivationStutus property is read only
             if (objCreditCardDTO.ActivationStatus == true)
             {
                 this.Activate();
             }
             else
             {
                 this.Deactivate();
             }
             //Returns a true since this class object has been populated.
             return(true);
         }
         else
         {
             //No object returned from DALayer, return a false
             return(false);
         }
     }//End of try
      //Traps for general exception.
     catch (Exception objE)
     {
         //Re-Throw an general exceptions
         throw new Exception("Unexpected Error in DALayer_Load(key) Method: {0} " + objE.Message);
     }
 }//End of method
예제 #16
0
        public void NotExist()
        {
            CreditCardDTO creditCardDTO = new CreditCardDTO()
            {
                CardNumber = "4789081276381292", ExpiryDate = "082008"
            };
            CreditCardService       creditCardService = new CreditCardService();
            ValidationCreditCardDTO result            = creditCardService.ValidationCreditCard(creditCardDTO);

            Assert.AreEqual(result.ValidationResult, "does not exist");
        }
예제 #17
0
        public ActionResult OnSubscriptionComplete(Guid?id, string refferal)
        {
            string error;
            var    requestId = id;

            if (requestId == null)
            {
                return(Redirect2PaymentError("requestId missing", string.Empty, -1, string.Empty, eActionKinds.POST, refferal));
            }

            var baseInfo = _paypalServices.GetItemInfoFromPaymentRequest((Guid)requestId);

            if (!baseInfo.IsValid)
            {
                return(Redirect2PaymentError("Request not found", string.Empty, -1, string.Empty, eActionKinds.POST, refferal));
            }

            if (String.IsNullOrEmpty(Request.QueryString["TOKEN"]))
            {
                _paypalServices.UpdatePaypalRequestStatus((Guid)requestId, BillingEnums.ePaymentRequestStatus.failed, out error);

                return(Redirect2PaymentError("token missing", baseInfo.ItemName, baseInfo.PriceLineId, baseInfo.TrackingId, eActionKinds.POST, refferal));
            }

            var agreement_token = Request.QueryString["TOKEN"];

            CreditCardDTO card = null;

            if (Session["RecurringCc"] != null)
            {
                card = Session["RecurringCc"] as CreditCardDTO;
            }

            RecurringPaymentExecutionResultToken result;

            var orderNo = -1;

            var executed = _paypalServices.ExecuteCourseSubscriptionPayalRecurringPayment(CurrentUserId, (Guid)requestId, agreement_token, card, out result, out error, Session.SessionID) && _billingServices.CompleteSubscriptionRequest(result, out orderNo, out error);

            //return executed ? View("PurchaseResult", new PurchaseResultToken { IsValid = true, ActionKind = eActionKinds.POST, RedirectUrl = Url.Action("PurchaseComplete", "Payment", new { area = "Widget", id = orderNo, trackingId = baseInfo.TrackingId }) }) :
            //                    Redirect2PaymentError(error ?? "unexpected error", baseInfo.ItemName, baseInfo.PriceLineId, baseInfo.TrackingId, eActionKinds.POST);

            return(RedirectToAction("PurchaseResult", new
            {
                isValid = executed,
                actionKind = eActionKinds.POST,
                lineId = baseInfo.PriceLineId,
                itemName = baseInfo.ItemName,
                trackingId = baseInfo.TrackingId,
                orderNo,
                error,
                refferal
            }));
        }
예제 #18
0
        public void InValidMastercard()
        {
            CreditCardDTO creditCardDTO = new CreditCardDTO()
            {
                CardNumber = "5789081278129",
                ExpiryDate = "012011"
            };
            CreditCardService       creditCardService = new CreditCardService();
            ValidationCreditCardDTO result            = creditCardService.ValidationCreditCard(creditCardDTO);

            Assert.AreEqual(result.ValidationResult, "invalid");
        }
예제 #19
0
        public void InValidVisa()
        {
            CreditCardDTO creditCardDTO = new CreditCardDTO()
            {
                CardNumber = "47890812381",
                ExpiryDate = "082008"
            };
            CreditCardService       creditCardService = new CreditCardService();
            ValidationCreditCardDTO result            = creditCardService.ValidationCreditCard(creditCardDTO);

            Assert.AreEqual(result.ValidationResult, "invalid");
        }
예제 #20
0
        public void ValidJcb()
        {
            CreditCardDTO creditCardDTO = new CreditCardDTO()
            {
                CardNumber = "3528258976381678",
                ExpiryDate = "012011"
            };
            CreditCardService       creditCardService = new CreditCardService();
            ValidationCreditCardDTO result            = creditCardService.ValidationCreditCard(creditCardDTO);

            Assert.AreEqual(result.ValidationResult, "valid");
        }
예제 #21
0
        public void InValidAmex()
        {
            CreditCardDTO creditCardDTO = new CreditCardDTO()
            {
                CardNumber = "34282589381",
                ExpiryDate = "012011"
            };
            CreditCardService       creditCardService = new CreditCardService();
            ValidationCreditCardDTO result            = creditCardService.ValidationCreditCard(creditCardDTO);

            Assert.AreEqual(result.ValidationResult, "invalid");
        }
예제 #22
0
        public void TestInValid_Mastercard()
        {
            var ccDTO = new CreditCardDTO {
                Number = "5554705785720271", Expiry = "022280"
            };
            var controller = new CreditCardController(ccDTO);

            var result = controller.FetchValidationResult(ccDTO);

            Assert.IsNotNull(result);
            Assert.AreEqual(result.CardType.ToLower(), "mastercard");
            Assert.AreEqual(result.Result.ToLower(), "invalid");
        }
예제 #23
0
        public void TestInValid_JCB()
        {
            var ccDTO = new CreditCardDTO {
                Number = "326026WWW6585401", Expiry = "022281"
            };
            var controller = new CreditCardController(ccDTO);

            var result = controller.FetchValidationResult(ccDTO);

            Assert.IsNotNull(result);
            Assert.AreEqual(result.CardType.ToLower(), "jcb");
            Assert.AreEqual(result.Result.ToLower(), "invalid");
        }
예제 #24
0
        public void TestInValid_Visa()
        {
            var ccDTO = new CreditCardDTO {
                Number = "4348601342777256", Expiry = "052021"
            };
            var controller = new CreditCardController(ccDTO);

            var result = controller.FetchValidationResult(ccDTO);

            Assert.IsNotNull(result);
            Assert.AreEqual(result.CardType.ToLower(), "visa");
            Assert.AreEqual(result.Result.ToLower(), "invalid");
        }
예제 #25
0
        public void TestInValid_Amex()
        {
            var ccDTO = new CreditCardDTO {
                Number = "31643311XX15513", Expiry = "022281"
            };
            var controller = new CreditCardController(ccDTO);

            var result = controller.FetchValidationResult(ccDTO);

            Assert.IsNotNull(result);
            Assert.AreEqual(result.CardType.ToLower(), "amex");
            Assert.AreEqual(result.Result.ToLower(), "invalid");
        }
예제 #26
0
        public CreditCardDTO Get(CreditCardDTO entity)
        {
            try
            {
                entity.CreditCards = _db.CreditCards.ToList();
                entity.Metrics     = RefreshCreditCardMetrics(entity);
            }
            catch (Exception)
            {
                //ignore
            }


            return(entity);
        }
예제 #27
0
        public override bool IsCorrectFormat(CreditCardDTO creditCardDTO)
        {
            var isValidExpiry = base.IsCorrectFormat(creditCardDTO);

            Regex reg     = new Regex(@"^4\d{15}$");
            Match ismatch = reg.Match(creditCardDTO.Number);

            if (ismatch.Success && isValidExpiry)
            {
                var year = creditCardDTO.Expiry.Substring(creditCardDTO.Expiry.Length - 4);

                return(DateTime.IsLeapYear(int.Parse(year)));
            }
            return(false);
        }
예제 #28
0
        }//End of method

        protected bool DALayer_Update()
        {
            //Start Error Trapping
            try
            {
                //Use DAL object Factory to get the SQL Server FACTORY Data Access Object
                DALObjectFactoryBase objSQLDAOFactory =
                    DALObjectFactoryBase.GetDataSourceDAOFactory(DALObjectFactoryBase.SQLSERVER);
                //now that you have the sql FACTORY data access object
                //call the correct Data Access Object to perform the Data Access
                CreditCardDAO objCreditCardDAO = objSQLDAOFactory.GetCreditCardDAO();
                //Create new Data Transfer Object to send to DA Later for DATA ACCESS LAYER
                CreditCardDTO objCreditCardDTO = new CreditCardDTO();
                //POPULATE the Data Transfer Object with data from THIS OBJECT to send to database
                objCreditCardDTO.CardNumber       = this.CardNumber;
                objCreditCardDTO.CardOwnerName    = this.CardOwnerName;
                objCreditCardDTO.MerchantName     = this.MerchantName;
                objCreditCardDTO.ExpirationDate   = this.ExpDate;
                objCreditCardDTO.AddressLine1     = this.AddressLines1;
                objCreditCardDTO.AddressLine2     = this.AddressLines2;
                objCreditCardDTO.City             = this.City;
                objCreditCardDTO.State            = this.State;
                objCreditCardDTO.ZipCode          = this.ZipCode;
                objCreditCardDTO.Country          = this.Country;
                objCreditCardDTO.CreditLimit      = this.CreditLimit;
                objCreditCardDTO.ActivationStatus = this.ActivationStatus;
                //call the CreditCardDAO Data Access Object to do the work
                bool updated = objCreditCardDAO.Update(objCreditCardDTO);
                //test if update to database was successful & MARK the object as old return true,
                //otherwise return false
                if (updated == true)
                {
                    //Returns a true since this class object has been updated.
                    return(true);
                }
                else
                {
                    //No record updated, return a false
                    return(false);
                }
            }//End of try
             //Traps for general exception.
            catch (Exception objE)
            {
                //Re-Throw an general exceptions
                throw new Exception("Unexpected Error in DALayer_Update() Method: {0} " + objE.Message);
            }
        }//End of method
예제 #29
0
        public override ValidationResult ValidationResult(CreditCardDTO creditCardDTO)
        {
            var result = "";

            if (this.IsCorrectFormat(creditCardDTO))
            {
                result = GlobalVariables.ValidResult;
            }
            else
            {
                result = GlobalVariables.InvalidResult;
            }
            return(new ValidationResult {
                CardType = this.GetType().Name, Result = result
            });
        }
        public ActionResult Add([FromBody] CreditCardDTO creditCardDTO)
        {
            var newCreditCard = new CreditCard
            {
                Number       = creditCardDTO.Number,
                Holder       = creditCardDTO.Holder,
                SecurityCode = creditCardDTO.SecurityCode,
                Flag         = creditCardDTO.Flag,
                Limit        = creditCardDTO.Limit,
                Purchases    = creditCardDTO.Purchases,
                UserId       = _userManager.GetUserAsync(HttpContext.User).Result.Id
            };

            _creditCardRepository.Add(newCreditCard);
            return(Created("", newCreditCard));
        }
예제 #31
0
    public static void Main(String[] args)
    {
        WebServicesSessionLocalService service = new WebServicesSessionLocalService();
        NetworkCredential cre = new NetworkCredential();
        cre.UserName = "******";
        cre.Password = "******";
        service.PreAuthenticate = true;
        service.Credentials = cre;

        // create a new user type customer
        UserWS newUser = new UserWS();
        newUser.userName = "******";
        newUser.password = "******";
        newUser.currencyId = 1;  // US Dollars
        newUser.languageId = 1;  // English
        newUser.mainRoleId = 5;  // Type Customer
        newUser.statusId = 1;    // Status Active

        // add a contact (all fields optional)
        ContactWS contact = new ContactWS();
        contact.email = "*****@*****.**";
        contact.firstName = "John";
        contact.lastName = "Smith";
        contact.initial = "J.";
        contact.title = "Owner";
        contact.countryCode = "US"; // two digits code (ISO-3166)
        contact.organizationName = "Trend Inc.";
        contact.address1 = "1234 Main St";
        contact.address2 = "Suite 100";
        contact.city = "Miami";
        contact.stateProvince = "FL";
        contact.postalCode = "12345";
        contact.phoneCountryCode = 1;
        contact.phoneAreaCode = 800;
        contact.phoneNumber = "303-3030";
        newUser.contact = contact;

        // add a credit card
        CreditCardDTO cc = new CreditCardDTO();
        cc.name = "John J. Smith";
        cc.number = "4111-1111 1111-1111  ";
        cc.expiry = DateTime.Now;
        newUser.creditCard = cc;

        Console.WriteLine("Creating new customer ... ");
        int newUserId = service.createUser(newUser);
        if (newUserId == 0) {
            Console.WriteLine("The user " + newUser.userName +
                    " already exists in the system. Please select a new one");
            return;
        }
        Console.WriteLine("New user id is " + newUserId);

        // fetch the user we have just created
        UserWS myUser = service.getUserWS(newUserId);
        // show some fields
        Console.WriteLine("my user name = " + myUser.contact.firstName +
                " " + myUser.contact.lastName);
        Console.WriteLine("my user credit card = " + myUser.creditCard.number);

        // Add a purchase order for my new user
        OrderWS newOrder = new OrderWS();
        newOrder.userId = newUserId;
        newOrder.billingTypeId = 1; // pre-paid
        newOrder.period = 1; 		// one time
        newOrder.currencyId = 1;    // US Dollars

        // now add some lines
        OrderLineWS[] lines = new OrderLineWS[2];

        // This line will be using the information from the item
        lines[1] = new OrderLineWS();
        lines[1].typeId = 1;  // line with items
        lines[1].quantity = 1;
        lines[1].itemId = 307;
        lines[1].useItem = true; // this indicates that price, and description are those from the item

        // I put all the information manually by not setting the 'useItem' flag
        lines[0] = new OrderLineWS();
        lines[0].price = 10;
        lines[0].typeId = 1;  // line with items
        lines[0].quantity = 1;
        lines[0].amount = 10; // usually is price * quantity
        lines[0].description = "Monthly top banner subscription";
        lines[0].itemId = 308;

        newOrder.orderLines = lines;
        Console.WriteLine("Creating new purchase order ... ");
        int newOrderId = service.createOrder(newOrder);
        Console.WriteLine("New order id is " + newOrderId);

        // get the latest purchase order of my user
        OrderWS latestOrder = service.getLatestOrder(newUserId);
        Console.WriteLine(latestOrder.id + " should be equal to " + newOrderId);

        /*
         * Mega call: Creates a user with a purchase order in one call.
         * Creates the user, the purchase order, generates an invoice and
         * process a payment in real-time.
         * Use this for the initial signup of a customer.
         * Future invoices/payments will be done automatically by the billing
         * process.
         */

        // Delete the user so it can be recreated with a mega-call
        service.deleteUser(newUserId);
        // make the call
        Console.WriteLine("Now making a mega call ... ");
        CreateResponseWS result = service.create(myUser, newOrder);
        // show the results
        Console.WriteLine("new user= "******" new order= " +
                result.orderId + " new invoice= " + result.invoiceId +
                " new payment= " + result.paymentId + " payment result = " +
                result.paymentResult);

        // Clean up so this test can run again
        service.deleteUser(result.userId);
        Console.WriteLine("Done!");
    }