示例#1
0
    public bool ShortcutExpressCheckout(string amt, ref string token, ref string retMsg)
    {
        if (bSandbox)
        {
            pEndPointURL = pEndPointURL_SB;
            host         = host_SB;
        }

        string returnURL = "https://" + EzyGateFaceBookWebsite + "/Checkout/CheckoutReview.aspx";
        string cancelURL = "https://" + EzyGateFaceBookWebsite + "/Checkout/CheckoutCancel.aspx";

        NVPEzyCodec encoder = new NVPEzyCodec();

        encoder["METHOD"]                         = "SetExpressCheckout";
        encoder["RETURNURL"]                      = returnURL;
        encoder["CANCELURL"]                      = cancelURL;
        encoder["BRANDNAME"]                      = "EzyGate Facebook Store";
        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 (EzyCards.Logic.ShoppingCartActions myCartOrders = new EzyCards.Logic.ShoppingCartActions())
        {
            List <CartItem> myOrderList = myCartOrders.GetCartItems();
            encoder["PAYMENTREQUEST_0_QTYCOUNT"] = myOrderList.Count.ToString();
            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);

        NVPEzyCodec decoder = new NVPEzyCodec();

        decoder.Decode(pStresponsenvp);

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

        if (strAck != null && (strAck == "success" || strAck == "successwithwarning"))
        {
            token = decoder["TOKEN"];
            // Don't forget to make the http to https (SSL)
            string ECURL = "https://" + host + "/NVP/APIGetToken.aspx?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);
        }
    }
示例#2
0
    private string buildCredentialsNVPString()
    {
        NVPEzyCodec codec = new NVPEzyCodec();

        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());
    }
示例#3
0
    public bool GetCheckoutDetails(string token, ref string PayerID, ref NVPEzyCodec decoder, ref string retMsg)
    {
        if (bSandbox)
        {
            pEndPointURL = pEndPointURL_SB;
        }

        NVPEzyCodec encoder = new NVPEzyCodec();

        encoder["METHOD"] = "GetExpressCheckoutDetails";
        encoder["TOKEN"]  = token;

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

        decoder = new NVPEzyCodec();
        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);
        }
    }
示例#4
0
    public bool ShortcutExpressCheckout(string amt, ref string token, ref string retMsg)
    {
        if (bSandbox)
        {
            pEndPointURL = pEndPointURL_SB;
            host = host_SB;
        }

		string returnURL = "https://" + EzyGateFaceBookWebsite + "/Checkout/CheckoutReview.aspx";
		string cancelURL = "https://" + EzyGateFaceBookWebsite + "/Checkout/CheckoutCancel.aspx";

        NVPEzyCodec encoder = new NVPEzyCodec();
        encoder["METHOD"] = "SetExpressCheckout";
        encoder["RETURNURL"] = returnURL;
        encoder["CANCELURL"] = cancelURL;
		encoder["BRANDNAME"] = "EzyGate Facebook Store";
        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 (EzyCards.Logic.ShoppingCartActions myCartOrders = new EzyCards.Logic.ShoppingCartActions())
        {
            List<CartItem> myOrderList = myCartOrders.GetCartItems();
            encoder["PAYMENTREQUEST_0_QTYCOUNT"] = myOrderList.Count.ToString();
            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);

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

        string strAck = decoder["ACK"].ToLower();
        if (strAck != null && (strAck == "success" || strAck == "successwithwarning"))
        {
            token = decoder["TOKEN"];
            // Don't forget to make the http to https (SSL)
            string ECURL = "https://" + host + "/NVP/APIGetToken.aspx?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;
        }
    }
示例#5
0
    public bool DoCheckoutPayment(string finalPaymentAmount, string token, string PayerID, ref NVPEzyCodec decoder, ref string retMsg)
    {
        if (bSandbox)
        {
            pEndPointURL = pEndPointURL_SB;
        }

        NVPEzyCodec encoder = new NVPEzyCodec();

        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 NVPEzyCodec();
        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);
        }
    }
示例#6
0
    private string buildCredentialsNVPString()
    {
        NVPEzyCodec codec = new NVPEzyCodec();

        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();
    }
示例#7
0
    public bool DoCheckoutPayment(string finalPaymentAmount, string token, string PayerID, ref NVPEzyCodec decoder, ref string retMsg)
    {
        if (bSandbox)
        {
            pEndPointURL = pEndPointURL_SB;
        }

        NVPEzyCodec encoder = new NVPEzyCodec();
        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 NVPEzyCodec();
        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;
        }
    }
