예제 #1
0
        protected void Page_Load(object sender, EventArgs e)
        {
            string returl = "";
            string errstr = "";
            bool   isok   = false;
            EGO_Pay_ReceiveLogDAL ReceiveLogDAL = new EGO_Pay_ReceiveLogDAL();
            EGO_Pay_ReceiveLog    ReceiveLog    = new EGO_Pay_ReceiveLog();

            PaygateBLL   paydll     = new PaygateBLL();
            ResultPacket resultpage = paydll.DoVerify(Request.Params);

            string ReceiveData = "c_mid=" + Request.Params["c_mid"] + "&c_order=" + Request.Params["c_order"] + "&c_orderamount=" + Request.Params["c_orderamount"] + "&c_ymd=" + Request.Params["c_ymd"] + "&c_transnum=" + Request.Params["c_transnum"] + "&c_succmark=" + Request.Params["c_succmark"] + "&c_cause=" + Request.Params["c_cause"] + "&c_moneytype=" + Request.Params["c_moneytype"] + "&dealtime=" + Request.Params["dealtime"] + "&c_memo1=" + Request.Params["c_memo1"] + "&c_memo2=" + Request.Params["c_memo2"] + "&c_signstr=" + Request.Params["c_signstr"] + "&c_paygate=" + Request.Params["c_paygate"] + "&c_version=" + Request.Params["c_version"];

            ReceiveLog.TradeType   = "pay";
            ReceiveLog.TradeDesp   = "支付网关通知";
            ReceiveLog.ReceiveData = ReceiveData; //;Request.Params.ToString();
            ReceiveLog.Receivetime = DateTime.Now;
            ReceiveLog.OrderNo     = Request.Params["c_order"];
            ReceiveLogDAL.Insert(ReceiveLog);

            if (resultpage.IsError)
            {
                #region 记录用户操作日志
                //try
                //{
                //    memlog.Status = FC_Members_Log.EnumLogStatus.Fail;
                //    memlog.MemID = 0;// Order_List.MemID;
                //    memlog.MerchantID ="00";
                //    memlog.Memo = "支付网关返回失败失败,描述:" + resultpage.Description;
                //    memlog.SessionID = "";
                //    memlog.IP = GetIP.GetRequestIP();
                //    memlog.RequestSerialNo = "";
                //    memlog.ResultMessage = "支付网关返回失败,描述:" + resultpage.Description;
                //    memlog.TradeMerchantID = "00"; // System.Utils.Common.INI.IniReadvalue("System", "MerchantID", _inifile);
                //    new FC_Members_LogDAL().Insert(memlog);
                //}
                //catch
                //{
                //}

                #endregion

                returl = ReturnUrl(0, resultpage.Description);
            }
            else
            {
                EGO_Order_ListDAL Order_ListDAL = new EGO_Order_ListDAL();
                EGO_Order_List    Order_List    = Order_ListDAL.GetModel(Request["c_order"]);
                if (Order_List == null)
                {
                    returl = ReturnUrl(0, "充值订单信息未找到");
                }
                else
                {
                    decimal realPayMoney = Order_List.TotalMoney - Order_List.CouponMoney - Order_List.AccountMoney - Order_List.RebatMoney;
                    if (!(Order_List.Status == EGO_Order_List.EnumOrderStatus.Paying || Order_List.Status == EGO_Order_List.EnumOrderStatus.UserCancel))
                    {
                        returl = ReturnUrl(0, "支付订单状态错误");
                    }
                    if (Order_List.ChipinCodeList != "")
                    {
                        returl = ReturnUrl(0, "支付订单已分配过号码了");
                    }
                    else if (Order_List.BuyerPhone != Request["c_memo1"])
                    {
                        returl = ReturnUrl(0, "订单信息与网关信息不符");
                    }
                    else if (realPayMoney != decimal.Parse(Request["c_orderamount"]))
                    {
                        returl = ReturnUrl(0, "订单金额不一致,数据库:" + realPayMoney.ToString() + ",通知:" + Request["c_orderamount"]);
                    }
                    else
                    {
                        //页面输出,表示网关已通知成功
                        returl = ReturnUrl(1, INITools.GetIniKeyValue("paygate", "handleurl_ego"));

                        DataAccess da = new DataAccess();
                        da.BeginTransaction();
                        try
                        {
                            //网关支付成功
                            Order_List.Status              = EGO_Order_List.EnumOrderStatus.Payed;
                            Order_List.Pay_ResponseTime    = QueryBase.GetDataBaseDate();
                            Order_List.PayGate_Pay_OrderNo = Request["c_transnum"].ToString();
                            int yy = Order_ListDAL.UpdateForPayResult(Order_List, da);

                            if (yy != 1)
                            {
                                returl = ReturnUrl(0, resultpage.Description);
                            }
                            else
                            {
                                /*充值成功,增加充值成功trade_log,等待服务分配chipinCode*/
                                try
                                {
                                    EGO_Trade_LogDAL Trade_LogDAL = new EGO_Trade_LogDAL();
                                    EGO_Trade_Log    model        = new EGO_Trade_Log();
                                    model.OrderID        = Order_List.ID;
                                    model.ProductID      = Order_List.ProductID;
                                    model.PeriodNum      = Order_List.PeriodNum;
                                    model.TradeType      = EnumTradetype.Pay;
                                    model.BuyerPhone     = Order_List.BuyerPhone;
                                    model.MoneyDirect    = EnumMoneydirect.In;
                                    model.BalanceChanged = realPayMoney;
                                    model.TradeOrderNo   = Request["c_transnum"].ToString();
                                    model.CreateTime     = DateTime.Now;
                                    model.PaygateType    = Order_List.PayGateType;
                                    model.Paygate        = Order_List.PayGate;
                                    Trade_LogDAL.Insert(model, da);

                                    isok = true;
                                    da.Commit();

                                    BaseUDPClient udp = new BaseUDPClient();
                                    udp.Command    = 5;
                                    udp.EncryptKey = ConfigurationManager.AppSettings["UDPSecretKey_5"];
                                    udp.RemoteIP   = ConfigurationManager.AppSettings["UDPServerIP_5"];
                                    udp.RemotePort = int.Parse(ConfigurationManager.AppSettings["UDPServerPort_5"]);
                                    udp.Execute();
                                }
                                catch (Exception exx)
                                {
                                    isok   = false;
                                    errstr = exx.ToString();
                                }
                            }
                        }
                        catch (Exception edd)
                        {
                            da.Rollback();
                            //向综合后台增加日志
                            errstr = "网关通知成功,执行后续操作异常,描述:" + edd.ToString();
                        }
                    }
                }
            }

            ReceiveLog.ResponseData = returl;
            ReceiveLog.ResponseTime = DateTime.Now;
            if (resultpage.IsError)
            {
                ReceiveLog.ResultCode = "0";
            }
            else
            {
                ReceiveLog.ResultCode = "1";
            }
            if (isok)
            {
                ReceiveLog.ResultMessage = "通知成功,发起充值成功";
            }
            else
            {
                ReceiveLog.ResultMessage = "通知成功,增加充值日志异常,描述:" + errstr;
                //向综合后台增加日志
                ProjectLogBLL.NotifyProjectLog("通知成功,增加充值日志异常,描述:" + errstr, "pay_result_err");
            }
            ReceiveLogDAL.Update(ReceiveLog);

            Response.Write(returl);
        }
