public bool DoCheckoutPayment(string finalPaymentAmount, string token, string PayerID, ref NVPCodec decoder, ref string retMsg)
        {
            if (bSandbox)
                {
                    pEndPointURL = pEndPointURL_SB;
                }

                NVPCodec encoder = new NVPCodec();
                encoder["METHOD"] = "DoExpressCheckoutPayment";
                encoder["TOKEN"] = token;
                encoder["PAYERID"] = PayerID;
                encoder["PAYMENTREQUEST_0_AMT"] = finalPaymentAmount;
                encoder["PAYMENTREQUEST_0_CURRENCYCODE"] = "USD";
                encoder["PAYMENTREQUEST_0_PAYMENTACTION"] = "Sale";

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

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

                string strAck = decoder["ACK"].ToLower();
                if (strAck != null && (strAck == "success" || strAck == "successwithwarning"))
                {
                    return true;
                }
                else
                {
                    retMsg = "ErrorCode=" + decoder["L_ERRORCODE0"] + "&" +
                        "Desc=" + decoder["L_SHORTMESSAGE0"] + "&" +
                        "Desc2=" + decoder["L_LONGMESSAGE0"];

                    return false;
                }
        }
Ejemplo n.º 2
0
        public bool DoCheckoutPayment(string finalPaymentAmount, string token, string PayerID, ref NVPCodec decoder, ref string retMsg)
        {
            if (bSandbox)
            {
                pEndPointURL = pEndPointURL_SB;
            }

            NVPCodec encoder = new NVPCodec();

            encoder["METHOD"]  = "DoExpressCheckoutPayment";
            encoder["TOKEN"]   = token;
            encoder["PAYERID"] = PayerID;
            encoder["PAYMENTREQUEST_0_AMT"]           = finalPaymentAmount;
            encoder["PAYMENTREQUEST_0_CURRENCYCODE"]  = "USD";
            encoder["PAYMENTREQUEST_0_PAYMENTACTION"] = "Sale";

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

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

            string strAck = decoder["ACK"].ToLower();

            if (strAck != null && (strAck == "success" || strAck == "successwithwarning"))
            {
                return(true);
            }
            else
            {
                retMsg = "ErrorCode=" + decoder["L_ERRORCODE0"] + "&" +
                         "Desc=" + decoder["L_SHORTMESSAGE0"] + "&" +
                         "Desc2=" + decoder["L_LONGMESSAGE0"];

                return(false);
            }
        }
        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 Orders();

                    myOrder.Username = User.Identity.Name;
                    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.SaveChanges();

                    // Get the shopping cart items and process them.
                    using (CampusCourier.Logic.ShoppingCartActions usersShoppingCart = new CampusCourier.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.CustName = 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 OrderId. Remove this if it wont work
                        Session["currentOrderId"] = myOrder.OrderId;

                        //Adding data to orders

                        List<CartItem> ordersdatalist = usersShoppingCart.GetCartItems();
                        for (int i = 0; i < ordersdatalist.Count; i++)
                        {
                            var ordersdata = new Orders();
                            ordersdata.OrderId = myOrder.OrderId;
                            ordersdata.Quantity = ordersdatalist[i].Quantity;
                            int productid = ordersdatalist[i].ProductId;
                            ordersdata.RestName = ordersdatalist[i].Product.Restaurant.RestaurantName;

                            int location = Convert.ToInt32(ordersdatalist[i].Product.RestaurantID);

                            string Query = "SELECT LocationName from Locations WHERE LocationID ='" + location + "'";
                            string connectionstring = ConfigurationManager.ConnectionStrings["CampusCourier"].ConnectionString;
                            SqlConnection conn = new SqlConnection(connectionstring);
                            SqlCommand comm = new SqlCommand(Query, conn);
                            conn.Open();
                            SqlDataReader nwReader = comm.ExecuteReader();

                                while (nwReader.Read())
                                {
                                    ordersdata.Location = (string)nwReader["LocationName"];

                                }
                                nwReader.Close();
                                conn.Close();

                                ordersdata.Total = Convert.ToDecimal(ordersdatalist[i].Product.UnitPrice);
                                ordersdata.Status = "Waiting For Delivery";
                                _db.Orders.Add(ordersdata);
                                _db.SaveChanges();
                            }

                        // Display Order information.
                        List<Orders> orderList = new List<Orders>();
                        orderList.Add(myOrder);
                        ShipInfo.DataSource = orderList;
                        ShipInfo.DataBind();

                        // Display OrderDetails.
                        OrderItemList.DataSource = myOrderList;
                        OrderItemList.DataBind();
                        Session["userCheckoutCompleted"] = "true";
                        Response.Redirect("~/Checkout/CheckoutComplete.aspx");
                    }
                }
                else
                {
                    Response.Redirect("CheckoutError.aspx?" + retMsg);
                }
            }
        }
        public bool GetCheckoutDetails(string token, ref string PayerID, ref NVPCodec decoder, ref string retMsg)
        {
            if (bSandbox)
                {
                    pEndPointURL = pEndPointURL_SB;
                }

                NVPCodec encoder = new NVPCodec();
                encoder["METHOD"] = "GetExpressCheckoutDetails";
                encoder["TOKEN"] = token;

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

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

                string strAck = decoder["ACK"].ToLower();
                if (strAck != null && (strAck == "success" || strAck == "successwithwarning"))
                {
                    PayerID = decoder["PAYERID"];
                    return true;
                }
                else
                {
                    retMsg = "ErrorCode=" + decoder["L_ERRORCODE0"] + "&" +
                        "Desc=" + decoder["L_SHORTMESSAGE0"] + "&" +
                        "Desc2=" + decoder["L_LONGMESSAGE0"];

                    return false;
                }
        }
        private string buildCredentialsNVPString()
        {
            NVPCodec codec = new NVPCodec();

                if (!IsEmpty(APIUsername))
                    codec["USER"] = APIUsername;

                if (!IsEmpty(APIPassword))
                    codec[PWD] = APIPassword;

                if (!IsEmpty(APISignature))
                    codec[SIGNATURE] = APISignature;

                if (!IsEmpty(Subject))
                    codec["SUBJECT"] = Subject;

                codec["VERSION"] = "88.0";

                return codec.Encode();
        }
        public bool ShortcutExpressCheckout(string amt, ref string token, ref string retMsg)
        {
            if (bSandbox)
                {
                    pEndPointURL = pEndPointURL_SB;
                    host = host_SB;
                }

                string returnURL = "https://localhost:44300/Checkout/CheckoutReview.aspx";
                string cancelURL = "https://localhost:44300/Checkout/CheckoutCancel.aspx";

                NVPCodec encoder = new NVPCodec();
                encoder["METHOD"] = "SetExpressCheckout";
                encoder["RETURNURL"] = returnURL;
                encoder["CANCELURL"] = cancelURL;
                encoder["BRANDNAME"] = "CampusCourier";
                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 (CampusCourier.Logic.ShoppingCartActions myCartOrders = new CampusCourier.Logic.ShoppingCartActions())
                {
                    List<CartItem> myOrderList = myCartOrders.GetCartItems();

                    for (int i = 0; i < myOrderList.Count; i++)
                    {
                        encoder["L_PAYMENTREQUEST_0_NAME" + i] = myOrderList[i].Product.ProductName.ToString();
                        encoder["L_PAYMENTREQUEST_0_AMT" + i] = myOrderList[i].Product.UnitPrice.ToString();
                        encoder["L_PAYMENTREQUEST_0_QTY" + i] = myOrderList[i].Quantity.ToString();
                    }
                }

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

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

              string strAck = decoder["ACK"].ToLower();
              //  string strAck = "success";
                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;
                }
        }
        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.");
                }

                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"] != string.Empty)
                    {
                        //currentOrderId = Convert.ToInt32(Session["currentOrderID"]);
                    }
                    //Orders 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 shopping cart.
                    using (CampusCourier.Logic.ShoppingCartActions usersShoppingCart =
                        new CampusCourier.Logic.ShoppingCartActions())
                    {
                        usersShoppingCart.EmptyCart();
                    }

                    // Clear order id.
                    Session["currentOrderId"] = string.Empty;
                }
                else
                {
                    Response.Redirect("CheckoutError.aspx?" + retMsg);
                }
            }
        }