public IActionResult HandleResponse(IFormCollection form)
        {
            string secretKey   = _keys.CashFreeSecretKey;
            string orderId     = Request.Form["orderId"];
            string orderAmount = Request.Form["orderAmount"];
            string referenceId = Request.Form["referenceId"];
            string txStatus    = Request.Form["txStatus"];
            string paymentMode = Request.Form["paymentMode"];
            string txMsg       = Request.Form["txMsg"];
            string txTime      = Request.Form["txTime"];
            string signature   = Request.Form["signature"];

            string signatureData = orderId + orderAmount + referenceId + txStatus + paymentMode + txMsg + txTime;

            var hmacsha256 = new HMACSHA256(StringEncode(secretKey));

            byte[] gensignature      = hmacsha256.ComputeHash(StringEncode(signatureData));
            string computedsignature = Convert.ToBase64String(gensignature);

            if (signature == computedsignature)
            {
                ViewData["panel"]   = "panel panel-success";
                ViewData["heading"] = "Signature Verification Successful";
            }
            else
            {
                ViewData["panel"]   = "panel panel-danger";
                ViewData["heading"] = "Signature Verification Failed";
            }
            ViewData["orderId"]     = orderId;
            ViewData["orderAmount"] = orderAmount;
            ViewData["referenceId"] = referenceId;
            ViewData["txStatus"]    = txStatus;
            ViewData["txMsg"]       = txMsg;
            ViewData["txTime"]      = txTime;
            ViewData["paymentMode"] = paymentMode;
            if (txStatus == "SUCCESS")
            {
                Payments1 payment = new Payments1();
                payment        = _unitOfWork.Payments.GetFirstOrDefault(e => e.OrderId == orderId);
                payment.Status = SD.PaymentSuccessful;
                _unitOfWork.Payments.Update(payment);
                _unitOfWork.Save();
            }
            else
            {
                Payments1 payment = new Payments1();
                payment        = _unitOfWork.Payments.GetFirstOrDefault(e => e.OrderId == orderId);
                payment.Status = SD.PaymentFailed;
                _unitOfWork.Payments.Update(payment);
                _unitOfWork.Save();
            }

            return(View());
        }
        /*   public IActionResult Cashfree()
         * {
         *
         *
         *     return View();
         * }*/

        public IActionResult Cashfree()
        {
            Payments1 payment = new Payments1();
            UserModel user    = new UserModel();
            Random    ran     = new Random();

            user               = _unitOfWork.User.GetFirstOrDefault(e => e.UserName == User.FindFirst("UserName").Value);
            payment.UserId     = user.Id;
            payment.User       = user;
            payment.User.Phone = "7631167103";                    //Because Phone Number is not present in Table
            payment.OrderId    = ran.Next(1000000000).ToString(); //random generated
            //payment.OrderId = payment.PaymentId;
            payment.Ammount         = 100;                        //set amount
            payment.Status          = SD.PaymentInitiated;
            ViewData["CallBackUrl"] = SD.PaymentCallBackUrl;
            _unitOfWork.Payments.Add(payment);
            _unitOfWork.Save();
            return(View(payment));
        }
        public IActionResult HandleRequest(PaymentForm model)
        {
            string secretKey     = _keys.CashFreeSecretKey;
            string mode          = "TEST"; //change mode to PROD for production
            string signatureData = "";

            PropertyInfo[] keys = model.GetType().GetProperties();
            keys = keys.OrderBy(key => key.Name).ToArray();

            foreach (PropertyInfo key in keys)
            {
                signatureData += key.Name + key.GetValue(model);
            }
            var hmacsha256 = new HMACSHA256(StringEncode(secretKey));

            byte[] gensignature = hmacsha256.ComputeHash(StringEncode(signatureData));
            string signature    = Convert.ToBase64String(gensignature);

            ViewData["signature"] = signature;
            if (mode == "PROD")
            {
                ViewData["url"] = "https://www.cashfree.com/checkout/post/submit";
            }
            else
            {
                ViewData["url"] = "https://test.cashfree.com/billpay/checkout/post/submit";
            }

            Payments1 payment = new Payments1();

            payment        = _unitOfWork.Payments.GetFirstOrDefault(e => e.OrderId == model.orderId);
            payment.Status = SD.PaymentPending;
            _unitOfWork.Payments.Update(payment);
            _unitOfWork.Save();
            return(View(model));
        }