示例#8
0
    public bool GetCheckoutDetails(string token, ref string PayerID, ref NVPEzyCodec decoder, ref string retMsg)
    {
        if (bSandbox)
        {
            pEndPointURL = pEndPointURL_SB;
        }

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

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

        decoder = new NVPEzyCodec();
        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;
        }
    }
示例#9
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                if (Session["payment_method"] == "paypal")
                {
                    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.
                        ProductContext _db = new ProductContext();

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

                        // Get the shopping cart items and process them.
                        using (EzyCards.Logic.ShoppingCartActions usersShoppingCart = new EzyCards.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.
                                _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);
                    }
                }
                else if (Session["payment_method"] == "ezycard")
                {
                    EzyCardFunctions ezyCardCaller = new EzyCardFunctions();

                    string      retMsg  = "";
                    string      token   = "";
                    string      PayerID = "";
                    NVPEzyCodec decoder = new NVPEzyCodec();
                    token = Session["token"].ToString();

                    bool ret = ezyCardCaller.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());
                        myOrder.HasBeenShipped = false;
                        // 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 (EzyCards.Logic.ShoppingCartActions usersShoppingCart = new EzyCards.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.
                                _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);
                    }
                }
            }
        }
示例#10
0
        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"] == "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"] != 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 shopping cart.
                        using (EzyCards.Logic.ShoppingCartActions usersShoppingCart =
                                   new EzyCards.Logic.ShoppingCartActions())
                        {
                            usersShoppingCart.EmptyCart();
                        }

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

                else if (Session["payment_method"] == "ezycard")
                {
                    EzyCardFunctions ezyCardCaller = new EzyCardFunctions();

                    string      retMsg             = "";
                    string      token              = "";
                    string      finalPaymentAmount = "";
                    string      PayerID            = "";
                    NVPEzyCodec decoder            = new NVPEzyCodec();

                    token              = Session["token"].ToString();
                    PayerID            = Session["payerId"].ToString();
                    finalPaymentAmount = Session["payment_amt"].ToString();

                    bool ret = ezyCardCaller.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"]);
                        }
                        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 shopping cart.
                        using (EzyCards.Logic.ShoppingCartActions usersShoppingCart =
                                   new EzyCards.Logic.ShoppingCartActions())
                        {
                            usersShoppingCart.EmptyCart();
                        }

                        // Clear order id.
                        Session["currentOrderId"] = string.Empty;
                    }
                    else
                    {
                        Response.Redirect("CheckoutError.aspx?" + retMsg);
                    }
                }
            }
        }
示例#11
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                if (Session["payment_method"] == "paypal")
                {
                    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.
                        ProductContext _db = new ProductContext();

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

                        // Get the shopping cart items and process them.
                        using (EzyCards.Logic.ShoppingCartActions usersShoppingCart = new EzyCards.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.
                                _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);
                    }
                }
                else if (Session["payment_method"] == "ezycard")
                {
                    EzyCardFunctions ezyCardCaller = new EzyCardFunctions();

                    string retMsg = "";
                    string token = "";
                    string PayerID = "";
                    NVPEzyCodec decoder = new NVPEzyCodec();
                    token = Session["token"].ToString();

                    bool ret = ezyCardCaller.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());
                        myOrder.HasBeenShipped = false;
                        // 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 (EzyCards.Logic.ShoppingCartActions usersShoppingCart = new EzyCards.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.
                                _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);
                    }
                }
            }
        }
示例#12
0
      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"] == "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"] != 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 shopping cart.
                      using (EzyCards.Logic.ShoppingCartActions usersShoppingCart =
                          new EzyCards.Logic.ShoppingCartActions())
                      {
                          usersShoppingCart.EmptyCart();
                      }

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

              else if (Session["payment_method"] == "ezycard")
              {
                  EzyCardFunctions ezyCardCaller = new EzyCardFunctions();

                  string retMsg = "";
                  string token = "";
                  string finalPaymentAmount = "";
                  string PayerID = "";
                  NVPEzyCodec decoder = new NVPEzyCodec();

                  token = Session["token"].ToString();
                  PayerID = Session["payerId"].ToString();
                  finalPaymentAmount = Session["payment_amt"].ToString();

                  bool ret = ezyCardCaller.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"]);
                      }
                      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 shopping cart.
                      using (EzyCards.Logic.ShoppingCartActions usersShoppingCart =
                          new EzyCards.Logic.ShoppingCartActions())
                      {
                          usersShoppingCart.EmptyCart();
                      }

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

          }
      }