Пример #1
0
        public VnpViewModel GetVnpReturn(VnpOutputModel vnp)
        {
            VnpViewModel vnpOutput = new VnpViewModel();

            try
            {
                BuyPackageHistory apb = cnn.BuyPackageHistories.Find(int.Parse(vnp.vnp_TxnRef));
                int money;
                try
                {
                    money = int.Parse(vnp.vnp_Amount) / 100;
                    if (money != apb.Price)
                    {
                        vnpOutput.getVnpModel(vnp.vnp_TxnRef, string.Format("{0:#,0}", money), apb.CreateDate.ToString("HH:mm:ss dd/MM/yyyy"), SystemParam.Transaction_False);
                        return(vnpOutput);
                    }
                }
                catch
                {
                    vnpOutput.getVnpModel(vnp.vnp_TxnRef, string.Format("{0:#,0}", apb.Price), apb.CreateDate.ToString("HH:mm:ss dd/MM/yyyy"), SystemParam.Transaction_False);
                    return(vnpOutput);
                }

                if (vnp.vnp_ResponseCode == SystemParam.vnp_CodeSucces)
                {
                    if (apb != null && apb.Status == 0)
                    {
                        apb.CodeVNPay = vnp.vnp_TransactionNo;
                        apb.KeyVNPay  = vnp.vnp_SecureHash;
                        cnn.SaveChanges();
                        vnpOutput.getVnpModel(vnp.vnp_TxnRef, string.Format("{0:#,0}", apb.Price), apb.CreateDate.ToString("HH:mm:ss dd/MM/yyyy"), SystemParam.Transaction_Succes);
                    }
                    else
                    {
                        vnpOutput.getVnpModel(vnp.vnp_TxnRef, string.Format("{0:#,0}", apb.Price), apb.CreateDate.ToString("HH:mm:ss dd/MM/yyyy"), SystemParam.Transaction_False);
                    }
                }
                else
                {
                    if (apb != null)
                    {
                        apb.CodeVNPay = vnp.vnp_TransactionNo;
                        apb.KeyVNPay  = vnp.vnp_SecureHash;
                        cnn.SaveChanges();
                    }
                    vnpOutput.getVnpModel(vnp.vnp_TxnRef, string.Format("{0:#,0}", apb.Price), apb.CreateDate.ToString("HH:mm:ss dd/MM/yyyy"), SystemParam.Transaction_False);
                }
            }
            catch
            {
                vnpOutput.getVnpModel(vnp.vnp_TxnRef, "", DateTime.Now.ToString("HH:mm:ss dd/MM/yyyy"), SystemParam.Transaction_False);
            }
            return(vnpOutput);
        }
Пример #2
0
        public VnpViewModel vnp_return(string vnp_Amount, string vnp_BankCode, string vnp_BankTranNo, string vnp_CardType, string vnp_OrderInfo, string vnp_PayDate, string vnp_ResponseCode, string vnp_TmnCode, string vnp_TransactionNo, string vnp_TxnRef, string vnp_SecureHashType, string vnp_SecureHash)
        {
            VnpOutputModel vnp = new VnpOutputModel();

            vnp.vnp_Amount         = vnp_Amount;
            vnp.vnp_BankCode       = vnp_BankCode;
            vnp.vnp_BankTranNo     = vnp_BankTranNo;
            vnp.vnp_CardType       = vnp_CardType;
            vnp.vnp_OrderInfo      = vnp_OrderInfo;
            vnp.vnp_PayDate        = vnp_PayDate;
            vnp.vnp_ResponseCode   = vnp_ResponseCode;
            vnp.vnp_TmnCode        = vnp_TmnCode;
            vnp.vnp_TransactionNo  = vnp_TransactionNo;
            vnp.vnp_TxnRef         = vnp_TxnRef;
            vnp.vnp_SecureHashType = vnp_SecureHashType;
            vnp.vnp_SecureHash     = vnp_SecureHash;
            VnpViewModel output = vnpay.GetVnpReturn(vnp);

            return(output);
        }
