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(); myOrder.OrderDate = Convert.ToDateTime(decoder["TIMESTAMP"].ToString()); myOrder.Uername = User.Identity.Name; myOrder.FirstName = decoder["FIRSTNAME"].ToString(); myOrder.LastName = decoder["LASTNAME"].ToString(); myOrder.Address = decoder["SHIPTOSTREET"].ToString(); myOrder.City = decoder["SHIPTOCITY"].ToString(); myOrder.State = decoder["SHIPTOSTATE"].ToString(); myOrder.PostalCode = decoder["SHIPTOZIP"].ToString(); myOrder.Country = decoder["SHIPTOCOUNTRYCODE"].ToString(); myOrder.Email = decoder["EMAIL"].ToString(); myOrder.Total = Convert.ToDecimal( decoder["AMT"].ToString() ); //verify total payment amount as set on checkout start.aspx. try { decimal paymentAmountOnCheckout = Convert.ToDecimal( Session["payment_amt"].ToString() ); decimal paymentAmountFromPayPal = Convert.ToDecimal( decoder["AMT"].ToString() ); if (paymentAmountOnCheckout != paymentAmountFromPayPal) { 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.SaveChanges(); //Get the shopping cart items and process them using (WingtipToys.Logic.ShoppingCartActions usersShoppingCart = new WingtipToys.Logic.ShoppingCartActions()) { List<CartItem> myOrderList = usersShoppingCart.GetCartItems(); //add oderdetail info to the db for each product purchased for (int i= 0; i < myOrderList.Count; i++) { //create new order detail 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.UnitPrice = myOrderList[i] .Product.UnitPrice; // add orderdetail to db _db.OrderDetails.Add(myOrderDetail); _db.SaveChanges(); } // set order id Session["currentOrderId"] = myOrder.OrderId; //displayorder info List<Order> orderList = new List<Order>(); orderList.Add(myOrder); ShipInfo.DataSource = orderList; ShipInfo.DataBind(); //display order detail OrderItemList.DataSource = myOrderList; OrderItemList.DataBind(); } } else { Response.Redirect("CheckoutError.aspx?" + retMsg); } } }
protected void CheckoutConfirm_Click(object sender, EventArgs e) { Session["payerId"] = ""; var myOrder = new Order(); string AMT = Session["payment_amt"].ToString(); myOrder.OrderDate = DateTime.Now; myOrder.Username = User.Identity.Name; myOrder.FirstName = TextBoxFN.Text; myOrder.LastName = TextBoxSN.Text; myOrder.Address = TextBoxAddress.Text; myOrder.City = TextBoxCity.Text; myOrder.State = TextBoxZone.Text; myOrder.PostalCode = TextBoxIndex.Text; myOrder.Country = TextBoxZone.Text; myOrder.Email = TextBoxMail.Text; myOrder.Phone = TextBoxPhone.Text; myOrder.PaymentTransactionId = "1"; myOrder.OrderDetails = new List<OrderDetail>(); myOrder.DSID = 1; myOrder.Total = Convert.ToDecimal(AMT); // Verify total payment amount as set on CheckoutStart.aspx. try { decimal paymentAmountOnCheckout = Convert.ToDecimal(Session["payment_amt"].ToString()); decimal paymentAmoutFromPayPal = Convert.ToDecimal(AMT); 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.SaveChanges(); // Get the shopping cart items and process them. using (WingtipToys.Logic.ShoppingCartActions usersShoppingCart = new WingtipToys.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.UnitPrice = myOrderList[i].Product.UnitPrice; // Add OrderDetail to DB. //myOrder.OrderDetails.Add(myOrderDetail); _db.OrderDetails.Add(myOrderDetail); _db.SaveChanges(); } // Set OrderId. Session["currentOrderId"] = myOrder.OrderId; // Display Order information. List<Order> orderList = new List<Order>(); orderList.Add(myOrder); } //_db.Orders.Add(myOrder); //_db.SaveChanges(); Response.Redirect("CheckoutReview.aspx"); }