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)); }