Пример #3
0
        public VNPayOutputModel GetVnpIpn(VnpOutputModel vnp)
        {
            VNPayOutputModel output = new VNPayOutputModel();
            int appID = 0;

            try
            {
                try
                {
                    appID = int.Parse(vnp.vnp_TxnRef);
                }
                catch
                {
                    output = output.GetPayOutputModel("Order not found", vnp.vnp_TxnRef, vnp.vnp_TransactionNo, SystemParam.vnp_Return_Rawurl, "01");
                    return(output);
                }
                BuyPackageHistory apb = cnn.BuyPackageHistories.Find(int.Parse(vnp.vnp_TxnRef));
                if (apb != null)
                {
                    int money = 0;
                    try
                    {
                        money = int.Parse(vnp.vnp_Amount) / 100;
                        if (money != apb.Price)
                        {
                            output = output.GetPayOutputModel("Invalid amount", vnp.vnp_TxnRef, vnp.vnp_TransactionNo, "", "04");
                            return(output);
                        }
                    }
                    catch
                    {
                        output = output.GetPayOutputModel("Invalid amount", vnp.vnp_TxnRef, vnp.vnp_TransactionNo, "", "04");
                        return(output);
                    }
                    if (vnp.vnp_TmnCode.Equals(SystemParam.vnp_TmnCode) && vnp.vnp_SecureHash.Equals(apb.KeyVNPay))
                    {
                        if (vnp.vnp_ResponseCode == SystemParam.vnp_CodeSucces)
                        {
                            if (apb.Status == 0)
                            {
                                apb.Status = 1;
                                cnn.SaveChanges();
                                PointBusiness  pBus    = new PointBusiness();
                                int            point   = pBus.CreateAddPointByWarranty(appID, apb.CustomerID, vnp.vnp_TransactionNo);
                                NotifyBusiness noti    = new NotifyBusiness();
                                string         content = "Giao dịch thành công: \n + Mã đơn hàng qua VNPAY: " + vnp.vnp_TxnRef + "\n + Số tiền: " + string.Format("{0:#,0}", apb.Price) + " đ\n + Thời gian: " + DateTime.Now.ToString(SystemParam.CONVERT_DATETIME_HAVE_HOUR);
                                noti.CreateNotiWhenBuyPackage(apb.CustomerID, "Giao dịch đã được thực hiện", content);

                                output = output.GetPayOutputModel("Confirm Success", vnp.vnp_TxnRef, vnp.vnp_TransactionNo, "", vnp.vnp_ResponseCode);
                            }
                            else
                            {
                                output = output.GetPayOutputModel("Order already confirmed", vnp.vnp_TxnRef, vnp.vnp_TransactionNo, "", "02");
                            }
                        }
                        else
                        {
                            if (apb.Status == 0)
                            {
                                apb.Status = 2;
                                cnn.SaveChanges();
                                output = output.GetPayOutputModel("Confirm Success", vnp.vnp_TxnRef, vnp.vnp_TransactionNo, SystemParam.vnp_Return_Rawurl, "00");
                            }
                            else
                            {
                                output = output.GetPayOutputModel("Order already confirmed", vnp.vnp_TxnRef, vnp.vnp_TransactionNo, "", "02");
                            }
                        }
                    }
                    else
                    {
                        output = output.GetPayOutputModel("Invalid signature", vnp.vnp_TxnRef, vnp.vnp_TransactionNo, SystemParam.vnp_Return_Rawurl, "97");
                    }
                }
                else
                {
                    output = output.GetPayOutputModel("Order not found", vnp.vnp_TxnRef, vnp.vnp_TransactionNo, SystemParam.vnp_Return_Rawurl, "01");
                }
            }
            catch
            {
                output = output.GetPayOutputModel("Unknow error", vnp.vnp_TxnRef, vnp.vnp_TransactionNo, SystemParam.vnp_Return_Rawurl, "99");
            }
            return(output);
        }