Пример #1
0
        // GET: Payment
        public ActionResult Index()
        {
            if (User.Identity.IsAuthenticated)
            {
                var user = db.Users.FirstOrDefault(u => u.Mobile == User.Identity.Name);

                var factor = db.Factors.FirstOrDefault(u => u.UserId == user.Id && u.IsPay == false);

                var details = db.FactorDetail.Where(d => d.FactorId == factor.Id).ToList();

                double SumFactor = 0;

                foreach (var item in details)
                {
                    var product = db.Products.Find(item.ProductId);

                    var factorDetail = db.FactorDetail.Find(item.Id);

                    factorDetail.DetailPrice = product.Price;

                    db.SaveChanges();

                    SumFactor += product.Price;
                }

                factor.Price = Convert.ToInt32(SumFactor);

                long   orderID        = Convert.ToInt64(factor.Number);
                long   priceAmount    = Convert.ToInt64(SumFactor);
                string additionalText = "خرید جدید در فروشگاه"; // توضیحات شما برای این تراکنش

                BankMellat bankmellat = new BankMellat();

                string   resultRequest     = bankmellat.bpPayRequest(orderID, priceAmount, additionalText);
                string[] StatusSendRequest = resultRequest.Split(',');

                if (int.Parse(StatusSendRequest[0]) == (int)BankMellat.MellatBankReturnCode.ﺗﺮاﻛﻨﺶ_ﺑﺎ_ﻣﻮﻓﻘﻴﺖ_اﻧﺠﺎم_ﺷﺪ)
                {
                    return(RedirectToAction("RedirectVPOS", "Payment", new { id = StatusSendRequest[1] }));
                }

                TempData["Message"] = bankmellat.DesribtionStatusCode(int.Parse(StatusSendRequest[0].Replace("_", " ")));
                return(RedirectToAction("ShowError", "Payment"));
            }

            return(RedirectToAction("Login", "Account"));
        }
        public ActionResult Index()
        {
            if (User.Identity.IsAuthenticated)
            {
                var user = db.Users.FirstOrDefault(u => u.Mobile == User.Identity.Name);

                if (user.IsActive)
                {
                    var factor = db.Factors.FirstOrDefault(f => f.UserId == user.Id && f.IsPay == false);

                    Random RND       = new Random();
                    int    OrderRand = RND.Next(10000000, 99999990);
                    int    SumPrice  = 0;

                    strTodey = PC.GetYear(DateTime.Now).ToString("0000") + "/" +
                               PC.GetMonth(DateTime.Now).ToString("00") + "/" +
                               PC.GetDayOfMonth(DateTime.Now).ToString("00");


                    if (factor != null)
                    {
                        var detail  = db.FactorDetails.Where(d => d.factorId == factor.Id).ToList();
                        var setting = db.Settings.FirstOrDefault();

                        int TotalPrice   = 0;
                        int TaxPercent   = 0;
                        int ServicePrice = 0;



                        foreach (var item in detail)
                        {
                            TotalPrice = TotalPrice + (item.Tedad * item.Products.SalePrice);
                        }

                        if (setting.TaxPercent != 0)
                        {
                            TaxPercent = TotalPrice * (setting.TaxPercent / 100);
                        }
                        else
                        {
                            TaxPercent = 0;
                        }

                        if (TotalPrice < setting.ServiceBetween)
                        {
                            ServicePrice = setting.ServicePric;
                        }
                        else
                        {
                            ServicePrice = 0;
                        }

                        SumPrice = TaxPercent + ServicePrice + TotalPrice;

                        factor.NumberFactor = OrderRand.ToString();
                        factor.CutPrice     = ServicePrice;
                        factor.Tax          = TaxPercent;
                        factor.SumItem      = TotalPrice;
                        factor.SumPrice     = SumPrice;
                        db.SaveChanges();
                    }

                    long   orderID        = OrderRand;
                    long   priceAmount    = SumPrice;
                    string additionalText = "تراکنش جدید"; // توضیحات شما برای این تراکنش

                    BankMellat bankmellat = new BankMellat();

                    string   resultRequest     = bankmellat.bpPayRequest(orderID, priceAmount, additionalText);
                    string[] StatusSendRequest = resultRequest.Split(',');

                    if (int.Parse(StatusSendRequest[0]) == (int)BankMellat.MellatBankReturnCode.ﺗﺮاﻛﻨﺶ_ﺑﺎ_ﻣﻮﻓﻘﻴﺖ_اﻧﺠﺎم_ﺷﺪ)
                    {
                        return(RedirectToAction("RedirectVPOS", "Payment", new { id = StatusSendRequest[1] }));
                    }

                    TempData["Message"] = bankmellat.DesribtionStatusCode(int.Parse(StatusSendRequest[0].Replace("_", " ")));
                    return(RedirectToAction("ShowError", "Payment"));
                }
                else
                {
                    return(RedirectToAction("Activate", "Account"));
                }
            }
            else
            {
                return(RedirectToAction("Login", "Account"));
            }
        }
        public ActionResult BankCallback()
        {
            bool   Run_bpReversalRequest = false;
            long   saleReferenceId       = -999;
            long   saleOrderId           = -999;
            string resultCode_bpPayRequest;

            BankMellat bankmellat = new BankMellat();

            try
            {
                saleReferenceId         = long.Parse(Request.Params["SaleReferenceId"].ToString());
                saleOrderId             = long.Parse(Request.Params["SaleOrderId"].ToString());
                resultCode_bpPayRequest = Request.Params["ResCode"].ToString();

                //Result Code
                string resultCode_bpinquiryRequest = "-9999";
                string resultCode_bpSettleRequest  = "-9999";
                string resultCode_bpVerifyRequest  = "-9999";

                if (int.Parse(resultCode_bpPayRequest) == (int)BankMellat.MellatBankReturnCode.ﺗﺮاﻛﻨﺶ_ﺑﺎ_ﻣﻮﻓﻘﻴﺖ_اﻧﺠﺎم_ﺷﺪ)
                {
                    resultCode_bpVerifyRequest = bankmellat.VerifyRequest(saleOrderId, saleOrderId, saleReferenceId);

                    if (string.IsNullOrEmpty(resultCode_bpVerifyRequest))
                    {
                        resultCode_bpinquiryRequest = bankmellat.InquiryRequest(saleOrderId, saleOrderId, saleReferenceId);
                        if (int.Parse(resultCode_bpinquiryRequest) != (int)BankMellat.MellatBankReturnCode.ﺗﺮاﻛﻨﺶ_ﺑﺎ_ﻣﻮﻓﻘﻴﺖ_اﻧﺠﺎم_ﺷﺪ)
                        {
                            //the transactrion faild
                            TempData["Message"]   = bankmellat.DesribtionStatusCode(int.Parse(resultCode_bpinquiryRequest.Replace("_", " ")));
                            Run_bpReversalRequest = true;
                        }
                    }

                    if ((int.Parse(resultCode_bpVerifyRequest) == (int)BankMellat.MellatBankReturnCode.ﺗﺮاﻛﻨﺶ_ﺑﺎ_ﻣﻮﻓﻘﻴﺖ_اﻧﺠﺎم_ﺷﺪ)
                        ||
                        (int.Parse(resultCode_bpinquiryRequest) == (int)BankMellat.MellatBankReturnCode.ﺗﺮاﻛﻨﺶ_ﺑﺎ_ﻣﻮﻓﻘﻴﺖ_اﻧﺠﺎم_ﺷﺪ))
                    {
                        resultCode_bpSettleRequest = bankmellat.SettleRequest(saleOrderId, saleOrderId, saleReferenceId);
                        if ((int.Parse(resultCode_bpSettleRequest) == (int)BankMellat.MellatBankReturnCode.ﺗﺮاﻛﻨﺶ_ﺑﺎ_ﻣﻮﻓﻘﻴﺖ_اﻧﺠﺎم_ﺷﺪ) ||
                            (int.Parse(resultCode_bpSettleRequest) == (int)BankMellat.MellatBankReturnCode.ﺗﺮاﻛﻨﺶ_Settle_ﺷﺪه_اﺳﺖ))
                        {
                            TempData["Message"]  = "تراکنش شما با موفقیت انجام شد ";
                            TempData["Message"] += Environment.NewLine + " لطفا شماره پیگیری را یادداشت نمایید" + Environment.NewLine + saleReferenceId;
                        }
                        else
                        {
                            TempData["Message"]   = bankmellat.DesribtionStatusCode(int.Parse(resultCode_bpSettleRequest.Replace("_", " ")));
                            Run_bpReversalRequest = true;
                        }

                        // Save information to Database...

                        var factor = db.Factors.FirstOrDefault(f => f.NumberFactor == saleOrderId.ToString());

                        if (factor != null)
                        {
                            var user = db.Users.Find(factor.UserId);

                            factor.IsPay         = true;
                            factor.DatePay       = strTodey;
                            factor.TimePay       = System.DateTime.Now.ToShortTimeString();
                            factor.NumberControl = saleReferenceId.ToString();

                            db.SaveChanges();

                            SmsSender sms = new SmsSender();

                            sms.Send(user.Mobile, "صورتحساب جدید شما پرداخت شد. شماره پیگیری " + factor.NumberControl + "می باشد");

                            if (user != null)
                            {
                                System.Web.Security.FormsAuthentication.SetAuthCookie(user.Mobile, false);
                            }
                        }
                    }
                    else
                    {
                        TempData["Message"]   = bankmellat.DesribtionStatusCode(int.Parse(resultCode_bpVerifyRequest.Replace("_", " ")));
                        Run_bpReversalRequest = true;
                    }
                }
                else
                {
                    TempData["Message"]   = bankmellat.DesribtionStatusCode(int.Parse(resultCode_bpPayRequest)).Replace("_", " ");
                    Run_bpReversalRequest = true;
                }

                return(RedirectToAction("ShowError", "Payment"));
            }
            catch (Exception Error)
            {
                TempData["Message"] = "متاسفانه خطایی رخ داده است، لطفا مجددا عملیات خود را انجام دهید در صورت تکرار این مشکل را به بخش پشتیبانی اطلاع دهید";
                // Save and send Error for admin user
                Run_bpReversalRequest = true;
                return(RedirectToAction("ShowError", "Payment"));
            }
            finally
            {
                if (Run_bpReversalRequest) //ReversalRequest
                {
                    if (saleOrderId != -999 && saleReferenceId != -999)
                    {
                        bankmellat.bpReversalRequest(saleOrderId, saleOrderId, saleReferenceId);
                    }
                    // Save information to Database...
                }
            }
        }