예제 #2
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                string merchantid = INITools.GetIniKeyValue("MobileCZ", "merchantid");

                PaygateBLL paydll  = new PaygateBLL();
                string     showstr = "";
                //ResultPacket resultpackge = paydll.DoVerify(Request.Params);
                //if (!resultpackge.IsError)
                //{

                if (Request.Params["c_order"] == null)
                {
                    ShowResult = "<h2>无效的充值订单信息</h2>";
                }
                else
                {
                    string orderno = Request.Params["c_order"];
                    Response.Redirect("/Order/OrderSuccess.html?orderid=" + orderno, true);
                    return;

                    EGO_Order_ListDAL Order_ListDAL = new EGO_Order_ListDAL();
                    EGO_Order_List    Order_List    = Order_ListDAL.GetModel(Request["c_order"]);
                    if (Order_List == null)
                    {
                        ShowResult = "<h2>无效的充值订单信息</h2>";
                    }
                    else
                    {
                        if (Order_List.TotalMoney != decimal.Parse(Request["c_orderamount"]))
                        {
                            ShowResult = "<h2>订单金额不一致</h2>";
                        }
                        else
                        {
                            //获得商品信息
                            EGO_Product_ListDAL DAL           = new EGO_Product_ListDAL();
                            EGO_Product_List    Product_model = DAL.GetModel(Order_List.ProductID);

                            StringBuilder res = new StringBuilder();

                            if (Order_List.Status == EGO_Order_List.EnumOrderStatus.Payed)
                            {
                                showstr = "支付成功,等待分配号码";
                                res.AppendFormat("<h2>{3}</h2><p>订单号:{0},</p><p>选择商品:{1},</p><p>实际支付:{2}元</p><p></p>", Order_List.OrderNo, Product_model.ProductName, Order_List.TotalMoney.ToString("0.00"), showstr);
                            }
                            else if (Order_List.Status == EGO_Order_List.EnumOrderStatus.Paying)
                            {
                                //resultpackge.Description = "订单支付成功,充值进行中";
                                showstr = "订单中";
                                res.AppendFormat("<h2>{3}</h2><p>订单号:{0},</p><p>选择商品:{1},</p><p>支付金额:{2}元</p><p></p>", Order_List.OrderNo, Product_model.ProductName, Order_List.TotalMoney.ToString("0.00"), showstr);
                            }
                            else
                            {
                                //resultpackge.Description = "订单支付成功,充值进行中";
                                showstr = EnumHelper.GetEnumCNNameFromEnum(typeof(EGO_Order_List.EnumOrderStatus), Order_List.Status);
                                res.AppendFormat("<h2>{3}</h2><p>订单号:{0},</p><p>选择商品:{1},</p><p>支付金额:{2}元</p><p></p>", Order_List.OrderNo, Product_model.ProductName, Order_List.TotalMoney.ToString("0.00"), showstr);
                            }
                            ShowResult = res.ToString();
                        }
                    }

                    //  }
                }
            }
        }