Esempio n. 1
0
        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");
            }
        }
Esempio n. 2
0
        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();
                }
            }
        }