Пример #4
0
        public ActionResult BankCallback()
        {
            bool   Run_bpReversalRequest = false;
            long   saleReferenceId       = -999;
            long   saleOrderId           = -999;
            string resultCode_bpPayRequest;

            BankMellat bankmellat = new BankMellat();

            try
            {
                saleReferenceId         = long.Parse(Request.Params["SaleReferenceId"].ToString());
                saleOrderId             = long.Parse(Request.Params["SaleOrderId"].ToString());
                resultCode_bpPayRequest = Request.Params["ResCode"].ToString();

                //Result Code
                string resultCode_bpinquiryRequest = "-9999";
                string resultCode_bpSettleRequest  = "-9999";
                string resultCode_bpVerifyRequest  = "-9999";

                if (int.Parse(resultCode_bpPayRequest) == (int)BankMellat.MellatBankReturnCode.ﺗﺮاﻛﻨﺶ_ﺑﺎ_ﻣﻮﻓﻘﻴﺖ_اﻧﺠﺎم_ﺷﺪ)
                {
                    resultCode_bpVerifyRequest = bankmellat.VerifyRequest(saleOrderId, saleOrderId, saleReferenceId);

                    if (string.IsNullOrEmpty(resultCode_bpVerifyRequest))
                    {
                        resultCode_bpinquiryRequest = bankmellat.InquiryRequest(saleOrderId, saleOrderId, saleReferenceId);
                        if (int.Parse(resultCode_bpinquiryRequest) != (int)BankMellat.MellatBankReturnCode.ﺗﺮاﻛﻨﺶ_ﺑﺎ_ﻣﻮﻓﻘﻴﺖ_اﻧﺠﺎم_ﺷﺪ)
                        {
                            //the transactrion faild
                            TempData["Message"]   = bankmellat.DesribtionStatusCode(int.Parse(resultCode_bpinquiryRequest.Replace("_", " ")));
                            Run_bpReversalRequest = true;
                        }
                    }

                    if ((int.Parse(resultCode_bpVerifyRequest) == (int)BankMellat.MellatBankReturnCode.ﺗﺮاﻛﻨﺶ_ﺑﺎ_ﻣﻮﻓﻘﻴﺖ_اﻧﺠﺎم_ﺷﺪ)
                        ||
                        (int.Parse(resultCode_bpinquiryRequest) == (int)BankMellat.MellatBankReturnCode.ﺗﺮاﻛﻨﺶ_ﺑﺎ_ﻣﻮﻓﻘﻴﺖ_اﻧﺠﺎم_ﺷﺪ))
                    {
                        resultCode_bpSettleRequest = bankmellat.SettleRequest(saleOrderId, saleOrderId, saleReferenceId);
                        if ((int.Parse(resultCode_bpSettleRequest) == (int)BankMellat.MellatBankReturnCode.ﺗﺮاﻛﻨﺶ_ﺑﺎ_ﻣﻮﻓﻘﻴﺖ_اﻧﺠﺎم_ﺷﺪ) ||
                            (int.Parse(resultCode_bpSettleRequest) == (int)BankMellat.MellatBankReturnCode.ﺗﺮاﻛﻨﺶ_Settle_ﺷﺪه_اﺳﺖ))
                        {
                            TempData["Message"]  = "تراکنش شما با موفقیت انجام شد ";
                            TempData["Message"] += Environment.NewLine + " لطفا شماره پیگیری را یادداشت نمایید" + Environment.NewLine + saleReferenceId;
                        }
                        else
                        {
                            TempData["Message"]   = bankmellat.DesribtionStatusCode(int.Parse(resultCode_bpSettleRequest.Replace("_", " ")));
                            Run_bpReversalRequest = true;
                        }

                        string strToday = PC.GetYear(DateTime.Now).ToString("0000") + "/" + PC.GetMonth(DateTime.Now).ToString("00") + "/" + PC.GetDayOfMonth(DateTime.Now).ToString("00");

                        var factor = db.Factors.FirstOrDefault(f => f.Number == saleOrderId.ToString());

                        factor.IsPay     = true;
                        factor.PayNumber = saleReferenceId.ToString();
                        factor.PayDate   = strToday;
                        factor.PayTime   = DateTime.Now.ToShortTimeString();

                        db.SaveChanges();
                        var details = db.FactorDetail.Where(d => d.FactorId == factor.Id).ToList();
                        foreach (var item in details)
                        {
                            var product = db.Products.Find(item.ProductId);
                            product.Quantity = product.Quantity - item.Count;
                            db.SaveChanges();
                        }
                        var user = db.Users.FirstOrDefault(u => u.Mobile == User.Identity.Name);

                        var setting = db.Settings.FirstOrDefault();

                        try
                        {
                            if (setting.FactorIsSend)
                            {
                                sms.SendSMS(user.Mobile, "صورت حساب جدید شما در فروشگاه با مبلغ " + factor.Price.ToString());
                            }

                            if (setting.PayIsSend)
                            {
                                sms.SendSMS(user.Mobile, "صورت حساب جدید شما در فروشگاه با موفقیت پرداخت شد. شماره پیگیری شما  " + factor.Number.ToString());
                            }
                        }
                        catch
                        {
                        }
                    }
                    else
                    {
                        TempData["Message"]   = bankmellat.DesribtionStatusCode(int.Parse(resultCode_bpVerifyRequest.Replace("_", " ")));
                        Run_bpReversalRequest = true;
                    }
                }
                else
                {
                    TempData["Message"]   = bankmellat.DesribtionStatusCode(int.Parse(resultCode_bpPayRequest)).Replace("_", " ");
                    Run_bpReversalRequest = true;
                }

                return(RedirectToAction("ShowError", "Payment"));
            }
            catch (Exception Error)
            {
                TempData["Message"] = "متاسفانه خطایی رخ داده است، لطفا مجددا عملیات خود را انجام دهید در صورت تکرار این مشکل را به بخش پشتیبانی اطلاع دهید";
                // Save and send Error for admin user
                Run_bpReversalRequest = true;
                return(RedirectToAction("ShowError", "Payment"));
            }
            finally
            {
                if (Run_bpReversalRequest) //ReversalRequest
                {
                    if (saleOrderId != -999 && saleReferenceId != -999)
                    {
                        bankmellat.bpReversalRequest(saleOrderId, saleOrderId, saleReferenceId);
                    }
                    // Save information to Database...
                }
            }
        }