public void Purchase() { if (Session["payment_amt"] != null) { try { List <SessionLineItemOptions> cartList = new List <SessionLineItemOptions>(); using (fashionUtilityApplication.Logic.ShoppingCartActions usersShoppingCart = new fashionUtilityApplication.Logic.ShoppingCartActions()) { List <CartItem> myOrderList = usersShoppingCart.GetCartItems(); // Add OrderDetail information to the DB for each product purchased. for (int i = 0; i < myOrderList.Count; i++) { long convertValue = 100; var item = new SessionLineItemOptions(); item.Name = myOrderList[i].Product.ProductName; item.Amount = (long)myOrderList[i].Product.UnitPrice * convertValue; item.Currency = "cad"; item.Quantity = myOrderList[i].Quantity; item.Description = myOrderList[i].Product.Description; cartList.Add(item); } } string amt = Session["payment_amt"].ToString(); StripeConfiguration.ApiKey = System.Configuration.ConfigurationManager.AppSettings["stripeSecretKeyTest"]; var options = new SessionCreateOptions { SuccessUrl = "https://fashionutilityapplication.azurewebsites.net/Checkout/CheckoutComplete.aspx", CancelUrl = "https://fashionutilityapplication.azurewebsites.net/Checkout/CheckoutCancel.aspx", PaymentMethodTypes = new List <string> { "card", }, LineItems = cartList }; var service = new SessionService(); Session session = service.Create(options); sessionId = session.Id; Session["token"] = sessionId; Session["userCheckoutCompleted"] = "true"; } catch (Exception e) { Response.Redirect("CheckoutError.aspx?"); } } else { Response.Redirect("CheckoutError.aspx?ErrorCode=AmtMissing"); } }
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { NVPAPICaller payPalCaller = new NVPAPICaller(); string retMsg = ""; string token = ""; string PayerID = ""; NVPCodec decoder = new NVPCodec(); token = Session["token"].ToString(); bool ret = payPalCaller.GetCheckoutDetails(token, ref PayerID, ref decoder, ref retMsg); if (ret) { Session["payerId"] = PayerID; var myOrder = new Order(); var myAddress = new Address(); myOrder.OrderDate = Convert.ToDateTime(decoder["TIMESTAMP"].ToString()); myOrder.Username = User.Identity.Name; myAddress.UserName = decoder["EMAIL"].ToString(); // myAddress = ""; myAddress.AddressLine1 = decoder["SHIPTOSTREET"].ToString(); myAddress.City = decoder["SHIPTOCITY"].ToString(); myAddress.State = decoder["SHIPTOSTATE"].ToString(); myAddress.PostalCode = decoder["SHIPTOZIP"].ToString(); myAddress.Country = decoder["SHIPTOCOUNTRYCODE"].ToString(); myOrder.Email = decoder["EMAIL"].ToString(); myOrder.Total = Convert.ToDecimal(decoder["AMT"].ToString()); // Verify total payment amount as set on CheckoutStart.aspx. try { decimal paymentAmountOnCheckout = Convert.ToDecimal(Session["payment_amt"].ToString()); decimal paymentAmoutFromPayPal = Convert.ToDecimal(decoder["AMT"].ToString()); if (paymentAmountOnCheckout != paymentAmoutFromPayPal) { Response.Redirect("CheckoutError.aspx?" + "Desc=Amount%20total%20mismatch."); } } catch (Exception) { Response.Redirect("CheckoutError.aspx?" + "Desc=Amount%20total%20mismatch."); } // Get DB context. ProductContext _db = new ProductContext(); // Add order to DB. _db.Orders.Add(myOrder); _db.Addresses.Add(myAddress); _db.SaveChanges(); // Get the shopping cart items and process them. using (fashionUtilityApplication.Logic.ShoppingCartActions usersShoppingCart = new fashionUtilityApplication.Logic.ShoppingCartActions()) { List <CartItem> myOrderList = usersShoppingCart.GetCartItems(); // Add OrderDetail information to the DB for each product purchased. for (int i = 0; i < myOrderList.Count; i++) { // Create a new OrderDetail object. var myOrderDetail = new OrderDetail(); myOrderDetail.OrderId = myOrder.OrderId; myOrderDetail.Username = User.Identity.Name; myOrderDetail.ProductId = myOrderList[i].ProductId; myOrderDetail.Quantity = myOrderList[i].Quantity; myOrderDetail.ImagePath = myOrderList[i].ImagePath; myOrderDetail.UnitPrice = myOrderList[i].Product.UnitPrice; // Add OrderDetail to DB. _db.OrderDetails.Add(myOrderDetail); _db.SaveChanges(); } // Set OrderId. Session["currentOrderId"] = myOrder.OrderId; // Display Order information. List <Order> orderList = new List <Order>(); orderList.Add(myOrder); orderInfo.DataSource = orderList; orderInfo.DataBind(); List <Address> addressList = new List <Address>(); addressList.Add(myAddress); ShipInfo.DataSource = addressList; ShipInfo.DataBind(); // Display OrderDetails. OrderItemList.DataSource = myOrderList; OrderItemList.DataBind(); } } else { Response.Redirect("CheckoutError.aspx?" + retMsg); } } }
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { // Verify user has completed the checkout process. if ((string)Session["userCheckoutCompleted"] != "true") { Session["userCheckoutCompleted"] = string.Empty; Response.Redirect("CheckoutError.aspx?" + "Desc=Unvalidated%20Checkout."); } if (Session["payment_method"].ToString() == "PayPal") { NVPAPICaller payPalCaller = new NVPAPICaller(); string retMsg = ""; string token = ""; string finalPaymentAmount = ""; string PayerID = ""; NVPCodec decoder = new NVPCodec(); token = Session["token"].ToString(); PayerID = Session["payerId"].ToString(); finalPaymentAmount = Session["payment_amt"].ToString(); bool ret = payPalCaller.DoCheckoutPayment(finalPaymentAmount, token, PayerID, ref decoder, ref retMsg); if (ret) { // Retrieve PayPal confirmation value. string PaymentConfirmation = decoder["PAYMENTINFO_0_TRANSACTIONID"].ToString(); TransactionId.Text = PaymentConfirmation; ProductContext _db = new ProductContext(); // Get the current order id. int currentOrderId = -1; if (Session["currentOrderId"].ToString() != string.Empty) { currentOrderId = Convert.ToInt32(Session["currentOrderID"]); } Order myCurrentOrder; if (currentOrderId >= 0) { // Get the order based on order id. myCurrentOrder = _db.Orders.Single(o => o.OrderId == currentOrderId); // Update the order to reflect payment has been completed. myCurrentOrder.PaymentTransactionId = PaymentConfirmation; // Save to DB. _db.SaveChanges(); } // Clear order id. Session["currentOrderId"] = string.Empty; } else { Response.Redirect("CheckoutError.aspx?" + retMsg); } } else if (Session["payment_method"].ToString() == "Braintree") { var myOrder = new Models.Order(); var myAddress = new Models.Address(); var manager = HttpContext.Current.GetOwinContext().GetUserManager <ApplicationUserManager>(); var user = manager.FindByName(HttpContext.Current.User.Identity.Name); myOrder.OrderDate = DateTime.Now; myOrder.Email = user.Email; myAddress.UserName = user.Email; myAddress.AddressLine1 = Session["streetNumberValue"].ToString() + " " + Session["routeValue"].ToString(); myAddress.City = Session["cityValue"].ToString(); myAddress.State = Session["stateValue"].ToString(); myAddress.PostalCode = Session["postalCodeValue"].ToString(); myAddress.Country = Session["countryValue"].ToString(); myOrder.Email = user.Email; myOrder.PaymentTransactionId = "Stripe" + Session["token"].ToString(); myOrder.Total = Convert.ToDecimal(HttpContext.Current.Session["payment_amt"].ToString()); ProductContext _db = new ProductContext(); // Add order to DB. _db.Orders.Add(myOrder); _db.Addresses.Add(myAddress); _db.SaveChanges(); using (fashionUtilityApplication.Logic.ShoppingCartActions usersShoppingCart = new fashionUtilityApplication.Logic.ShoppingCartActions()) { List <CartItem> myOrderList = usersShoppingCart.GetCartItems(); // Add OrderDetail information to the DB for each product purchased. for (int i = 0; i < myOrderList.Count; i++) { // Create a new OrderDetail object. var myOrderDetail = new OrderDetail(); myOrderDetail.OrderId = myOrder.OrderId; myOrderDetail.Username = HttpContext.Current.User.Identity.Name; myOrderDetail.ProductId = myOrderList[i].ProductId; myOrderDetail.Quantity = myOrderList[i].Quantity; myOrderDetail.ImagePath = myOrderList[i].ImagePath; myOrderDetail.UnitPrice = myOrderList[i].Product.UnitPrice; // Add OrderDetail to DB. _db.OrderDetails.Add(myOrderDetail); _db.SaveChanges(); } // Set OrderId. HttpContext.Current.Session["currentOrderId"] = myOrder.OrderId; // Display Order information. List <fashionUtilityApplication.Models.Order> orderList = new List <fashionUtilityApplication.Models.Order>(); orderList.Add(myOrder); } } else { Response.Redirect("CheckoutError.aspx?"); } // Clear shopping cart. using (fashionUtilityApplication.Logic.ShoppingCartActions usersShoppingCart = new fashionUtilityApplication.Logic.ShoppingCartActions()) { usersShoppingCart.EmptyCart(); } } }