public ActionResult Index() { //if (User.Identity.IsAuthenticated == false) //This works, but it's verbose. Use an attribute! // return RedirectToAction("Login"); MyAccountModel model = new MyAccountModel(); model.EmailAddress = User.Identity.Name; string publicKey = ConfigurationManager.AppSettings["Braintree.PublicKey"]; string privateKey = ConfigurationManager.AppSettings["Braintree.PrivateKey"]; string environment = ConfigurationManager.AppSettings["Braintree.Environment"]; string merchantId = ConfigurationManager.AppSettings["Braintree.MerchantID"]; Braintree.BraintreeGateway braintree = new Braintree.BraintreeGateway(environment, merchantId, publicKey, privateKey); int userId = -1; using (MemberEntities1 e = new MemberEntities1()) { userId = e.CustomerLists.Single(x => x.EmailAddress == User.Identity.Name).ID; } var customer = braintree.Customer.Find(userId.ToString()); model.FirstName = customer.FirstName; model.LastName = customer.LastName; model.Phone = customer.Phone; model.Company = customer.Company; model.Fax = customer.Fax; model.Website = customer.Website; return(View(model)); }
// GET: Payments public ActionResult Index() { string publicKey = ConfigurationManager.AppSettings["Braintree.PublicKey"]; string privateKey = ConfigurationManager.AppSettings["Braintree.PrivateKey"]; string environment = ConfigurationManager.AppSettings["Braintree.Environment"]; string merchantId = ConfigurationManager.AppSettings["Braintree.MerchantId"]; Braintree.BraintreeGateway braintree = new Braintree.BraintreeGateway(environment, merchantId, publicKey, privateKey); int userId = -1; using (MemberEntities1 e = new MemberEntities1()) { userId = e.CustomerLists.Single(x => x.EmailAddress == User.Identity.Name).ID; } var customer = braintree.Customer.Find(userId.ToString()); var model = customer.CreditCards.Select(x => new Models.PaymentModel { CardType = x.CardType.ToString(), ExpirationDate = x.ExpirationDate, LastFour = x.LastFour, ID = x.Token }).ToArray(); return(View(model)); }
public StripeController( GlobalSettings globalSettings, IOptions <BillingSettings> billingSettings, IWebHostEnvironment hostingEnvironment, IOrganizationService organizationService, IOrganizationRepository organizationRepository, ITransactionRepository transactionRepository, IUserService userService, IAppleIapService appleIapService, IMailService mailService, IReferenceEventService referenceEventService, ILogger <StripeController> logger, ITaxRateRepository taxRateRepository) { _billingSettings = billingSettings?.Value; _hostingEnvironment = hostingEnvironment; _organizationService = organizationService; _organizationRepository = organizationRepository; _transactionRepository = transactionRepository; _userService = userService; _appleIapService = appleIapService; _mailService = mailService; _referenceEventService = referenceEventService; _taxRateRepository = taxRateRepository; _logger = logger; _btGateway = new Braintree.BraintreeGateway { Environment = globalSettings.Braintree.Production ? Braintree.Environment.PRODUCTION : Braintree.Environment.SANDBOX, MerchantId = globalSettings.Braintree.MerchantId, PublicKey = globalSettings.Braintree.PublicKey, PrivateKey = globalSettings.Braintree.PrivateKey }; }
public ActionResult Index(MyAccountModel model) { string publicKey = ConfigurationManager.AppSettings["Braintree.PublicKey"]; string privateKey = ConfigurationManager.AppSettings["Braintree.PrivateKey"]; string environment = ConfigurationManager.AppSettings["Braintree.Environment"]; string merchantId = ConfigurationManager.AppSettings["Braintree.MerchantId"]; Braintree.BraintreeGateway braintree = new Braintree.BraintreeGateway(environment, merchantId, publicKey, privateKey); int userId = -1; using (MemberEntities1 e = new MemberEntities1()) { userId = e.CustomerLists.Single(x => x.EmailAddress == User.Identity.Name).ID; } Braintree.CustomerRequest update = new Braintree.CustomerRequest(); update.FirstName = model.FirstName; update.LastName = model.LastName; update.Phone = model.Phone; update.Company = model.Company; update.Fax = model.Fax; update.Website = model.Website; braintree.Customer.Update(userId.ToString(), update); return(View(model)); }
// GET: Checkout public ActionResult Index() { ViewBag.HeaderId = "back"; ViewBag.HeaderClass = "hide"; CheckoutModel model = new CheckoutModel(); string publicKey = ConfigurationManager.AppSettings["Braintree.PublicKey"]; string privateKey = ConfigurationManager.AppSettings["Braintree.PrivateKey"]; string environment = ConfigurationManager.AppSettings["Braintree.Environment"]; string merchantId = ConfigurationManager.AppSettings["Braintree.MerchantId"]; Braintree.BraintreeGateway braintree = new Braintree.BraintreeGateway(environment, merchantId, publicKey, privateKey); using (CustomersEntities entities = new CustomersEntities()) { var currentCustomer = entities.Customers.Single(x => x.EmailAddress == User.Identity.Name); var currentPackage = currentCustomer.CustomerPackages.First(x => x.PurchaseDate == null); model.Package = new PackageModel(); model.Package.Name = currentPackage.Package.Name; model.Package.Price = currentPackage.Package.Price; model.Package.Assistant = currentPackage.Package.Assistant; model.Package.Task = currentPackage.Package.Task; model.FirstName = currentCustomer.FirstName; model.LastName = currentCustomer.LastName; model.EmailAddress = currentCustomer.EmailAddress.Trim(); } return(View(model)); }
public ActionResult Index() { string merchantId = ConfigurationManager.AppSettings["Braintree.MerchantID"]; string publicKey = ConfigurationManager.AppSettings["Braintree.PublicKey"]; string privateKey = ConfigurationManager.AppSettings["Braintree.PrivateKey"]; string environment = ConfigurationManager.AppSettings["Braintree.Environment"]; Braintree.BraintreeGateway braintreeGateway = new Braintree.BraintreeGateway (environment, merchantId, publicKey, privateKey); Braintree.CustomerSearchRequest search = new Braintree.CustomerSearchRequest(); search.Email.Equals(User.Identity.Name); var customers = braintreeGateway.Customer.Search(search); if (customers.Ids != null && customers.Ids.Count() > 0) { var customer = customers.FirstItem; ViewBag.Addresses = customer.Addresses; ViewBag.CreditCards = customer.CreditCards; Customer c = db.Customers.FirstOrDefault(x => x.EmailAddress == customer.Email); if (c != null) { return(View(c)); } } return(View(db.Customers.FirstOrDefault(x => x.AspNetUser.UserName == User.Identity.Name))); }
public async Task <ActionResult> CreateAddress(string fname, string lname, string region, string locality, string postalCode, string street1, string street2) { if (ModelState.IsValid) { string merchantId = ConfigurationManager.AppSettings["Braintree.MerchantID"]; string publicKey = ConfigurationManager.AppSettings["Braintree.PublicKey"]; string privateKey = ConfigurationManager.AppSettings["Braintree.PrivateKey"]; string environment = ConfigurationManager.AppSettings["Braintree.Environment"]; Braintree.BraintreeGateway braintreeGateway = new Braintree.BraintreeGateway (environment, merchantId, publicKey, privateKey); Braintree.CustomerSearchRequest search = new Braintree.CustomerSearchRequest(); search.Email.Equals(User.Identity.Name); var customers = await braintreeGateway.Customer.SearchAsync(search); if (customers != null) { var customer = customers.FirstItem; await braintreeGateway.Address.CreateAsync(customer.Id, new Braintree.AddressRequest { FirstName = fname, LastName = lname, StreetAddress = street1 + " " + street2, Locality = locality, Region = region, }); } TempData["Message"] = "Address created"; return(RedirectToAction("Index")); } return(View()); }
public ActionResult Index() { string merchantID = System.Configuration.ConfigurationManager.AppSettings["Braintree.MerchantID"]; string environment = System.Configuration.ConfigurationManager.AppSettings["Braintree.Environment"]; string publickey = System.Configuration.ConfigurationManager.AppSettings["Braintree.PublicKey"]; string privatekey = System.Configuration.ConfigurationManager.AppSettings["Braintree.PriavteKey"]; Braintree.BraintreeGateway gateway = new Braintree.BraintreeGateway(environment, merchantID, publickey, privatekey); var customerGateway = gateway.Customer; Braintree.CustomerSearchRequest query = new Braintree.CustomerSearchRequest(); query.Email.Is(User.Identity.Name); var matchedCustomers = customerGateway.Search(query); Braintree.Customer customer = null; if (matchedCustomers.Ids.Count == 0) { Braintree.CustomerRequest newCustomer = new Braintree.CustomerRequest(); newCustomer.Email = User.Identity.Name; var result = customerGateway.Create(newCustomer); customer = result.Target; } else { customer = matchedCustomers.FirstItem; } return(View(customer)); }
public ShippingController(JoshTestContext context, Braintree.BraintreeGateway braintreeGateway, SignInManager <ApplicationUser> signInManager, SmartyStreets.USStreetApi.Client usStreetClient) { _context = context; _braintreeGateway = braintreeGateway; _signInManager = signInManager; _usStreetClient = usStreetClient; }
public async Task <ActionResult> Register(RegisterModel model) { if (ModelState.IsValid) { using (IdentityModels entities = new IdentityModels()) { var userStore = new UserStore <User>(entities); var manager = new UserManager <User>(userStore); manager.UserTokenProvider = new EmailTokenProvider <User>(); var user = new User() { UserName = model.EmailAddress, Email = model.EmailAddress }; IdentityResult result = manager.Create(user, model.Password); if (result.Succeeded) { User u = manager.FindByName(model.EmailAddress); // Creates customer record in Braintree string merchantId = ConfigurationManager.AppSettings["Braintree.MerchantID"]; string publicKey = ConfigurationManager.AppSettings["Braintree.PublicKey"]; string privateKey = ConfigurationManager.AppSettings["Braintree.PrivateKey"]; string environment = ConfigurationManager.AppSettings["Braintree.Environment"]; Braintree.BraintreeGateway braintree = new Braintree.BraintreeGateway(environment, merchantId, publicKey, privateKey); Braintree.CustomerRequest customer = new Braintree.CustomerRequest(); customer.CustomerId = u.Id; customer.Email = u.Email; var r = await braintree.Customer.CreateAsync(customer); string confirmationToken = manager.GenerateEmailConfirmationToken(u.Id); string sendGridApiKey = ConfigurationManager.AppSettings["SendGrid.ApiKey"]; SendGrid.SendGridClient client = new SendGrid.SendGridClient(sendGridApiKey); SendGrid.Helpers.Mail.SendGridMessage message = new SendGrid.Helpers.Mail.SendGridMessage(); message.Subject = string.Format("Please confirm your account"); message.From = new SendGrid.Helpers.Mail.EmailAddress("*****@*****.**", "Will Mabrey"); message.AddTo(new SendGrid.Helpers.Mail.EmailAddress(model.EmailAddress)); SendGrid.Helpers.Mail.Content contents = new SendGrid.Helpers.Mail.Content("text/html", string.Format("<a href=\"{0}\">Confirm Account</a>", Request.Url.GetLeftPart(UriPartial.Authority) + "/MyAccount/Confirm/" + confirmationToken + "?email=" + model.EmailAddress)); message.AddContent(contents.Type, contents.Value); SendGrid.Response response = await client.SendEmailAsync(message); return(RedirectToAction("ConfirmSent")); } else { ModelState.AddModelError("EmailAddress", "Unable to register with this email address."); } } } return(View(model)); }
public ActionResult Index(CheckoutModel model) { string publicKey = ConfigurationManager.AppSettings["Braintree.PublicKey"]; string privateKey = ConfigurationManager.AppSettings["Braintree.PrivateKey"]; string environment = ConfigurationManager.AppSettings["Braintree.Environment"]; string merchantId = ConfigurationManager.AppSettings["Braintree.MerchantId"]; Braintree.BraintreeGateway braintree = new Braintree.BraintreeGateway(environment, merchantId, publicKey, privateKey); //int userId = -1; if (ModelState.IsValid) { using (CustomersEntities entities = new CustomersEntities()) { var currentCustomer = entities.Customers.Single(x => x.EmailAddress == User.Identity.Name); var currentPackage = currentCustomer.CustomerPackages.First(x => x.PurchaseDate == null); //TODO: Validate the credit card - if it errors out, add a model error and display it to the user //TODO: Persist this information to the database //var currentPackage = entities.Customers.Single(x => x.EmailAddress == User.Identity.Name).CustomerPackages.First(x => x.PurchaseDate == null); //model.Package = new PackageModel(); //string publicKey = ConfigurationManager.AppSettings["Braintree.PublicKey"]; //string privateKey = ConfigurationManager.AppSettings["Braintree.PrivateKey"]; //string environment = ConfigurationManager.AppSettings["Braintree.Environment"]; //string merchantId = ConfigurationManager.AppSettings["Braintree.MerchantId"]; Braintree.CustomerRequest request = new Braintree.CustomerRequest(); request.Email = model.EmailAddress; request.FirstName = model.FirstName; request.LastName = model.LastName; request.Phone = model.PhoneNumber; request.CreditCard = new Braintree.CreditCardRequest(); request.CreditCard.Number = model.CreditCardNumber; request.CreditCard.CardholderName = model.CreditCardName; request.CreditCard.ExpirationMonth = (model.CreditCardExpirationMonth).ToString().PadLeft(2, '0'); request.CreditCard.ExpirationYear = model.CreditCardExpirationYear.ToString(); var customerResult = braintree.Customer.Create(request); Braintree.TransactionRequest sale = new Braintree.TransactionRequest(); sale.Amount = currentPackage.Package.Price; sale.CustomerId = customerResult.Target.Id; sale.PaymentMethodToken = customerResult.Target.DefaultPaymentMethod.Token; braintree.Transaction.Sale(sale); currentPackage.PurchaseDate = DateTime.UtcNow; entities.SaveChanges(); return(RedirectToAction("Receipt", "Membership", null)); } } return(View(model)); }
public ShippingController(SignInManager <ApplicationUser> signInManager, SendGrid.SendGridClient sendGridClient, Braintree.BraintreeGateway braintreeGateway, AmonTestContext context) { this._signInManager = signInManager; this._sendGridClient = sendGridClient; _braintreeGateway = braintreeGateway; _context = context; }
public async Task <ActionResult> Registration(RegistrationModel model) { if (ModelState.IsValid) { if (WebSecurity.UserExists(model.EmailAddress)) { ModelState.AddModelError("EmailAddress", "Username already in user"); } else { string confirmationToken = WebSecurity.CreateUserAndAccount(model.EmailAddress, model.Password, null, true); string publicKey = ConfigurationManager.AppSettings["Braintree.PublicKey"]; string privateKey = ConfigurationManager.AppSettings["Braintree.PrivateKey"]; string environment = ConfigurationManager.AppSettings["Braintree.Environment"]; string merchantId = ConfigurationManager.AppSettings["Braintree.MerchantID"]; Braintree.BraintreeGateway braintree = new Braintree.BraintreeGateway(environment, merchantId, publicKey, privateKey); Braintree.CustomerRequest request = new Braintree.CustomerRequest(); request.Email = model.EmailAddress; using (MemberEntities1 entities = new MemberEntities1()) { request.Id = entities.CustomerLists.Single(x => x.EmailAddress == model.EmailAddress).ID.ToString(); } braintree.Customer.Create(request); string confirmationUrl = Request.Url.GetLeftPart(UriPartial.Authority) + "/Membership/Confirm?confirmationToken=" + confirmationToken; string sendGridApiKey = ConfigurationManager.AppSettings["SendGrid.ApiKey"]; SendGrid.SendGridAPIClient client = new SendGrid.SendGridAPIClient(sendGridApiKey); Email from = new Email("*****@*****.**"); string subject = "Confirm your new account"; Email to = new Email(model.EmailAddress); Content content = new Content("text/html", string.Format("<a href=\"{0}\">Confirm</a>", confirmationUrl)); Mail mail = new Mail(from, subject, to, content); mail.TemplateId = "00aaf54f-cf22-4cfe-98b5-b20d3cd72354"; mail.Personalization[0].AddSubstitution("-link-", confirmationUrl); var response = await client.client.mail.send.post(requestBody : mail.Get()); string message = await response.Body.ReadAsStringAsync(); if (!string.IsNullOrEmpty(message)) { throw new Exception(message); } return(RedirectToAction("ConfirmationSent")); } } return(View(model)); }
public async Task <IActionResult> ChargeBraintree(ChargeBraintreeModel model) { if (!ModelState.IsValid) { return(View(model)); } var btGateway = new Braintree.BraintreeGateway { Environment = _globalSettings.Braintree.Production ? Braintree.Environment.PRODUCTION : Braintree.Environment.SANDBOX, MerchantId = _globalSettings.Braintree.MerchantId, PublicKey = _globalSettings.Braintree.PublicKey, PrivateKey = _globalSettings.Braintree.PrivateKey }; var btObjIdField = model.Id[0] == 'o' ? "organization_id" : "user_id"; var btObjId = new Guid(model.Id.Substring(1, 32)); var transactionResult = await btGateway.Transaction.SaleAsync( new Braintree.TransactionRequest { Amount = model.Amount.Value, CustomerId = model.Id, Options = new Braintree.TransactionOptionsRequest { SubmitForSettlement = true, PayPal = new Braintree.TransactionOptionsPayPalRequest { CustomField = $"{btObjIdField}:{btObjId}" } }, CustomFields = new Dictionary <string, string> { [btObjIdField] = btObjId.ToString() } }); if (!transactionResult.IsSuccess()) { ModelState.AddModelError(string.Empty, "Charge failed. " + "Refer to Braintree admin portal for more information."); } else { model.TransactionId = transactionResult.Target.Id; model.PayPalTransactionId = transactionResult.Target?.PayPalDetails?.CaptureId; } return(View(model)); }
public StripePaymentService( ITransactionRepository transactionRepository, GlobalSettings globalSettings) { _btGateway = new Braintree.BraintreeGateway { Environment = globalSettings.Braintree.Production ? Braintree.Environment.PRODUCTION : Braintree.Environment.SANDBOX, MerchantId = globalSettings.Braintree.MerchantId, PublicKey = globalSettings.Braintree.PublicKey, PrivateKey = globalSettings.Braintree.PrivateKey }; _transactionRepository = transactionRepository; }
public ActionResult DeleteAddress(string id) { string merchantId = System.Configuration.ConfigurationManager.AppSettings["Braintree.MerchantID"]; string environment = ConfigurationManager.AppSettings["Braintree.Environment"]; string publicKey = ConfigurationManager.AppSettings["Braintree.PublicKey"]; string privateKey = ConfigurationManager.AppSettings["Braintree.PrivateKey"]; Braintree.BraintreeGateway braintreeGateway = new Braintree.BraintreeGateway(environment, merchantId, publicKey, privateKey); Braintree.CustomerSearchRequest search = new Braintree.CustomerSearchRequest(); search.Email.Equals(User.Identity.Name); var customers = braintreeGateway.Customer.Search(search); if (customers.Ids != null) { var customer = customers.FirstItem; braintreeGateway.Address.Delete(customer.Id, id); TempData["Message"] = "Address Deleted"; } return(RedirectToAction("Index")); }
public ActionResult Index(string firstName, string lastName, string id) { if (User.Identity.IsAuthenticated == false) { return(RedirectToAction("Index", "Home")); } string merchantId = System.Configuration.ConfigurationManager.AppSettings["Braintree.MerchantId"]; string environment = System.Configuration.ConfigurationManager.AppSettings["Braintree.Environment"]; string publicKey = System.Configuration.ConfigurationManager.AppSettings["Braintree.PublicKey"]; string privateKey = System.Configuration.ConfigurationManager.AppSettings["Braintree.PrivateKey"]; Braintree.BraintreeGateway gateway = new Braintree.BraintreeGateway(environment, merchantId, publicKey, privateKey); var customerGateway = gateway.Customer; Braintree.CustomerRequest request = new Braintree.CustomerRequest(); request.FirstName = firstName; request.LastName = lastName; var result = customerGateway.Update(id, request); ViewBag.Message = "Updated Successfully"; return(View(result.Target)); }
// GET: Checkout public ActionResult Index() { Models.CheckoutDetails details = new Models.CheckoutDetails(); Guid cartID = Guid.Parse(Request.Cookies["cartID"].Value); details.CurrentCart = db.Carts.Find(cartID); details.Addresses = new Braintree.Address[0]; if (User.Identity.IsAuthenticated) { string merchantId = System.Configuration.ConfigurationManager.AppSettings["Braintree.MerchantId"]; string environment = System.Configuration.ConfigurationManager.AppSettings["Braintree.Environment"]; string publicKey = System.Configuration.ConfigurationManager.AppSettings["Braintree.PublicKey"]; string privateKey = System.Configuration.ConfigurationManager.AppSettings["Braintree.PrivateKey"]; Braintree.BraintreeGateway gateway = new Braintree.BraintreeGateway(environment, merchantId, publicKey, privateKey); var customerGateway = gateway.Customer; Braintree.CustomerSearchRequest query = new Braintree.CustomerSearchRequest(); query.Email.Is(User.Identity.Name); var matchedCustomers = customerGateway.Search(query); Braintree.Customer customer = null; if (matchedCustomers.Ids.Count == 0) { Braintree.CustomerRequest newCustomer = new Braintree.CustomerRequest(); newCustomer.Email = User.Identity.Name; var result = customerGateway.Create(newCustomer); customer = result.Target; } else { customer = matchedCustomers.FirstItem; } details.Addresses = customer.Addresses; } return(View(details)); }
public async Task <ActionResult> Index(CheckoutModel model2) { using (MemberEntities1 entities = new MemberEntities1()) { //int orderId = int.Parse(Request.Cookies["OrderID"].Value); var cart = entities.Carts.Single(x => x.Id == model2.id); Order o = new Order(); cart.Orders.Add(o); if (ModelState.IsValid) { bool addressValidationSuccessful = true; bool validateAddress = false; string smartyStreetsAuthId = ConfigurationManager.AppSettings["SmartyStreets.AuthId"]; string smartyStreetsAuthToken = ConfigurationManager.AppSettings["SmartyStreets.AuthToken"]; Rentler.SmartyStreets.SmartyStreetsClient client = new Rentler.SmartyStreets.SmartyStreetsClient(smartyStreetsAuthId, smartyStreetsAuthToken); var addresses = await client.GetStreetAddressAsync(model2.BillingStreet1, null, model2.BillingStreet2, model2.BillingCity, model2.BillingState, model2.BillingPostalCode); if (addresses.Count() == 0) { ModelState.AddModelError("BillingStreet1", "Could not find exact or similiar address"); addressValidationSuccessful = false; } else { if (!string.IsNullOrEmpty(model2.BillingStreet1) && addresses.First().delivery_line_1 != model2.BillingStreet1) { ModelState.AddModelError("BillingStreet1", string.Format("Suggested Address: {0}", addresses.First().delivery_line_1)); addressValidationSuccessful = false; } if (!string.IsNullOrEmpty(model2.BillingStreet2) && addresses.First().delivery_line_2 != model2.BillingStreet2) { ModelState.AddModelError("BillingStreet2", string.Format("Suggested Address: {0}", addresses.First().delivery_line_2)); addressValidationSuccessful = false; } if (!string.IsNullOrEmpty(model2.BillingCity) && addresses.First().components.city_name != model2.BillingCity) { ModelState.AddModelError("BillingCity", string.Format("Suggested Address: {0}", addresses.First().components.city_name)); addressValidationSuccessful = false; } if (!string.IsNullOrEmpty(model2.BillingPostalCode) && addresses.First().components.zipcode != model2.BillingPostalCode) { ModelState.AddModelError("BillingPostalCode", string.Format("Suggested Address: {0}", addresses.First().components.zipcode)); addressValidationSuccessful = false; } if (!string.IsNullOrEmpty(model2.BillingState) && addresses.First().components.state_abbreviation != model2.BillingState) { ModelState.AddModelError("BillingState", string.Format("Suggested Address: {0}", addresses.First().components.state_abbreviation)); addressValidationSuccessful = false; } } if (addressValidationSuccessful || !validateAddress) { //TODO: Validate the credit card - if it errors out, add a model error and display it to the user string publicKey = ConfigurationManager.AppSettings["Braintree.PublicKey"]; string privateKey = ConfigurationManager.AppSettings["Braintree.PrivateKey"]; string environment = ConfigurationManager.AppSettings["Braintree.Environment"]; string merchantId = ConfigurationManager.AppSettings["Braintree.MerchantId"]; Braintree.BraintreeGateway braintree = new Braintree.BraintreeGateway(environment, merchantId, publicKey, privateKey); int userId = -1; if (string.IsNullOrEmpty(User.Identity.Name)) { userId = 34; var customer = braintree.Customer.Find(userId.ToString()); Braintree.CustomerRequest request = new Braintree.CustomerRequest(); request.CreditCard = new Braintree.CreditCardRequest(); request.CreditCard.Number = model2.CreditCardNumber; request.CreditCard.CardholderName = model2.CreditCardName; request.CreditCard.ExpirationMonth = (model2.CreditCardExpirationMonth).ToString().PadLeft(2, '0'); request.CreditCard.ExpirationYear = model2.CreditCardExpirationYear.ToString(); var customerResult = braintree.Customer.Update(userId.ToString(), request); Braintree.TransactionRequest sale = new Braintree.TransactionRequest(); sale.Amount = decimal.Parse(cart.saleTotal.Replace("USD", string.Empty)); sale.CustomerId = customerResult.Target.Id; sale.PaymentMethodToken = customerResult.Target.DefaultPaymentMethod.Token; braintree.Transaction.Sale(sale); o.FirstName = model2.FirstName; o.LastName = model2.LastName; o.EmailAddress = model2.EmailAddress; o.PhoneNumber = model2.PhoneNumber; o.BillingCity = model2.BillingCity; o.BillingPostalCode = model2.BillingPostalCode; o.BillingReceipient = model2.BillingReceipient; o.BillingStreet1 = model2.BillingStreet1; o.BillingStreet2 = model2.BillingStreet2; o.BillingState = model2.BillingState; o.DateCreated = DateTime.UtcNow; o.DateLastModified = DateTime.UtcNow; entities.SaveChanges(); return(RedirectToAction("Index", "Receipt", new { id = o.OrderId })); } else { using (MemberEntities1 e = new MemberEntities1()) { userId = e.CustomerLists.Single(x => x.EmailAddress == User.Identity.Name).ID; } var customer = braintree.Customer.Find(userId.ToString()); Braintree.CustomerRequest request = new Braintree.CustomerRequest(); request.CreditCard = new Braintree.CreditCardRequest(); request.CreditCard.Number = model2.CreditCardNumber; request.CreditCard.CardholderName = model2.CreditCardName; request.CreditCard.ExpirationMonth = (model2.CreditCardExpirationMonth).ToString().PadLeft(2, '0'); request.CreditCard.ExpirationYear = model2.CreditCardExpirationYear.ToString(); var customerResult = braintree.Customer.Update(userId.ToString(), request); Braintree.TransactionRequest sale = new Braintree.TransactionRequest(); sale.Amount = decimal.Parse(cart.saleTotal.Replace("USD", string.Empty)); sale.CustomerId = customerResult.Target.Id; sale.PaymentMethodToken = customerResult.Target.DefaultPaymentMethod.Token; braintree.Transaction.Sale(sale); o.FirstName = model2.FirstName; o.LastName = model2.LastName; o.EmailAddress = model2.EmailAddress; o.PhoneNumber = model2.PhoneNumber; o.BillingCity = model2.BillingCity; o.BillingPostalCode = model2.BillingPostalCode; o.BillingReceipient = model2.BillingReceipient; o.BillingStreet1 = model2.BillingStreet1; o.BillingStreet2 = model2.BillingStreet2; o.BillingState = model2.BillingState; o.DateCreated = DateTime.UtcNow; o.DateLastModified = DateTime.UtcNow; entities.SaveChanges(); return(RedirectToAction("Index", "Receipt", new { id = o.OrderId })); } } } } return(View(model2)); }
public async Task <ActionResult> Register(string username, string fname, string lname, DateTime?dateOfBirth, string phone, string password) { IdentityUser newUser = new IdentityUser(username) { // set the Email to be the username Email = username, PhoneNumber = phone }; IdentityResult result = await UserManager.CreateAsync(newUser, password); if (!result.Succeeded) { ViewBag.Errors = result.Errors; return(View()); } // Check if new registrant has ordered before. If so, they should already have a Customer record // We don't want to create a new one - just modify their record to add the AspNetUserID string custID = ""; Customer existingCustomer = db.Customers.FirstOrDefault(x => x.EmailAddress == username); if (existingCustomer == null) { var newCustomer = new Customer { AspNetUserID = newUser.Id, FirstName = fname, LastName = lname, DateOfBirth = dateOfBirth, PhoneNumber = phone, EmailAddress = username, DateCreated = DateTime.UtcNow, DateLastModified = DateTime.UtcNow }; custID = newCustomer.Id.ToString(); db.Customers.Add(newCustomer); await db.SaveChangesAsync(); } else { existingCustomer.PhoneNumber = phone; existingCustomer.DateOfBirth = dateOfBirth ?? null; existingCustomer.AspNetUserID = newUser.Id; custID = existingCustomer.Id.ToString(); } string merchantId = ConfigurationManager.AppSettings["Braintree.MerchantID"]; string publicKey = ConfigurationManager.AppSettings["Braintree.PublicKey"]; string privateKey = ConfigurationManager.AppSettings["Braintree.PrivateKey"]; string environment = ConfigurationManager.AppSettings["Braintree.Environment"]; Braintree.BraintreeGateway braintreeGateway = new Braintree.BraintreeGateway (environment, merchantId, publicKey, privateKey); Braintree.CustomerSearchRequest search = new Braintree.CustomerSearchRequest(); search.Email.Equals(username); var existingCustomers = await braintreeGateway.Customer.SearchAsync(search); if (existingCustomers != null || !existingCustomers.Ids.Any()) { Braintree.CustomerRequest c = new Braintree.CustomerRequest { FirstName = fname, LastName = lname, CustomerId = custID, Email = username, Phone = phone }; var creationResult = await braintreeGateway.Customer.CreateAsync(c); } string token = await UserManager.GenerateEmailConfirmationTokenAsync(newUser.Id); string body = string.Format( "<a href=\"{0}/account/confirmaccount?email={1}&token={2}\">Confirm Your Account</a>", Request.Url.GetLeftPart(UriPartial.Authority), username, token); await UserManager.SendEmailAsync(newUser.Id, "Confirm Your WeirdEnsemble Account", body); TempData["ConfirmEmail"] = "Account created. Please check your email inbox to confirm your account!"; return(RedirectToAction("SignIn")); }
public CheckoutController(DavidTestContext context, Braintree.BraintreeGateway braintreeGateway) { _context = context; _braintreeGateway = braintreeGateway; }
public async Task <ActionResult> Index(CheckoutViewModel model) { // if there are errors on the form, refresh the page with the previous model // along with errors if (ModelState.IsValid) { // Try to find an existing customer Customer currentCustomer = db.Customers.FirstOrDefault(x => x.AspNetUser.UserName == User.Identity.Name); // if this is an anonymous customer, create a new Customer record for them if (currentCustomer == null) { currentCustomer = new Customer { FirstName = model.FirstName, LastName = model.LastName, EmailAddress = model.EmailAddress, PhoneNumber = model.PhoneNumber, DateCreated = DateTime.UtcNow, DateLastModified = DateTime.UtcNow }; db.Customers.Add(currentCustomer); await db.SaveChangesAsync(); if (Request.Cookies.AllKeys.Contains("CartName")) { string cartName = Request.Cookies["CartName"].Value; model.CurrentCart = db.Carts.Single(x => x.Name == cartName); } } else { model.CurrentCart = currentCustomer.Carts.First(); } string merchantId = ConfigurationManager.AppSettings["Braintree.MerchantID"]; string publicKey = ConfigurationManager.AppSettings["Braintree.PublicKey"]; string privateKey = ConfigurationManager.AppSettings["Braintree.PrivateKey"]; string environment = ConfigurationManager.AppSettings["Braintree.Environment"]; Braintree.BraintreeGateway braintreeGateway = new Braintree.BraintreeGateway (environment, merchantId, publicKey, privateKey); Braintree.TransactionRequest request = new Braintree.TransactionRequest(); request.Amount = model.CurrentCart.CartItems.Sum(x => x.Product.ListPrice * x.Quantity) ?? .01m; request.CreditCard = new Braintree.TransactionCreditCardRequest { CardholderName = model.CreditCardHolder, CVV = model.CreditCardVerificationValue, Number = model.CreditCardNumber, ExpirationMonth = model.CreditCardExpirationMonth.ToString().PadLeft(2, '0'), ExpirationYear = model.CreditCardExpirationYear.ToString() }; Braintree.Result <Braintree.Transaction> result = await braintreeGateway.Transaction.SaleAsync(request); if ((result.Errors == null || result.Errors.Count == 0)) { string transactionId = result.Target.Id; var order = new Order { DatePlaced = DateTime.UtcNow, DateLastModified = DateTime.UtcNow, CustomerID = currentCustomer.Id, OrderItems = model.CurrentCart.CartItems.Select(x => new OrderItem { DateLastModified = DateTime.UtcNow, Quantity = x.Quantity, ProductId = x.ProductId, PurchasePrice = x.Product.ListPrice ?? 0 }).ToArray(), ShippingAddressLine1 = model.ShippingAddressLine1, TransactionID = transactionId }; // Remove the cart form the database and convert it to an order db.CartItems.RemoveRange(model.CurrentCart.CartItems); db.Carts.Remove(model.CurrentCart); db.Orders.Add(order); await db.SaveChangesAsync(); //Remove the basket cookie! Response.SetCookie(new HttpCookie("CartName") { Expires = DateTime.UtcNow }); // Send the user an e-mail with their order receipt string body = "<h2>Receipt For WeirdEnsemble.com Order #" + order.TransactionID + "</h2><br/><br/>"; body += "<table><thead><tr><th>Item</th><th>List Price</th><th>Quantity</th><th>Total</th></tr></thead>"; body += "<tbody>"; foreach (var item in order.OrderItems) { body += "<tr>"; body += "<td>" + item.Product.Name + "</td>"; body += "<td>" + (item.Product.ListPrice ?? 0).ToString("C") + "</td>"; body += "<td>" + item.Quantity + "</td>"; body += "<td>" + (item.Quantity * (item.Product.ListPrice ?? 0)).ToString("C") + "</td>"; body += "</tr>"; } body += "</tbody><tfoot><tr><td colspan=\"2\">"; body += "<td><strong>Total:</strong></td>"; body += "<td><strong>" + (order.OrderItems.Sum(x => x.Quantity * x.Product.ListPrice) ?? 0).ToString("C") + "</strong></td>"; body += "</tr></tfoot></table>"; SendGridEmailService mail = new SendGridEmailService(); await mail.SendAsync(new Microsoft.AspNet.Identity.IdentityMessage { Destination = order.Customer.EmailAddress, Subject = "Your WeirdEnsemble Order #" + order.TransactionID + " Receipt", Body = body }); return(RedirectToAction("Index", "Receipt", new { id = order.TransactionID })); } else { if (result.Target == null) { ModelState.AddModelError("ResultMessage", result.Message); } else { ModelState.AddModelError("CreditCardNumber", "Unable to authorize this card number"); } } } if (Request.Cookies.AllKeys.Contains("CartName")) { string cartName = Request.Cookies["CartName"].Value; model.CurrentCart = db.Carts.Single(x => x.Name == cartName); } return(View(model)); }
public ActionResult Index(Models.CheckoutDetails model) { Guid cartID = Guid.Parse(Request.Cookies["cartID"].Value); model.CurrentCart = db.Carts.Find(cartID); if (ModelState.IsValid) { string trackingNumber = Guid.NewGuid().ToString().Substring(0, 8); decimal Tax = (model.CurrentCart.Lawyer.Price + model.CurrentCart.HelpType.StandardPrice ?? 0) * .1025m; decimal ServiceCharge = (model.CurrentCart.Lawyer.Price + model.CurrentCart.HelpType.StandardPrice ?? 0) * .10m; decimal Total = (model.CurrentCart.Lawyer.Price + model.CurrentCart.HelpType.StandardPrice ?? 0) * 1.2025m; #region pay for order string merchantId = System.Configuration.ConfigurationManager.AppSettings["Braintree.MerchantId"]; string environment = System.Configuration.ConfigurationManager.AppSettings["Braintree.Environment"]; string publicKey = System.Configuration.ConfigurationManager.AppSettings["Braintree.PublicKey"]; string privateKey = System.Configuration.ConfigurationManager.AppSettings["Braintree.PrivateKey"]; Braintree.BraintreeGateway gateway = new Braintree.BraintreeGateway(environment, merchantId, publicKey, privateKey); Braintree.TransactionRequest transaction = new Braintree.TransactionRequest(); // transaction.Amount = 1m; transaction.Amount = Total; transaction.TaxAmount = Tax; transaction.OrderId = trackingNumber; //https://developers.braintreepayments.com/reference/general/testing/ruby transaction.CreditCard = new Braintree.TransactionCreditCardRequest { CardholderName = "Test User", CVV = "123", Number = "4111111111111111", ExpirationYear = DateTime.Now.AddMonths(1).Year.ToString(), ExpirationMonth = DateTime.Now.AddMonths(1).ToString("MM") }; var result = gateway.Transaction.Sale(transaction); #endregion #region save order Order o = new Order { DateCreated = DateTime.UtcNow, DateLastModified = DateTime.UtcNow, TrackingNumber = trackingNumber, Tax = Tax, ServiceCharge = ServiceCharge, Total = Total, Email = model.ContactEmail, CustomerName = model.ContactName, ShippingAddress1 = model.ShippingAddress, ShippingCity = model.ShippingCity, ShippingPostalCode = model.ShippingPostalCode, ShippingState = model.ShippingState, Day = model.CurrentCart.Day, HelpTypeID = model.CurrentCart.HelpTypeID, LawyerID = model.CurrentCart.LawyerID }; db.Orders.Add(o); db.SaveChanges(); #endregion #region send email LawDoggsEmailService emailService = new LawDoggsEmailService(); emailService.SendAsync(new Microsoft.AspNet.Identity.IdentityMessage { Subject = "Your Order Information", Destination = model.ContactEmail, Body = "Thank you for your support, here is your order number " + " " + trackingNumber, }); #endregion return(RedirectToAction("Index", "Orders", new { id = trackingNumber })); } return(View(model)); }
public DeliveryController(BobTestContext context, Braintree.BraintreeGateway braintreeGateway, SmartyStreets.USStreetApi.Client usStreetClient) { _context = context; _braintreeGateway = braintreeGateway; _usStreetClient = usStreetClient; }
public ActionResult Payment(CheckOut model, int?id) { Basket b = new Basket(); using (EscapeRoomDBEntities entities = new EscapeRoomDBEntities()) { //create basket b = entities.Baskets.Single(x => x.ID == id); //if logged in, update record and add basket if (User.Identity.IsAuthenticated) { User user = entities.Users.Single(X => X.Email == User.Identity.Name); user.FirstName = model.FirstName; user.LastName = model.LastName; user.Email = model.Email; user.Phone = model.Phone; user.DateCreated = DateTime.UtcNow; b.User = user; entities.SaveChanges(); } //if no login, create user and add basket else { User user = new Models.User(); user.FirstName = model.FirstName; user.LastName = model.LastName; user.Email = model.Email; user.Phone = model.Phone; user.DateCreated = DateTime.UtcNow; b.User = user; entities.SaveChanges(); } } using (EscapeRoomDBEntities entities = new EscapeRoomDBEntities()) { b = entities.Baskets.Single(x => x.ID == id); model.numPlayers = b.Players.Count; model.session = new Models.Session { Id = b.Session.Id, Price = b.Session.Price, Title = b.Session.Title, Start = b.Session.Start }; model.Players = b.Players.ToArray(); } //configure braintree connection and take payment string clientID = ConfigurationManager.AppSettings["Braintree.ClientID"]; string privateKey = ConfigurationManager.AppSettings["Braintree.PrivateKey"]; string publicKey = ConfigurationManager.AppSettings["Braintree.PublicKey"]; Braintree.IBraintreeGateway gateway = new Braintree.BraintreeGateway(Braintree.Environment.SANDBOX, clientID, publicKey, privateKey); Braintree.TransactionRequest request = new Braintree.TransactionRequest { Amount = model.session.Price * model.numPlayers, PaymentMethodNonce = "fake-valid-nonce", Customer = new Braintree.CustomerRequest { FirstName = model.FirstName, LastName = model.LastName, Email = model.Email }, BillingAddress = new Braintree.AddressRequest { FirstName = model.FirstName, LastName = model.LastName, StreetAddress = model.Address, ExtendedAddress = model.Unit, Locality = model.City, Region = model.State, PostalCode = model.Zip.ToString(), CountryCodeAlpha2 = "US" }, Options = new Braintree.TransactionOptionsRequest { SubmitForSettlement = true, StoreInVault = true }, }; Braintree.Result <Braintree.Transaction> result = gateway.Transaction.Sale(request); if (result.IsSuccess()) { using (EscapeRoomDBEntities entities = new EscapeRoomDBEntities()) { Basket completedBasket = entities.Baskets.Single(x => x.ID == id); completedBasket.PurchaseDate = DateTime.UtcNow; entities.SaveChanges(); } return(RedirectToAction("Success", "Checkout", new { id = b.ID })); } else { string errorMessages = ""; foreach (Braintree.ValidationError error in result.Errors.DeepAll()) { errorMessages += "Error: " + (int)error.Code + " - " + error.Message + "\n"; } TempData["Flash"] = errorMessages; return(RedirectToAction("Payment", "Checkout", new { id = b.ID })); } }
private SmartyStreets.USStreetApi.Client _usStreetClient; // => injecting SmartyStreets public ShippingsController(AlejandroTestContext context, Braintree.BraintreeGateway braintreeGateway, SmartyStreets.USStreetApi.Client usStreetClient) { _context = context; _braintreeGateway = braintreeGateway; _usStreetClient = usStreetClient; }
public CheckoutController(Braintree.BraintreeGateway braintreeGateway, SmartyStreets.USStreetApi.Client usStreetClient) { _usStreetClient = usStreetClient; _braintreeGateway = braintreeGateway; }
//using Microsoft.AspNetCore.Identity public AccountController(SignInManager <BoatChartesUser> signInManager, EmailService emailService, Braintree.BraintreeGateway braintreeGateway) { this._signInManager = signInManager; this._emailService = emailService; this._braintreeGateway = braintreeGateway; }
public async Task <ActionResult> Index(CheckoutModel model) { if (ModelState.IsValid) { using (AppStoreEntities entities = new AppStoreEntities()) { Order o = null; if (User.Identity.IsAuthenticated) { AspNetUser currentUser = entities.AspNetUsers.Single(x => x.UserName == User.Identity.Name); o = currentUser.Orders.FirstOrDefault(x => x.TimeCompleted == null); if (o == null) { o = new Order(); o.OrderNumber = Guid.NewGuid(); currentUser.Orders.Add(o); entities.SaveChanges(); } } else { if (Request.Cookies.AllKeys.Contains("orderNumber")) { Guid orderNumber = Guid.Parse(Request.Cookies["orderNumber"].Value); o = entities.Orders.FirstOrDefault(x => x.TimeCompleted == null && x.OrderNumber == orderNumber); } if (o == null) { o = new Order(); o.OrderNumber = Guid.NewGuid(); entities.Orders.Add(o); Response.Cookies.Add(new HttpCookie("orderNumber", o.OrderNumber.ToString())); entities.SaveChanges(); } } if (o.OrdersProducts.Sum(x => x.Quantity) == 0) { return(RedirectToAction("Index", "Cart")); } o.BuyerEmail = User.Identity.Name; Address newShippingAddress = new Address(); newShippingAddress.Address1 = model.ShippingAddress1; newShippingAddress.Address2 = model.ShippingAddress2; newShippingAddress.City = model.ShippingCity; newShippingAddress.State = model.ShippingState; newShippingAddress.Zip = model.ZipCode; newShippingAddress.Country = model.ShippingCountry; o.Address1 = newShippingAddress; WhereTo = ("\n Your Order will be shipped to the following address: \n" + model.ShippingAddress1 + "\n " + model.ShippingAddress2 + "\n " + model.ShippingCity + "\n " + model.ShippingState + "\n " + model.ZipCode); entities.sp_CompleteOrder(o.ID); string merchantId = ConfigurationManager.AppSettings["Braintree.MerchantID"]; string publicKey = ConfigurationManager.AppSettings["Braintree.PublicKey"]; string privateKey = ConfigurationManager.AppSettings["Braintree.PrivateKey"]; string environment = ConfigurationManager.AppSettings["Braintree.Environment"]; Braintree.BraintreeGateway braintree = new Braintree.BraintreeGateway(environment, merchantId, publicKey, privateKey); Braintree.TransactionRequest newTransaction = new Braintree.TransactionRequest(); newTransaction.Amount = o.OrdersProducts.Sum(x => x.Quantity * x.Product.Price) ?? 0.01m; Braintree.TransactionCreditCardRequest creditCard = new Braintree.TransactionCreditCardRequest(); creditCard.CardholderName = model.CreditCardName; creditCard.CVV = model.CreditCardVerificationValue; creditCard.ExpirationMonth = model.CreditCardExpiration.Value.Month.ToString().PadLeft(2, '0'); creditCard.ExpirationYear = model.CreditCardExpiration.Value.Year.ToString(); creditCard.Number = model.CreditCardNumber; newTransaction.CreditCard = creditCard; // If the user is logged in, associate this transaction with their account if (User.Identity.IsAuthenticated) { Braintree.CustomerSearchRequest search = new Braintree.CustomerSearchRequest(); search.Email.Is(User.Identity.Name); var customers = braintree.Customer.Search(search); newTransaction.CustomerId = customers.FirstItem.Id; } Braintree.Result <Braintree.Transaction> result = await braintree.Transaction.SaleAsync(newTransaction); if (!result.IsSuccess()) { ModelState.AddModelError("CreditCard", "Could not authorize payment"); return(View(model)); } string sendGridApiKey = ConfigurationManager.AppSettings["SendGrid.ApiKey"]; SendGrid.SendGridClient client = new SendGrid.SendGridClient(sendGridApiKey); SendGrid.Helpers.Mail.SendGridMessage message = new SendGrid.Helpers.Mail.SendGridMessage(); //TODO: Go into SendGrid and set up a template and insert the if below //message.SetTemplateId("524c7845-3ed9-4d53-81c8-b467443f8c5c"); message.Subject = string.Format("Receipt for order {0}", o.ID); message.From = new SendGrid.Helpers.Mail.EmailAddress("*****@*****.**", "Will Mabrey"); message.AddTo(new SendGrid.Helpers.Mail.EmailAddress(o.BuyerEmail)); string prodcuctsReceipt = "You've Ordered: "; WhatWasOrdered = prodcuctsReceipt; foreach (var item in o.OrdersProducts) { string addition = string.Format("\n " + "{0} copies of {1}", item.Quantity, item.Product.Name); prodcuctsReceipt += addition; } SendGrid.Helpers.Mail.Content contents = new SendGrid.Helpers.Mail.Content("text/plain", string.Format("Thank you for ordering through Ye Olde App Store \n {0} {1}", prodcuctsReceipt, WhereTo)); message.AddSubstitution("%ordernum%", o.ID.ToString()); message.AddContent(contents.Type, contents.Value); SendGrid.Response response = await client.SendEmailAsync(message); o.TimeCompleted = DateTime.UtcNow; entities.SaveChanges(); } return(RedirectToAction("profile", "Home")); } return(View(model)); }