예제 #1
0
 protected void CheckoutBtn_Click(object sender, ImageClickEventArgs e)
 {
     using (ShoppingCartActions usersShoppingCart = new ShoppingCartActions())
     {
         Session["payment_amt"] = usersShoppingCart.GetTotal();
     }
     Response.Redirect("Checkout/CheckoutStart.aspx");
 }
예제 #2
0
 protected void Page_Load(object sender, EventArgs e)
 {
     string rawId = Request.QueryString["discussionId"];
     int productId;
     if (!String.IsNullOrEmpty(rawId) && int.TryParse(rawId, out productId))
     {
         using (ShoppingCartActions usersShoppingCart = new ShoppingCartActions())
         {
             usersShoppingCart.AddToCart(Convert.ToInt16(rawId));
         }
     }
     else
     {
         Debug.Fail("ERROR : We should never get to AddToCart.aspx without a DiscussionId.");
         throw new Exception("ERROR : It is illegal to load AddToCart.aspx without setting a DiscussionId.");
     }
     Response.Redirect("ShoppingCart.aspx");
 }
예제 #3
0
 protected void Page_Load(object sender, EventArgs e)
 {
     using (ShoppingCartActions usersShoppingCart = new ShoppingCartActions())
     {
         decimal cartTotal = 0;
         cartTotal = usersShoppingCart.GetTotal();
         if (cartTotal > 0)
         { // Display Total.
             lblTotal.Text = String.Format("{0:c}", cartTotal);
         }
         else
         {
             LabelTotalText.Text = "";
             lblTotal.Text = "";
             ShoppingCartTitle.InnerText = "Shopping Cart is Empty";
             UpdateBtn.Visible = false;
             CheckoutImageBtn.Visible = false;
         }
     }
 }
예제 #4
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();
                    myOrder.OrderDate = Convert.ToDateTime(decoder["TIMESTAMP"].ToString());
                    myOrder.Username = 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 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.
                    DataContext _db = new DataContext();

                    // Add order to DB.
                    _db.Orders.Add(myOrder);
                    _db.SaveChanges();

                    // Get the shopping cart items and process them.
                    using (talker.logic.ShoppingCartActions usersShoppingCart = new talker.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].DiscussionId;
                            myOrderDetail.Quantity = 1;
                            myOrderDetail.UnitPrice = myOrderList[i].Discussion.TransactionAmount;

                            // 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);
                        ShipInfo.DataSource = orderList;
                        ShipInfo.DataBind();

                        // Display OrderDetails.
                        OrderItemList.DataSource = myOrderList;
                        OrderItemList.DataBind();
                    }
                }
                else
                {
                    Response.Redirect("CheckoutError.aspx?" + retMsg);
                }
            }
        }
예제 #5
0
 public List<CartItem> GetShoppingCartItems()
 {
     ShoppingCartActions actions = new ShoppingCartActions();
     return actions.GetCartItems();
 }
예제 #6
0
    public bool ShortcutExpressCheckout(string amt, ref string token, ref string retMsg)
    {
        if (bSandbox)
        {
            pEndPointURL = pEndPointURL_SB;
            host = host_SB;
        }

        string returnURL = "http://localhost:63470/Checkout/CheckoutReview.aspx";
        string cancelURL = "http://localhost:63470/Checkout/CheckoutCancel.aspx";

        NVPCodec encoder = new NVPCodec();
        encoder["METHOD"] = "SetExpressCheckout";
        encoder["RETURNURL"] = returnURL;
        encoder["CANCELURL"] = cancelURL;
        encoder["BRANDNAME"] = "Wingtip Toys Sample Application";
        encoder["PAYMENTREQUEST_0_AMT"] = amt;
        encoder["PAYMENTREQUEST_0_ITEMAMT"] = amt;
        encoder["PAYMENTREQUEST_0_PAYMENTACTION"] = "Sale";
        encoder["PAYMENTREQUEST_0_CURRENCYCODE"] = "USD";

        // Get the Shopping Cart Products
        using (talker.logic.ShoppingCartActions myCartOrders = new talker.logic.ShoppingCartActions())
        {
            List<CartItem> myOrderList = myCartOrders.GetCartItems();

            for (int i = 0; i < myOrderList.Count; i++)
            {
                encoder["L_PAYMENTREQUEST_0_NAME" + i] = myOrderList[i].Discussion.ProvidingUserName.ToString();
                encoder["L_PAYMENTREQUEST_0_AMT" + i] = myOrderList[i].Discussion.TransactionAmount.ToString();
                encoder["L_PAYMENTREQUEST_0_QTY" + i] = "1";
            }
        }

        string pStrrequestforNvp = encoder.Encode();
        string pStresponsenvp = HttpCall(pStrrequestforNvp);

        NVPCodec decoder = new NVPCodec();
        decoder.Decode(pStresponsenvp);

        string strAck = decoder["ACK"].ToLower();
        if (strAck != null && (strAck == "success" || strAck == "successwithwarning"))
        {
            token = decoder["TOKEN"];
            string ECURL = "https://" + host + "/cgi-bin/webscr?cmd=_express-checkout" + "&token=" + token;
            retMsg = ECURL;
            return true;
        }
        else
        {
            retMsg = "ErrorCode=" + decoder["L_ERRORCODE0"] + "&" +
                "Desc=" + decoder["L_SHORTMESSAGE0"] + "&" +
                "Desc2=" + decoder["L_LONGMESSAGE0"];
            return false;
        }
    }
예제 #7
0
 /*public decimal GetTotal()
 {
     ShoppingCartId = GetCartId();
     // Multiply product price by quantity of that product to get
     // the current price for each of those products in the cart.
     // Sum all product price totals to get the cart total.
     decimal? total = decimal.Zero;
     total = (decimal?)(from cartItems in _db.ShoppingCartItems
                        where cartItems.CartId == ShoppingCartId
                        select (int?)cartItems.Quantity *
                        cartItems.Product.UnitPrice).Sum();
     return total ?? decimal.Zero;
 }*/
 public ShoppingCartActions GetCart(HttpContext context)
 {
     using (var cart = new ShoppingCartActions())
     {
         cart.ShoppingCartId = cart.GetCartId();
         return cart;
     }
 }