Exemple #1
0
 public ActionResult CheckOutComplete(string orderId)
 {
     EmptyCartRemove();
     var model = new CheckOutCompleteViewModel()
     {
         OrderID = orderId,
         Contact = _unitOfWork.ContactRepository.Get().FirstOrDefault()
     };
     return View(model);
 }
Exemple #2
0
        public async Task<IActionResult> ResultATMPay(GetRequest getRequest)
        {
            log.InfoFormat("Begin VNPAY Return, URL={0}", Request.QueryString);
            if (Request.QueryString.Value.Length > 0 && getRequest.vnp_BankTranNo != null && getRequest.vnp_Amount.Length > 0 && getRequest.vnp_BankCode.Length > 0 && getRequest.vnp_CardType.Length > 0 && getRequest.vnp_OrderInfo.Length > 0 && getRequest.vnp_PayDate.Length > 0 && getRequest.vnp_ResponseCode.Length > 0 && getRequest.vnp_SecureHash.Length > 0 && getRequest.vnp_SecureHashType.Length > 0 && getRequest.vnp_TmnCode.Length > 0 && getRequest.vnp_TransactionNo.Length > 0 && getRequest.vnp_TxnRef.Length > 0)
            {
                string vnp_HashSecret = _vnpay.vnp_HashSecret; //Chuoi bi mat
                string vnpayData = Request.QueryString.ToString();
                VnPayLibrary vnpay = new VnPayLibrary();
                vnpay.AddResponseData("vnp_Amount", getRequest.vnp_Amount);
                vnpay.AddResponseData("vnp_BankCode", getRequest.vnp_BankCode);
                vnpay.AddResponseData("vnp_BankTranNo", getRequest.vnp_BankTranNo);
                vnpay.AddResponseData("vnp_CardType", getRequest.vnp_CardType);
                vnpay.AddResponseData("vnp_OrderInfo", getRequest.vnp_OrderInfo);
                vnpay.AddResponseData("vnp_PayDate", getRequest.vnp_PayDate);
                vnpay.AddResponseData("vnp_ResponseCode", getRequest.vnp_ResponseCode);
                vnpay.AddResponseData("vnp_SecureHash", getRequest.vnp_SecureHash);
                vnpay.AddResponseData("vnp_SecureHashType", getRequest.vnp_SecureHashType);
                vnpay.AddResponseData("vnp_TmnCode", getRequest.vnp_TmnCode);
                vnpay.AddResponseData("vnp_TransactionNo", getRequest.vnp_TransactionNo);
                vnpay.AddResponseData("vnp_TxnRef", getRequest.vnp_TxnRef);
                //vnp_TxnRef: Ma don hang merchant gui VNPAY tai command=pay    
                long orderId = Convert.ToInt64(vnpay.GetResponseData("vnp_TxnRef"));
                //vnp_TransactionNo: Ma GD tai he thong VNPAY
                long vnpayTranId = Convert.ToInt64(vnpay.GetResponseData("vnp_TransactionNo"));
                //vnp_ResponseCode:Response code from VNPAY: 00: Thanh cong, Khac 00: Xem tai lieu
                string vnp_ResponseCode = vnpay.GetResponseData("vnp_ResponseCode");
                //vnp_SecureHash: MD5 cua du lieu tra ve
                String vnp_SecureHash = getRequest.vnp_SecureHash;
                bool checkSignature = vnpay.ValidateSignature(vnp_SecureHash, vnp_HashSecret);
                EmptyCartRemove();
                if (checkSignature)
                {
                    if (vnp_ResponseCode == "00")
                    {
                        try
                        {
                            //Thanh toan thanh cong
                            ViewBag.thongbao = "Thanh toán thành công";
                            var ma = vnpay.GetResponseData("vnp_OrderInfo");
                            var order = _unitOfWork.OrderRepository.Get(x => x.MaDonHang.Equals(ma)).FirstOrDefault();
                            order.Payment = true;
                            order.ThanhToanTruoc = int.TryParse(vnpay.GetResponseData("vnp_Amount"), out int number) ? int.Parse(vnpay.GetResponseData("vnp_Amount")) / 100 : 0;
                            _unitOfWork.OrderRepository.Update(order);
                            _unitOfWork.SaveNotAync();
                            log.InfoFormat("Thanh toan thanh cong, OrderId={0}, VNPAY TranId={1}", orderId, vnpayTranId);
                            await _mailer.SendEmailSync(order.Email, "[" + order.MaDonHang + "] Đơn đặt hàng từ website ShopAsp.Net", "<p>Thanh toán đơn hàng thành công, số hoá đơn:" + orderId + ". Cảm ơn quý khách đã mua hàng !</p>");

                            var model = new CheckOutCompleteViewModel()
                            {
                                OrderID = ma,
                                Contact = _unitOfWork.ContactRepository.Get().FirstOrDefault()
                            };
                            return View(model);
                        }
                        catch (Exception)
                        {
                            ViewBag.thongbao = "Có lỗi xảy ra trong quá trình xử lý.Mã lỗi: " + vnp_ResponseCode;
                            log.InfoFormat("Thanh toan loi, OrderId={0}, VNPAY TranId={1},ResponseCode={2}", orderId, vnpayTranId, vnp_ResponseCode);
                        }

                    }
                    else
                    {
                        //Thanh toan khong thanh cong. Ma loi: vnp_ResponseCode
                        ViewBag.thongbao = "Có lỗi xảy ra trong quá trình xử lý.Mã lỗi: " + vnp_ResponseCode;
                        log.InfoFormat("Thanh toan loi, OrderId={0}, VNPAY TranId={1},ResponseCode={2}", orderId, vnpayTranId, vnp_ResponseCode);
                    }
                }
                else
                {
                    log.InfoFormat("Invalid signature, InputData={0}", Request.QueryString);
                    ViewBag.thongbao = "Có lỗi xảy ra trong quá trình xử lý";
                }
            }
            else
            {
                //Thanh toan khong thanh cong. Ma loi: vnp_ResponseCode
                ViewBag.thongbao = "Lỗi, xin bạn vui lòng thử lại nha ";
                log.InfoFormat("Thanh toan loi");
            }

            return View();
        }