Ejemplo n.º 1
0
        public void Post()
        {
            string Data = DataObj.GetData();

            if (Data.IsNullOrEmpty())
            {
                DataObj.OutError("1000");
                return;
            }
            JObject json = new JObject();

            try
            {
                json = (JObject)JsonConvert.DeserializeObject(Data);
            }
            catch (Exception Ex)
            {
                Log.Write("[Orders]:", "【Data】" + Data, Ex);
            }
            if (json == null)
            {
                DataObj.OutError("1000");
                return;
            }
            Orders Orders = new Orders();

            Orders = JsonToObject.ConvertJsonToModel(Orders, json);

            Users baseUsers = Entity.Users.FirstOrDefault(n => n.Token == Orders.Token);

            if (baseUsers == null)//用户令牌不存在
            {
                DataObj.OutError("2004");
                return;
            }
            if (baseUsers.State != 1)//用户被锁定
            {
                DataObj.OutError("2003");
                return;
            }
            if (baseUsers.CardStae != 2)//未实名认证
            {
                //DataObj.OutError("2006");
                //return;
            }
            if (baseUsers.MiBao != 1)//未设置支付密码
            {
                //DataObj.OutError("2008");
                //return;
            }

            EFPagingInfo <Orders> p = new EFPagingInfo <Orders>();

            if (!Orders.Pg.IsNullOrEmpty())
            {
                p.PageIndex = Orders.Pg;
            }
            if (!Orders.Pgs.IsNullOrEmpty())
            {
                p.PageSize = Orders.Pgs;
            }
            if (!Orders.STime.IsNullOrEmpty())
            {
                p.SqlWhere.Add(f => f.AddTime >= Orders.STime);
            }
            if (!Orders.ETime.IsNullOrEmpty())
            {
                Orders.ETime = Orders.ETime.AddHours(24);
                p.SqlWhere.Add(f => f.AddTime <= Orders.ETime);
            }
            if (!Orders.IdCardState.IsNullOrEmpty())
            {//凭证状态
                if (Orders.IdCardState == 99)
                {
                    p.SqlWhere.Add(f => f.IdCardState == 0);
                }
                else if (Orders.IdCardState == 98)
                {
                    p.SqlWhere.Add(f => f.IdCardState == 1 || f.IdCardState == 2 || f.IdCardState == 4);
                }
                else
                {
                    p.SqlWhere.Add(f => f.IdCardState == Orders.IdCardState);
                }
            }

            bool IsOld = true;

            #region 版本比较 升级之后比较长时间后可以考滤删除版本判断代码
            //处理贴牌相关
            var SysAgent = this.Entity.SysAgent.FirstOrDefault(o => o.Id == baseUsers.Agent);
            if (SysAgent == null)
            {
                DataObj.OutError("1000");
                return;
            }
            var topSysAgent = SysAgent.GetTopAgent(this.Entity);

            if (!Equipment.SoftVer.IsNullOrEmpty())
            {
                Version v1 = new Version(Equipment.SoftVer);//当前版本
                Version v2 = new Version("1.0");

                if (Equipment.RqType.ToLower() == "apple")
                {
                    //苹果
                    if (topSysAgent.IsTeiPai == 0)//好付
                    {
                        v2 = new Version("8.0");
                    }
                    else//贴牌
                    {
                        v2 = new Version("6.0");
                    }
                }
                else if (Equipment.RqType.ToLower() == "android")
                {
                    //安卓
                    if (topSysAgent.IsTeiPai == 0)//好付
                    {
                        v2 = new Version("8.0.0");
                    }
                    else //贴牌
                    {
                        v2 = new Version("6.0");
                    }
                }
                if (v1 >= v2)
                {
                    IsOld = false;
                }
            }
            #endregion
            if (!IsOld)//新版
            {
                #region 4.0条件判断
                if (!(Orders.TType == 3 && Orders.TState == 3))
                {
                    p.SqlWhere.Add(o => o.UId == baseUsers.Id);
                }
                if (!Orders.TType.IsNullOrEmpty())
                {
                    p.SqlWhere.Add(f => f.TType == Orders.TType);//读取对应的类型
                    if (Orders.TType == 1)
                    {
                        if (!Orders.TState.IsNullOrEmpty())
                        {
                            switch (Orders.TState)
                            {
                            case 1:    //未付
                                p.SqlWhere.Add(f => f.TState == 1 && f.PayState == 0);
                                break;

                            case 2:    //已付
                                p.SqlWhere.Add(f => f.TState == 2 && f.PayState == 1);
                                break;

                            case 3:    //待传证照
                                p.SqlWhere.Add(f => f.PayState == 1 && f.IdCardState == 1);
                                break;

                            case 4:    //待审核/已传证照
                                p.SqlWhere.Add(f => f.PayState == 1 && f.IdCardState == 2);
                                break;

                            case 5:    //审核失败
                                p.SqlWhere.Add(f => f.PayState == 1 && f.IdCardState == 4);
                                break;

                            case 6:    //退单
                                p.SqlWhere.Add(f => f.TState == 4);
                                break;

                            case 7:    //待入帐
                                p.SqlWhere.Add(f => f.TState == 1 && f.PayState == 1 && f.InState == 0);
                                break;
                            }
                        }
                    }
                    if (Orders.TType == 2)
                    {
                        switch (Orders.TState)
                        {
                        case 1:    //处理中
                            p.SqlWhere.Add(f => f.TState == 1);
                            break;

                        case 2:    //已汇出
                            p.SqlWhere.Add(f => f.TState == 2 && f.PayState == 2);
                            break;

                        case 3:    //提现失败
                            p.SqlWhere.Add(f => f.TState == 3);
                            break;

                        case 4:    //出款中
                            p.SqlWhere.Add(f => f.TState == 2 && f.PayState == 1);
                            break;

                        case 5:    //退款
                            p.SqlWhere.Add(f => f.TState == 2 && f.PayState == 4);
                            break;

                        case 6:    //退款中
                            p.SqlWhere.Add(f => f.TState == 2 && f.PayState == 3);
                            break;
                        }
                    }
                    if (Orders.TType == 3)
                    {
                        switch (Orders.TState)
                        {
                        case 1:    //未付
                            p.SqlWhere.Add(f => f.TState == 1 && f.PayState == 0);
                            break;

                        case 2:    //已付
                            p.SqlWhere.Add(f => f.TState == 2 && f.PayState == 1);
                            break;

                        case 3:    //已收
                            p.SqlWhere.Add(f => f.TState == 2 && f.PayState == 1 && f.RUId == baseUsers.Id);
                            break;
                        }
                    }
                    if (Orders.TType == 6)
                    {
                        if (!Orders.TState.IsNullOrEmpty())
                        {
                            p.SqlWhere.Add(f => f.TState == Orders.TState);
                        }
                    }
                    if (Orders.TType == 7 || Orders.TType == 8)
                    {
                        if (!Orders.TState.IsNullOrEmpty())
                        {
                            if (Orders.TState == 99)
                            {
                                p.SqlWhere.Add(f => f.TState == 0);
                            }
                            if (Orders.TState == 1)
                            {
                                p.SqlWhere.Add(f => f.TState == 1 && f.PayState == 0);
                            }
                            if (Orders.TState == 2)
                            {
                                p.SqlWhere.Add(f => f.TState == 2 && f.PayState == 1);
                            }
                            if (Orders.TState == 3)//退单
                            {
                                p.SqlWhere.Add(f => f.TState == 4);
                            }
                            if (Orders.TState == 4)//待入帐
                            {
                                p.SqlWhere.Add(f => f.TState == 1 && f.PayState == 1 && f.InState == 0);
                            }
                            if (Orders.TState == 5)//待审核/已传证照
                            {
                                p.SqlWhere.Add(f => f.PayState == 1 && f.InState == 1 && f.IdCardState == 2);
                            }
                            if (Orders.TState == 6)//待传证照
                            {
                                p.SqlWhere.Add(f => f.PayState == 1 && f.InState == 1 && f.IdCardState == 1);
                            }
                            if (Orders.TState == 7)//审核失败
                            {
                                p.SqlWhere.Add(f => f.PayState == 1 && f.InState == 1 && f.IdCardState == 4);
                            }
                        }
                    }
                }
                else
                {
                    if (!Orders.TState.IsNullOrEmpty())
                    {
                        if (Orders.TState == 99)
                        {
                            p.SqlWhere.Add(f => f.TState == 0);
                        }
                        if (Orders.TState == 1)
                        {
                            p.SqlWhere.Add(f => f.PayState == 1);
                        }
                        if (Orders.TState == 2)
                        {
                            p.SqlWhere.Add(f => f.PayState == 0 && f.TState != 0);
                        }
                    }
                }
                #endregion
            }
            else
            {
                #region 4.0之前条件判断
                //搜索
                if (Orders.TType.IsNullOrEmpty())
                {//不限类型,读取收支交易,收款订单只显示已支付订单
                    p.SqlWhere.Add(f => f.UId == baseUsers.Id || (f.RUId == baseUsers.Id && f.PayState == 1) && f.TType != 2);
                }
                else
                {
                    if (Orders.TType == 4)
                    {
                        //已支付收款订单
                        p.SqlWhere.Add(f => f.TType == 3);
                        p.SqlWhere.Add(f => f.RUId == baseUsers.Id && f.PayState == 1);
                    }
                    else if (Orders.TType == 95)
                    { //转帐单
                        p.SqlWhere.Add(f => f.TType == 3);
                        p.SqlWhere.Add(f => (f.RUId == baseUsers.Id && f.PayState == 1) || f.UId == baseUsers.Id);
                    }
                    else if (Orders.TType == 96)   //收款订单
                    {
                        p.SqlWhere.Add(f => (f.TType == 3 && f.RUId == baseUsers.Id && f.PayState == 1) || (f.TType == 1 && f.UId == baseUsers.Id));
                    }
                    else
                    {
                        p.SqlWhere.Add(f => f.TType == Orders.TType);
                        p.SqlWhere.Add(f => f.UId == baseUsers.Id);
                    }
                }
                if (!Orders.TState.IsNullOrEmpty())  //交易状态
                {
                    p.SqlWhere.Add(f => f.TState == Orders.TState);
                }
                if (!Orders.PayState.IsNullOrEmpty()) //支付状态
                {
                    if (Orders.PayState == 99)
                    {
                        Orders.PayState = 0;
                    }
                    p.SqlWhere.Add(f => f.PayState == Orders.PayState);
                }
                #endregion
            }

            p.OrderByList.Add("Id", "DESC");
            IPageOfItems <Orders> List = Entity.Selects <Orders>(p);
            //处理转帐订单
            foreach (var pp in List)
            {
                pp.Cols = pp.Cols + ",Json,PicList,UserCardName,CardUpdateTime";
                if (baseUsers.Id == pp.RUId)
                {
                    pp.TType = 4;
                }
                JObject JS = new JObject();
                if (pp.TType == 1)
                { //银联卡支付
                    OrderRecharge OrderRecharge = Entity.OrderRecharge.FirstOrNew(n => n.OId == pp.TNum);
                    OrderRecharge.Cols = "Amoney,PayMoney,Poundage,PayType";
                    string JsStr = OrderRecharge.OutJson();
                    try
                    {
                        JS = (JObject)JsonConvert.DeserializeObject(JsStr);
                    }
                    catch (Exception Ex)
                    {
                        Log.Write("[Order]:", "【JsStr】" + JsStr, Ex);
                    }
                    pp.Json = JS;
                }
                if (pp.TType == 2)//提现不能取消
                {
                    OrderCash OrderCash = Entity.OrderCash.FirstOrNew(n => n.OId == pp.TNum);
                    OrderCash.Cols     = "Owner,Bank,CardNum,Deposit,Mobile,Province,City,District,Amoney,UserRate,TrunType,PayMoney";
                    OrderCash.PayMoney = OrderCash.Amoney - (decimal)OrderCash.UserRate;
                    string JsStr = OrderCash.OutJson();
                    try
                    {
                        JS = (JObject)JsonConvert.DeserializeObject(JsStr);
                    }
                    catch (Exception Ex)
                    {
                        Log.Write("[Order]:", "【JsStr】" + JsStr, Ex);
                    }
                    pp.Json = JS;
                }
                if (pp.TType == 3 || pp.TType == 4)//付款
                {
                    OrderTransfer OrderTransfer = Entity.OrderTransfer.FirstOrNew(n => n.OId == pp.TNum);
                    Users         Users         = new Users();
                    if (pp.TType == 4)
                    {
                        Users = Entity.Users.FirstOrNew(n => n.Id == OrderTransfer.UId);
                    }
                    if (pp.TType == 3)
                    {
                        Users = Entity.Users.FirstOrNew(n => n.Id == OrderTransfer.RUId);
                    }
                    OrderTransfer.Mobile     = Users.UserName;
                    OrderTransfer.ToUserName = Users.TrueName;
                    OrderTransfer.Cols       = "UId,RUId,PayMoney,Poundage,Amoney,Mobile,ToUserName";
                    string JsStr = OrderTransfer.OutJson();
                    try
                    {
                        JS = (JObject)JsonConvert.DeserializeObject(JsStr);
                    }
                    catch (Exception Ex)
                    {
                        Log.Write("[Order]:", "【JsStr】" + JsStr, Ex);
                    }
                    pp.Json = JS;
                }
                if (pp.TType == 5)//防租
                {
                    OrderHouse OrderHouse = Entity.OrderHouse.FirstOrNew(n => n.OId == pp.TNum);
                    OrderHouse.Cols = "HouseOwner,Bank,CardNum,Deposit,Mobile,MonthRent,SecurityMoney,PayMonth,Poundage,Amoney";
                    string JsStr = OrderHouse.OutJson();
                    try
                    {
                        JS = (JObject)JsonConvert.DeserializeObject(JsStr);
                    }
                    catch (Exception Ex)
                    {
                        Log.Write("[Order]:", "【JsStr】" + JsStr, Ex);
                    }
                    pp.Json = JS;
                }
                if (pp.TType == 6)
                { //升级
                    //PayConfigOrder PayConfigOrder = Entity.PayConfigOrder.FirstOrNew(n => n.OId == pp.TNum);
                    //Out = Out + "," + PayConfigOrder.ToStr();
                    pp.Poundage = 0;
                }
                if (pp.TType == 7 || pp.TType == 8 || pp.TType == 9)
                { //扫码
                    OrderF2F OrderF2F = Entity.OrderF2F.FirstOrNew(n => n.OId == pp.TNum);
                    OrderF2F.Cols = "Amoney,PayMoney,Poundage";
                    string JsStr = OrderF2F.OutJson();
                    try
                    {
                        JS = (JObject)JsonConvert.DeserializeObject(JsStr);
                    }
                    catch (Exception Ex)
                    {
                        Log.Write("[Order]:", "【JsStr】" + JsStr, Ex);
                    }
                    pp.Json = JS;
                }
                if (pp.TType == 10)
                {//代理
                }
                pp.DoRemark(Entity);
                pp.StateTxt = pp.GetState();
                if (pp.RUId == baseUsers.Id && pp.PayState == 1)
                {
                    pp.StateTxt = "已收";
                }
                if (pp.IdCardState > 1)
                {
                    pp.Remark = pp.DDAuditRemark;
                }
                if (!pp.Remark.IsNullOrEmpty())
                {
                    pp.Remark = pp.Remark.Replace("\t", "");
                }
                if (!pp.UserCardPic.IsNullOrEmpty())
                {
                    var UserCardPicList = pp.UserCardPic.Split(',').ToList();
                    for (int i = 0; i < UserCardPicList.Count; i++)
                    {
                        var a = Utils.ImageUrl("Orders", UserCardPicList[i], AppImgPath);
                        UserCardPicList[i] = a;
                    }
                    JavaScriptSerializer JSS = new JavaScriptSerializer();
                    string data = JSS.Serialize(UserCardPicList);
                    JArray JO   = (JArray)JsonConvert.DeserializeObject(data);
                    pp.PicList = JO;
                }
            }

            IList <OrdersModel> OML = Utils.GetOrdersModel();
            OML = OML.Where(n => n.Id != 10).ToList();
            foreach (var P in OML)
            {
                if (P.Id == 3)
                {
                    P.Id = 95;
                }
            }

            IList <Orders> iList = List.ToList();
            StringBuilder  sb    = new StringBuilder("");
            sb.Append("{");
            sb.Append(List.PageToString());
            sb.Append(",");
            sb.Append(iList.EntityToString());
            sb.Append(",");
            sb.Append(OML.EntityToString());

            sb.Append(",\"state\":{");
            sb.Append("\"0\":[{\"key\":\"交易关闭\",\"value\":\"99\"},{\"key\":\"已付\",\"value\":\"1\"},{\"key\":\"未付\",\"value\":\"2\"}],");
            sb.Append("\"1\":[{\"key\":\"未付\",\"value\":\"1\"},{\"key\":\"已付\",\"value\":\"2\"},{\"key\":\"待传证照\",\"value\":\"3\"},{\"key\":\"已传证照\",\"value\":\"4\"},{\"key\":\"审核失败\",\"value\":\"5\"},{\"key\":\"退单\",\"value\":\"6\"},{\"key\":\"待入账\",\"value\":\"7\"}],");
            sb.Append("\"2\":[{\"key\":\"处理中\",\"value\":\"1\"},{\"key\":\"已汇出\",\"value\":\"2\"},{\"key\":\"提现失败\",\"value\":\"3\"},{\"key\":\"出款中\",\"value\":\"4\"},{\"key\":\"已退款\",\"value\":\"5\"},{\"key\":\"退款中\",\"value\":\"6\"}],");
            sb.Append("\"3\":[{\"key\":\"未付\",\"value\":\"1\"},{\"key\":\"已付\",\"value\":\"2\"},{\"key\":\"已收\",\"value\":\"3\"}],");
            sb.Append("\"6\":[{\"key\":\"交易关闭\",\"value\":\"99\"},{\"key\":\"未付\",\"value\":\"1\"},{\"key\":\"已付\",\"value\":\"2\"}],");
            sb.Append("\"7\":[{\"key\":\"交易关闭\",\"value\":\"99\"},{\"key\":\"进行中\",\"value\":\"1\"},{\"key\":\"已付\",\"value\":\"2\"},{\"key\":\"退单\",\"value\":\"3\"},{\"key\":\"待入账\",\"value\":\"4\"},{\"key\":\"已传证照\",\"value\":\"5\"},{\"key\":\"待传证照\",\"value\":\"6\"},{\"key\":\"审核失败\",\"value\":\"7\"}],");
            sb.Append("\"8\":[{\"key\":\"交易关闭\",\"value\":\"99\"},{\"key\":\"进行中\",\"value\":\"1\"},{\"key\":\"已付\",\"value\":\"2\"},{\"key\":\"退单\",\"value\":\"3\"},{\"key\":\"待入账\",\"value\":\"4\"},{\"key\":\"已传证照\",\"value\":\"5\"},{\"key\":\"待传证照\",\"value\":\"6\"},{\"key\":\"审核失败\",\"value\":\"7\"}]");
            sb.Append("},");

            sb.Append("\"type\":[{\"key\":\"0\",\"value\":\"全部\"},{\"key\":\"1\",\"value\":\"银联卡支付\"},{\"key\":\"2\",\"value\":\"提现\"},{\"key\":\"3\",\"value\":\"转账\"},{\"key\":\"6\",\"value\":\"升级\"},{\"key\":\"7\",\"value\":\"支付宝\"},{\"key\":\"8\",\"value\":\"微信\"}]");

            sb.Append("}");
            DataObj.Data = sb.ToString();
            DataObj.Code = "0000";
            DataObj.OutString();
        }
        public void Post()
        {
            string Data = DataObj.GetData();

            if (Data.IsNullOrEmpty())
            {
                DataObj.OutError("1000");
                return;
            }
            JObject json = new JObject();

            try
            {
                json = (JObject)JsonConvert.DeserializeObject(Data);
            }
            catch (Exception Ex)
            {
                Log.Write("[OrderQC]:", "【Data】" + Data, Ex);
                json = null;
            }
            if (json == null)
            {
                DataObj.OutError("1000");
                return;
            }
            OrderF2F OrderF2F = new OrderF2F();

            OrderF2F = JsonToObject.ConvertJsonToModel(OrderF2F, json);

            UserTrack UserTrack = new UserTrack();

            UserTrack = JsonToObject.ConvertJsonToModel(UserTrack, json);

            #region 获取并处理用户信息
            Users baseUsers = Entity.Users.FirstOrDefault(n => n.Token == OrderF2F.Token);
            if (baseUsers == null)//用户令牌不存在
            {
                DataObj.OutError("2004");
                return;
            }
            if (baseUsers.State != 1)//用户被锁定
            {
                DataObj.OutError("2003");
                return;
            }
            if (baseUsers.CardStae != 2)//未实名认证
            {
                //DataObj.OutError("2006");
                //return;
            }
            if (baseUsers.MiBao != 1)//未设置支付密码
            {
                //DataObj.OutError("2008");
                //return;
            }
            string NeekName = baseUsers.NeekName;
            if (NeekName.IsNullOrEmpty())
            {
                NeekName = baseUsers.TrueName;
            }
            if (NeekName.IsNullOrEmpty())
            {
                NeekName = "货款";
            }
            #endregion
            #region 创建交易
            if (OrderF2F.Action == "Create")
            {
                #region 处理选择通道
                int PayWay = OrderF2F.PayWay;

                string Tag     = "";
                byte   PayType = 1;
                string PayName = "";
                string OpenId  = ""; //微信JSAPI专用
                if (OrderF2F.OType == 7)
                {                    //支付宝
                    Tag = "AliPay";
                }
                if (OrderF2F.OType == 8)
                {//微信
                    Tag = "WeiXin";
                }

                if (PayWay.IsNullOrEmpty())
                {
                    if (Tag == "AliPay")
                    {
                        PayWay = 5;//兼容老版本
                    }
                    if (Tag == "WeiXin")
                    {
                        PayWay = 6;//兼容老版本
                    }
                }

                PayConfig PayConfig = Entity.PayConfig.FirstOrDefault(n => n.Id == PayWay && n.State == 1);
                //获取系统支付配置
                if (PayConfig == null)
                {
                    DataObj.OutError("1000");
                    return;
                }
                if (PayConfig.GroupType != Tag)
                {
                    DataObj.OutError("1000");
                    return;
                }
                PayName = "扫码付-" + PayConfig.Name;
                byte ComeWay = 1;
                if (!OrderF2F.PayId.IsNullOrEmpty())
                {
                    if (OrderF2F.PayId == "shop")
                    {
                        ComeWay = 2;
                    }
                    PayName = "收银台-" + PayConfig.Name;
                    if (OrderF2F.OType == 7)
                    {
                        if (OrderF2F.PayId == "shop")
                        {
                            OrderF2F.PayId = string.Empty;
                            PayType        = 2;
                        }
                    }
                    if (OrderF2F.OType == 8)
                    {
                        OpenId         = OrderF2F.PayId;
                        OrderF2F.PayId = string.Empty;
                        PayType        = 2;
                    }
                }
                int InType = 0;
                if (!OrderF2F.InType.IsNullOrEmpty())
                {
                    InType = 1;
                }
                SysControl SysControl = new SysControl();
                bool       IsNew      = true;
                if (OrderF2F.Id.IsNullOrEmpty())
                {
                    //这是旧逻辑,有一些旧版还在用
                    #region 版本比较 升级之后比较长时间后可以考滤删除版本判断代码
                    var vSysAgent = this.Entity.SysAgent.FirstOrDefault(o => o.Id == baseUsers.Agent);
                    if (vSysAgent == null)
                    {
                        DataObj.OutError("1000");
                        return;
                    }
                    IsNew = BizExt.NewOrOldVersion(vSysAgent, Equipment, this.Entity);
                    #endregion
                    if (IsNew)//新版
                    {
                        if (InType == 1)
                        {
                            SysControl = Entity.SysControl.FirstOrDefault(n => n.Tag == Tag && n.PayWay == PayWay && n.LagEntryDay > 0);
                        }
                        else
                        {
                            SysControl = Entity.SysControl.FirstOrDefault(n => n.Tag == Tag && n.PayWay == PayWay && n.LagEntryDay == 0);
                        }
                    }
                    else//旧版
                    {
                        SysControl = Entity.SysControl.FirstOrDefault(n => n.Tag == Tag && n.PayWay == PayWay);
                    }
                }
                else
                {
                    SysControl = Entity.SysControl.FirstOrDefault(n => n.Id == OrderF2F.Id);
                    if (SysControl.LagEntryDay > 0)
                    {
                        InType = 1;
                    }
                    else
                    {
                        InType = 0;
                    }
                }
                //获取系统支付配置
                if (SysControl == null)
                {
                    DataObj.OutError("1005");
                    return;
                }
                if (InType == 1 && (SysControl.LagEntryDay.IsNullOrEmpty() || SysControl.LagEntryNum.IsNullOrEmpty()))
                {
                    DataObj.Msg = "请升级到最新版再发起Tn到帐交易!";
                    DataObj.OutError("1005");
                    return;
                }
                SysControl syscontrol = SysControl.ChkState();
                if (syscontrol.State != 1)
                {
                    DataObj.OutError("1005");
                    return;
                }
                #endregion

                #region 订单生成
                //处理交易地点
                if (OrderF2F.X.IsNullOrEmpty() || OrderF2F.Y.IsNullOrEmpty())
                {
                    DataObj.OutError("1000");
                    return;
                }
                //开始处理参数 OType通道,7支付宝,8微信
                if (OrderF2F.Amoney.IsNullOrEmpty() || OrderF2F.OType.IsNullOrEmpty())
                {
                    DataObj.OutError("1000");
                    return;
                }
                OrderF2F.Amoney = OrderF2F.Amoney.FormatMoney();

                //获取用户支付配置
                UserPay UserPay = Entity.UserPay.FirstOrDefault(n => n.UId == baseUsers.Id && n.PId == PayWay);
                if (UserPay == null)
                {
                    DataObj.OutError("1000");
                    return;
                }
                //获取分支机构信息
                SysAgent SysAgent = new SysAgent();
                if (!baseUsers.Agent.IsNullOrEmpty())
                {
                    SysAgent = Entity.SysAgent.FirstOrNew(n => n.Id == baseUsers.Agent);
                }

                OrderF2F.PayWay = PayWay;

                //获取系统配置
                SysSet SysSet = Entity.SysSet.FirstOrDefault();
                if (InType == 1)
                {//客户端传来T+N但是系统没开启时无效
                    if (SysSet.LagEntry == 0)
                    {
                        InType = 0;
                    }
                }
                if (InType == 1)
                {
                    //手续费
                    OrderF2F.Poundage = 0;
                    //商户费率
                    OrderF2F.UserRate = 0;
                    //T+n时,代理佣金为 交易金额*费率
                    decimal AgentPayGet = OrderF2F.Amoney * SysSet.AgentGet;
                    OrderF2F.AgentPayGet = (Double)AgentPayGet;
                    //佣金舍位
                    OrderF2F.AgentPayGet = OrderF2F.AgentPayGet.Floor();
                }
                else
                {
                    //手续费
                    OrderF2F.Poundage = OrderF2F.Amoney * (decimal)UserPay.Cost;
                    //手续费取进
                    OrderF2F.Poundage = OrderF2F.Poundage.Ceiling();
                    //商户费率
                    OrderF2F.UserRate = UserPay.Cost;
                    //分支机构佣金设置为0,待分润计算后再写入
                    OrderF2F.AgentPayGet = 0;
                }

                OrderF2F.UId = baseUsers.Id;
                //到帐金额=支付金额-手续费
                OrderF2F.PayMoney = OrderF2F.Amoney - OrderF2F.Poundage;
                //第三方支付通道率
                OrderF2F.SysRate = (double)PayConfig.Cost;
                //这里是利润计算==========
                //利润=总金额-到帐-支付手续费
                decimal GetAll = OrderF2F.Amoney - OrderF2F.PayMoney - OrderF2F.Amoney * (decimal)OrderF2F.SysRate;
                //利润舍位
                GetAll = GetAll.Floor();
                //总利润
                OrderF2F.AIdPayGet = (double)GetAll;


                OrderF2F.Agent      = SysAgent.Id;//分支机构Id
                OrderF2F.AId        = baseUsers.AId;
                OrderF2F.FId        = 0;
                OrderF2F.OrderState = 1;
                OrderF2F.PayState   = 0;
                OrderF2F.AgentState = 0;
                OrderF2F.AddTime    = DateTime.Now;
                OrderF2F.PayId      = string.Empty;
                OrderF2F.PayType    = PayType;

                //写入前,判断交易金额限制
                if (OrderF2F.Amoney < syscontrol.SNum || OrderF2F.Amoney > syscontrol.ENum)
                {
                    DataObj.OutError("1006");
                    return;
                }
                //写入订单总表
                Orders Orders = new Orders();
                Orders.UId   = OrderF2F.UId;
                Orders.TName = NeekName;

                Orders.PayType = PayType;
                Orders.PayName = PayName;

                Orders.RUId     = 0;
                Orders.RName    = string.Empty;
                Orders.TType    = OrderF2F.OType;
                Orders.TState   = 1;
                Orders.Amoney   = OrderF2F.Amoney;
                Orders.Poundage = OrderF2F.Poundage;
                Orders.AddTime  = DateTime.Now;
                Orders.PayState = 0;
                Orders.PayWay   = PayConfig.Id;

                Orders.Agent      = OrderF2F.Agent;
                Orders.AgentState = 0;
                Orders.AId        = OrderF2F.AId;
                Orders.FId        = 0;
                Orders.ComeWay    = ComeWay;
                string OrderAddress = OrderF2F.OrderAddress;
                if (OrderAddress.IsNullOrEmpty())
                {
                    OrderAddress = Utils.GetAddressByGPS(OrderF2F.X, OrderF2F.Y);
                }
                Orders.OrderAddress = OrderAddress;
                Orders.X            = OrderF2F.X;
                Orders.Y            = OrderF2F.Y;

                if (InType == 1)
                {
                    if (IsNew)//新版
                    {
                        Orders.LagEntryDay = SysControl.LagEntryDay;
                        Orders.LagEntryNum = SysControl.LagEntryNum;
                    }
                    else
                    {
                        Orders.LagEntryDay = SysSet.LagEntryDay;
                        Orders.LagEntryNum = SysSet.LagEntryNum;
                    }
                }
                else
                {
                    Orders.LagEntryDay = 0;
                    Orders.LagEntryNum = 0;
                }

                Entity.Orders.AddObject(Orders);
                Entity.SaveChanges();
                Entity.Refresh(RefreshMode.StoreWins, Orders);

                OrderF2F.OId = Orders.TNum;
                Entity.OrderF2F.AddObject(OrderF2F);
                Entity.SaveChanges();

                //=======================================
                UserTrack.ENo        = DataObj.ENo;
                UserTrack.OPType     = Orders.PayName;
                UserTrack.UserName   = Orders.TNum;
                UserTrack.GPSAddress = Orders.OrderAddress;
                UserTrack.GPSX       = Orders.X;
                UserTrack.GPSY       = Orders.Y;
                if (!OrderF2F.IP.IsNullOrEmpty())
                {
                    UserTrack.IP = OrderF2F.IP;
                }
                Orders.SeavGPSLog(UserTrack, Entity);
                //=======================================

                #endregion

                if (PayConfig.DllName == "AliPay")
                {
                    #region 提交支付宝
                    string[] PayConfigArr = PayConfig.QueryArray.Split(new char[] { ',' });    //接口信息 商户号,密钥,支付宝号
                    if (PayConfigArr.Length != 3)
                    {
                        DataObj.OutError("9999");
                        return;
                    }
                    if (AlipayVer == "1.0")
                    {
                        #region 1.0老接口
                        Submit Submit = new Submit();
                        Submit.pid = PayConfigArr[0];
                        Submit.key = PayConfigArr[1];
                        //卖家支付宝帐户
                        string seller_email = PayConfigArr[2];

                        //订单业务类型
                        string product_code = "QR_CODE_OFFLINE";
                        //SOUNDWAVE_PAY_OFFLINE:声波支付,FINGERPRINT_FAST_PAY:指纹支付,BARCODE_PAY_OFFLINE:条码支付

                        ////////////////////////////////////////////////////////////////////////////////////////////////
                        //把请求参数打包成数组
                        SortedDictionary <string, string> sParaTemp = new SortedDictionary <string, string>();
                        sParaTemp.Add("partner", Submit.pid);
                        sParaTemp.Add("_input_charset", "utf-8");
                        sParaTemp.Add("service", "alipay.acquire.precreate");

                        sParaTemp.Add("out_trade_no", OrderF2F.OId);
                        sParaTemp.Add("subject", Orders.TName + ":" + OrderF2F.OId);
                        sParaTemp.Add("product_code", product_code);
                        sParaTemp.Add("total_fee", OrderF2F.Amoney.ToString("F2"));
                        sParaTemp.Add("seller_email", seller_email);

                        sParaTemp.Add("notify_url", NoticePath + "/PayCenter/AliPay/Notice.html");
                        //建立请求
                        string sHtmlText = Submit.BuildRequest(sParaTemp);
                        Utils.WriteLog(sHtmlText, "orderface");
                        try
                        {
                            XmlDocument xmlDoc = new XmlDocument();
                            xmlDoc.LoadXml(sHtmlText);
                            string is_success = xmlDoc.SelectSingleNode("/alipay/is_success").InnerText;
                            if (is_success == "T")
                            {
                                string result_code = xmlDoc.SelectSingleNode("/alipay/response/alipay/result_code").InnerText;
                                if (result_code == "SUCCESS")
                                {
                                    //成功
                                    string qr_code = xmlDoc.SelectSingleNode("/alipay/response/alipay/qr_code").InnerText;

                                    /*
                                     * voucher_type 凭证类型
                                     * qr_code 二维码码串
                                     * pic_url 二维码图片地址
                                     * small_pic_ur 二维码小图地址
                                     */
                                    OrderF2F.PayId = qr_code;
                                    Entity.SaveChanges();
                                    Orders.PayId = qr_code;
                                }
                                else
                                {
                                    Orders.TState       = 0;
                                    OrderF2F.OrderState = 0;
                                    Entity.SaveChanges();
                                }
                            }
                            else
                            {
                                Orders.TState       = 0;
                                OrderF2F.OrderState = 0;
                                Entity.SaveChanges();
                            }
                        }
                        catch (Exception)
                        {
                            //Utils.WriteLog(Ex.ToString());
                            Orders.TState       = 0;
                            OrderF2F.OrderState = 0;
                            Entity.SaveChanges();
                        }
                        #endregion
                    }
                    if (AlipayVer == "2.0")
                    {
                        #region 2.0新接口

                        ALF2FPAY ALF2FPAY = new ALF2FPAY();
                        ALF2FPAY.pid   = PayConfigArr[0];
                        ALF2FPAY.appId = PayConfigArr[2];
                        IAopClient    client = new DefaultAopClient(ALF2FPAY.serverUrl, ALF2FPAY.appId, ALF2FPAY.merchant_private_key, "json", ALF2FPAY.version, ALF2FPAY.sign_type, ALF2FPAY.alipay_public_key, ALF2FPAY.charset);
                        StringBuilder sb     = new StringBuilder();
                        sb.Append("{");
                        sb.Append("\"out_trade_no\":\"" + OrderF2F.OId + "\",");
                        sb.Append("\"total_amount\":\"" + OrderF2F.Amoney.ToMoney() + "\",");
                        sb.Append("\"timeout_express\":\"30m\",");
                        sb.Append("\"subject\":\"" + OrderF2F.OId + "\"");
                        sb.Append("}");
                        AlipayTradePrecreateRequest payRequst = new AlipayTradePrecreateRequest();

                        string notify_url = NoticePath + "/PayCenter/AliPay/Notice.html";
                        payRequst.SetNotifyUrl(notify_url);

                        payRequst.BizContent = sb.ToString();

                        Dictionary <string, string>  paramsDict  = (Dictionary <string, string>)payRequst.GetParameters();
                        AlipayTradePrecreateResponse payResponse = client.Execute(payRequst);

                        if (payResponse != null)
                        {
                            payResponse.SaveLog(Entity);    //保存记录
                            if (payResponse.Code == "10000")
                            {
                                OrderF2F.PayId = payResponse.QrCode;
                                Entity.SaveChanges();
                                Orders.PayId = payResponse.QrCode;
                            }
                            else
                            {
                                Orders.TState       = 0;
                                OrderF2F.OrderState = 0;
                                Entity.SaveChanges();
                            }
                        }
                        else
                        {
                            Orders.TState       = 0;
                            OrderF2F.OrderState = 0;
                            Entity.SaveChanges();
                        }
                        #endregion
                    }
                    #endregion
                }
                if (PayConfig.DllName == "WeiXin")
                {
                    #region 提交微信
                    //初始化支付配置
                    WxPayConfig WxPayConfig  = new WxPayConfig();
                    string[]    PayConfigArr = PayConfig.QueryArray.Split(new char[] { ',' }); //接口信息 appid,mchid,key,appsecret
                    if (PayConfigArr.Length != 4 && PayConfigArr.Length != 5)
                    {
                        DataObj.OutError("9999");
                        return;
                    }
                    string ServerIp     = ConfigurationManager.AppSettings["ServerIp"].ToString();
                    string Wx_Cert_Path = ConfigurationManager.AppSettings["Wx_Cert_Path"].ToString();
                    string Wx_Cert_PWD  = ConfigurationManager.AppSettings["Wx_Cert_PWD"].ToString();
                    WxPayConfig.IP        = ServerIp;
                    WxPayConfig.APPID     = PayConfigArr[0];
                    WxPayConfig.MCHID     = PayConfigArr[1];
                    WxPayConfig.KEY       = PayConfigArr[2];
                    WxPayConfig.APPSECRET = PayConfigArr[3];
                    if (PayConfigArr.Length == 5)
                    {
                        WxPayConfig.SubMCHID = PayConfigArr[4];
                    }
                    WxPayConfig.SSLCERT_PATH     = Wx_Cert_Path;
                    WxPayConfig.SSLCERT_PASSWORD = Wx_Cert_PWD;
                    //支付配置结束

                    WxPayData data = new WxPayData();
                    //data.SetValue("auth_code", OrderF2F.PayId);//授权码
                    data.SetValue("body", Orders.TName + ":" + OrderF2F.OId); //商品描述
                    string total_fee = (OrderF2F.Amoney * 100).ToString("F0");
                    data.SetValue("total_fee", total_fee);                    //总金额
                    data.SetValue("out_trade_no", OrderF2F.OId);              //产生随机的商户订单号
                    if (PayType == 2)
                    {
                        data.SetValue("trade_type", "JSAPI");    //交易类型
                        if (PayConfigArr.Length == 5)
                        {                                        //子商户模式
                            data.SetValue("sub_openid", OpenId); //用户OpenId
                        }
                        else
                        {
                            data.SetValue("openid", OpenId);    //用户OpenId
                        }
                    }
                    else
                    {
                        data.SetValue("trade_type", "NATIVE");    //交易类型
                    }

                    data.SetValue("notify_url", NoticePath + "/PayCenter/WeiXinPay/Notice.html"); //异步通知地址
                    WxPayData result = WxPayApi.UnifiedOrder(data, WxPayConfig, 10);              //调用统一下单接口
                    result.SaveLog(Entity);

                    if (!result.IsSet("return_code") || result.GetValue("return_code").ToString() == "FAIL")
                    {    //支付失败
                        Orders.TState       = 0;
                        OrderF2F.OrderState = 0;
                        Entity.SaveChanges();
                    }
                    else
                    {
                        if (!result.CheckSign(WxPayConfig.KEY))
                        {    //签名失败,取消订单
                            Orders.TState       = 0;
                            OrderF2F.OrderState = 0;
                            Entity.SaveChanges();
                        }
                        else
                        {
                            if (result.GetValue("return_code").ToString() == "SUCCESS" && result.GetValue("result_code").ToString() == "SUCCESS")
                            {
                                //获取支付字符串
                                if (PayType == 2)    //JSAPI
                                {
                                    string PayId = result.GetValue("prepay_id").ToString();
                                    OrderF2F.PayId = PayId;
                                }
                                else
                                {
                                    string PayId = result.GetValue("code_url").ToString();
                                    OrderF2F.PayId = PayId;
                                }
                                Entity.SaveChanges();
                                Orders.PayId = OrderF2F.PayId;
                            }
                            else
                            {
                                //业务明确失败
                                Orders.TState       = 0;
                                OrderF2F.OrderState = 0;
                                Entity.SaveChanges();
                            }
                        }
                    }
                    #endregion
                }


                #region 提交好付
                if (PayConfig.DllName == "HFAliPay" || PayConfig.DllName == "HFWeiXin")
                {
                    string NoticeUrl = "";
                    string Action    = "";
                    if (PayConfig.DllName == "HFAliPay")
                    {
                        NoticeUrl = NoticePath + "/PayCenter/HFAliPay/Notice.html";
                        Action    = "AliSao";
                    }
                    if (PayConfig.DllName == "HFWeiXin")
                    {
                        NoticeUrl = NoticePath + "/PayCenter/HFWeiXin/Notice.html";
                        if (PayType == 2)
                        {
                            Action = "WxJsApi";
                        }
                        else
                        {
                            Action = "WxSao";
                        }
                    }
                    string[] PayConfigArr = PayConfig.QueryArray.Split(',');
                    if (PayConfigArr.Length != 3)
                    {
                        DataObj.OutError("1000");
                        return;
                    }
                    //提交结算中心
                    string merId    = PayConfigArr[0]; //商户号
                    string merKey   = PayConfigArr[1]; //商户密钥
                    string JsPayWay = PayConfigArr[2]; //绑定通道

                    string  orderId    = Orders.TNum;  //商户流水号
                    decimal money      = Orders.Amoney * 100;
                    long    intmoney   = Int64.Parse(money.ToString("F0"));
                    string  OrderMoney = intmoney.ToString();//金额,以分为单

                    string OpenIdStr = "";
                    if (PayConfig.Id == 13)
                    {
                        //特殊处理通道
                        Action = "WxJsApi";
                        OpenId = "OpenId";
                    }
                    if (Action == "WxJsApi")
                    {
                        OpenIdStr = ",\"openid\":\"" + OpenId + "\"";
                    }

                    string PostJson = "{\"action\":\"" + Action + "\",\"txnamt\":\"" + OrderMoney + "\",\"merid\":\"" + merId + "\",\"payway\":\"" + JsPayWay + "\",\"orderid\":\"" + orderId + "\",\"backurl\":\"" + NoticeUrl + "\"" + OpenIdStr + "}";

                    string DataBase64 = LokFuEncode.Base64Encode(PostJson, "utf-8");
                    string Sign       = (DataBase64 + merKey).GetMD5();

                    DataBase64 = HttpUtility.UrlEncode(DataBase64);
                    string PostData = string.Format("req={0}&sign={1}", DataBase64, Sign);

                    string HF_Url = "https://api.zhifujiekou.com/api/mpgateway";

                    string Ret = Utils.PostRequest(HF_Url, PostData, "utf-8");

                    JObject JS = new JObject();
                    try
                    {
                        JS = (JObject)JsonConvert.DeserializeObject(Ret);
                    }
                    catch (Exception Ex)
                    {
                        Log.Write("[Order_HF]:", "【PostData】" + PostData + "\n【Ret】" + Ret, Ex);
                        json = null;
                    }
                    if (JS == null)
                    {
                        DataObj.OutError("1000");
                        return;
                    }
                    string resp = JS["resp"].ToString();
                    Ret = LokFuEncode.Base64Decode(resp, "utf-8");
                    try
                    {
                        JS = (JObject)JsonConvert.DeserializeObject(Ret);
                    }
                    catch (Exception Ex)
                    {
                        Log.Write("[Order_HF]:", "【Ret2】" + Ret, Ex);
                        JS = null;
                    }
                    if (JS == null)
                    {
                        DataObj.OutError("1000");
                        return;
                    }
                    string respcode = JS["respcode"].ToString();
                    if (respcode != "00")
                    {
                        string respmsg = JS["respmsg"].ToString();
                        DataObj.OutError("1000");
                        Utils.WriteLog("[Order_HF_Err]:【" + respcode + "】" + respmsg, "orderface");
                        return;
                    }
                    if (JS["formaction"] == null)
                    {
                        Utils.WriteLog("[Order_HF_Err]:【formaction NULL】" + Ret, "orderface");
                        DataObj.OutError("2096");
                        return;
                    }
                    Orders.PayId = JS["formaction"].ToString();
                    if (PayConfig.Id == 13)
                    {
                        string myData = "{\"merid\":\"" + merId + "\",\"orderid\":\"" + orderId + "\",\"code\":\"" + Orders.PayId + "\"}";
                        DataBase64 = LokFuEncode.Base64Encode(myData, "utf-8");
                        Sign       = (DataBase64 + merKey).GetMD5();
                        DataBase64 = HttpUtility.UrlEncode(DataBase64);
                        string myUrl = string.Format("req={0}&sign={1}", DataBase64, Sign);
                        string Url   = "https://api.zhifujiekou.com/wxjsapi/gopay.html?" + myUrl;

                        OrderF2F.PayId = Url;
                        Entity.SaveChanges();
                        Orders.PayId = "http://api.kkapay.com/home/jump?tnum=" + Orders.TNum;
                    }
                }
                #endregion
                Orders.Cols  = "Id,TNum,PayId";
                DataObj.Data = Orders.OutJson();
                DataObj.Code = "0000";
                DataObj.OutString();
            }
            #endregion
            if (OrderF2F.Action == "GET")//获取订交易信息
            {
                //开始处理参数
                if (OrderF2F.OId.IsNullOrEmpty())
                {
                    DataObj.OutError("1000");
                    return;
                }
                Orders Orders = Entity.Orders.FirstOrDefault(n => n.TNum == OrderF2F.OId && n.UId == baseUsers.Id);
                if (Orders == null)
                {
                    DataObj.OutError("1000");
                    return;
                }
                OrderF2F Orderf2f = Entity.OrderF2F.FirstOrDefault(n => n.OId == OrderF2F.OId && n.UId == baseUsers.Id);
                if (Orders.TState == 1 && Orders.PayState == 0)
                {
                    PayConfig PayConfig = Entity.PayConfig.FirstOrNew(n => n.Id == Orders.PayWay);
                    if (PayConfig.DllName == "AliPay")
                    {
                        #region 支付宝处理
                        string[] PayConfigArr = PayConfig.QueryArray.Split(new char[] { ',' });    //接口信息 商户号,密钥,支付宝号
                        if (PayConfigArr.Length != 3)
                        {
                            DataObj.OutError("9999");
                            return;
                        }
                        if (AlipayVer == "1.0")
                        {
                            #region 1.0老接口
                            string pid = PayConfigArr[0];
                            string key = PayConfigArr[1];

                            int queryTimes = 10;    //查询次数计数器
                            int Run        = 0;
                            while (queryTimes > 0 && Run != 1)
                            {
                                AliPayApi Api        = new AliPayApi();
                                int       succResult = Api.AliPayQuery(Orderf2f.OId, pid, key);
                                //如果需要继续查询,则等待2s后继续
                                if (succResult == 2)
                                {
                                    //Thread.Sleep(5000);
                                    //continue;
                                    Run = 1;    //跳出循环,20160420
                                }
                                //查询成功,返回订单查询接口返回的数据
                                else if (succResult == 1)
                                {
                                    //Orders.PayState = 1;//此处不保存支付状态,由通知返回再操作
                                    Orders = Orders.PaySuccess(Entity);
                                    Run    = 1;
                                }
                                //订单交易失败
                                else
                                {
                                    Orders.TState       = 0;
                                    Orderf2f.OrderState = 0;
                                    Entity.SaveChanges();
                                }
                                queryTimes--;
                            }
                            #endregion
                        }
                        if (AlipayVer == "2.0")
                        {
                            #region 2.0新接口
                            ALF2FPAY ALF2FPAY = new ALF2FPAY();
                            ALF2FPAY.pid   = PayConfigArr[0];
                            ALF2FPAY.appId = PayConfigArr[2];

                            IAopClient client = new DefaultAopClient(ALF2FPAY.serverUrl, ALF2FPAY.appId, ALF2FPAY.merchant_private_key, "json", ALF2FPAY.version, ALF2FPAY.sign_type, ALF2FPAY.alipay_public_key, ALF2FPAY.charset);

                            string      QueryStr = "{\"out_trade_no\":\"" + Orders.TNum + "\"}";
                            ALF2FPAYObj ObjQuery = new ALF2FPAYObj();
                            ObjQuery.BizCode = QueryStr;
                            ObjQuery.Client  = client;
                            ObjQuery.Entity  = Entity;
                            AliPayApi Api = new AliPayApi();
                            AlipayTradeQueryResponse queryResponse = Api.LoopAlipayQuery(ObjQuery, 1);
                            if (queryResponse != null)
                            {
                                if (queryResponse.Code == "10000")
                                {
                                    if (queryResponse.TradeStatus == "TRADE_FINISHED" || queryResponse.TradeStatus == "TRADE_SUCCESS")
                                    {
                                        //Orders.PayState = 1;//此处不保存支付状态,由通知返回再操作
                                        Orders = Orders.PaySuccess(Entity);
                                    }
                                }
                            }
                            #endregion
                        }
                        #endregion
                    }
                    if (PayConfig.DllName == "WeiXin")
                    {
                        #region 微信处理
                        //初始化支付配置
                        WxPayConfig WxPayConfig  = new WxPayConfig();
                        string[]    PayConfigArr = PayConfig.QueryArray.Split(new char[] { ',' }); //接口信息 appid,mchid,key,appsecret
                        if (PayConfigArr.Length != 4 && PayConfigArr.Length != 5)
                        {
                            DataObj.OutError("9999");
                            return;
                        }
                        string ServerIp     = ConfigurationManager.AppSettings["ServerIp"].ToString();
                        string Wx_Cert_Path = ConfigurationManager.AppSettings["Wx_Cert_Path"].ToString();
                        string Wx_Cert_PWD  = ConfigurationManager.AppSettings["Wx_Cert_PWD"].ToString();
                        WxPayConfig.IP        = ServerIp;
                        WxPayConfig.APPID     = PayConfigArr[0];
                        WxPayConfig.MCHID     = PayConfigArr[1];
                        WxPayConfig.KEY       = PayConfigArr[2];
                        WxPayConfig.APPSECRET = PayConfigArr[3];
                        if (PayConfigArr.Length == 5)
                        {
                            WxPayConfig.SubMCHID = PayConfigArr[4];
                        }
                        WxPayConfig.SSLCERT_PATH     = Wx_Cert_Path;
                        WxPayConfig.SSLCERT_PASSWORD = Wx_Cert_PWD;
                        //支付配置结束
                        int queryTimes = 10;    //查询次数计数器
                        int Run        = 0;
                        while (queryTimes > 0 && Run != 1)
                        {
                            int       succResult  = 0;//查询结果
                            MicroPay  MicroPay    = new MicroPay();
                            WxPayData queryResult = MicroPay.WXQuery(Orderf2f.OId, WxPayConfig, Entity, out succResult);
                            //如果需要继续查询,则等待2s后继续
                            if (succResult == 2)
                            {
                                //Thread.Sleep(5000);
                                //continue;
                                Run = 1;    //跳出循环,20160420
                            }
                            //查询成功,返回订单查询接口返回的数据
                            else if (succResult == 1)
                            {
                                Orderf2f.Trade_no = queryResult.GetValue("transaction_id").ToString();
                                int ret = Entity.SaveChanges();
                                //Orders.PayState = 1;//此处不保存支付状态,由通知返回再操作
                                Orders = Orders.PaySuccess(Entity);
                                Run    = 1;
                            }
                            //订单交易失败
                            else
                            {
                                Orders.TState       = 0;
                                Orderf2f.OrderState = 0;
                                Entity.SaveChanges();
                            }
                            queryTimes--;
                        }
                        #endregion
                    }
                    if (PayConfig.DllName == "HFAliPay" || PayConfig.DllName == "HFWeiXin")
                    {
                        #region 好付处理
                        string[] QueryArr = PayConfig.QueryArray.Split(',');
                        if (QueryArr.Length == 3)
                        {
                            //提交结算中心
                            string merId      = QueryArr[0]; //商户号
                            string merKey     = QueryArr[1]; //商户密钥
                            string orderId    = Orders.TNum; //商户流水号
                            string PostJson   = "{\"merid\":\"" + merId + "\",\"orderid\":\"" + orderId + "\"}";
                            string DataBase64 = LokFuEncode.Base64Encode(PostJson, "utf-8");
                            string Sign       = (DataBase64 + merKey).GetMD5();
                            DataBase64 = HttpUtility.UrlEncode(DataBase64);
                            string PostData = string.Format("req={0}&sign={1}", DataBase64, Sign);
                            string HF_Url   = "https://api.zhifujiekou.com/api/query";
                            string Ret      = Utils.PostRequest(HF_Url, PostData, "utf-8");

                            JObject JS = new JObject();
                            try
                            {
                                JS = (JObject)JsonConvert.DeserializeObject(Ret);
                            }
                            catch (Exception Ex)
                            {
                                Log.Write("[Order_HFQuery]:", "【PostData】" + PostData + "\n【Ret】" + Ret, Ex);
                                JS = null;
                            }
                            if (JS == null)
                            {
                                DataObj.OutError("1000");
                                return;
                            }
                            if (JS["resp"] == null)
                            {
                                Utils.WriteLog("【Ret】" + Ret, "OrderQC_HFQuery");
                                DataObj.OutError("1000");
                                return;
                            }
                            string resp = JS["resp"].ToString();
                            Ret = LokFuEncode.Base64Decode(resp, "utf-8");
                            try
                            {
                                JS = (JObject)JsonConvert.DeserializeObject(Ret);
                            }
                            catch (Exception Ex)
                            {
                                Log.Write("[Order_HFQuery]:", "【Ret2】" + Ret, Ex);
                                JS = null;
                            }
                            if (JS == null)
                            {
                                DataObj.OutError("1000");
                                return;
                            }
                            string respcode = JS["respcode"].ToString();
                            if (respcode != "00")
                            {
                                string respmsg = JS["respmsg"].ToString();
                                DataObj.OutError("1000");
                                Utils.WriteLog("[Order_HFQuery_Err]:【" + respcode + "】" + respmsg, "orderface");
                                return;
                            }
                            string resultcode = JS["resultcode"].ToString();
                            if (resultcode == "0000" || resultcode == "1002" || resultcode == "1004")
                            {
                                string txnamt    = JS["txnamt"].ToString();
                                int    factmoney = int.Parse(txnamt);
                                if (((int)(Orders.Amoney * 100)) == factmoney)
                                {
                                    //Orders.PayState = 1;//此处不保存支付状态,由通知返回再操作
                                    Orders = Orders.PaySuccess(Entity);
                                }
                            }
                        }
                        #endregion
                    }
                }
                DataObj.Data = Orders.OutJson();
                DataObj.Code = "0000";
                DataObj.OutString();
            }
        }
Ejemplo n.º 3
0
        public ActionResult Audit(OrdersRefund OrdersRefund)
        {
            #region 校验及初始化
            if (!(OrdersRefund.TState == 2 || OrdersRefund.TState == 3))
            {
                ViewBag.ErrorMsg = "请审核";
                return(View("Error"));
            }
            if (OrdersRefund.TState == 3 && OrdersRefund.AuditRemark.IsNullOrEmpty())
            {
                ViewBag.ErrorMsg = "请填写审核备注";
                return(View("Error"));
            }
            if (OrdersRefund.AuditRemark.IsNullOrEmpty())
            {
                OrdersRefund.AuditRemark = string.Empty;
            }
            var baseOrdersRefund = Entity.OrdersRefund.FirstOrDefault(n => n.Id == OrdersRefund.Id);
            if (baseOrdersRefund == null)
            {
                ViewBag.ErrorMsg = "数据不存在";
                return(View("Error"));
            }
            if (baseOrdersRefund.TState != 1)
            {
                ViewBag.ErrorMsg = "已审核";
                return(View("Error"));
            }
            Orders baseOrders = Entity.Orders.FirstOrDefault(o => o.TNum == baseOrdersRefund.TNum);
            if (baseOrders == null)
            {
                ViewBag.ErrorMsg = "订单不存在";
                return(View("Error"));
            }
            Users baseUsers = Entity.Users.FirstOrDefault(o => o.Id == baseOrders.UId);
            if (baseUsers == null)
            {
                ViewBag.ErrorMsg = "订单商户不存在";
                return(View("Error"));
            }
            #endregion

            //实际到账金额
            decimal PayMoney = 0;
            #region 获取实际到账金额
            //银联卡支付订单
            OrderRecharge OrderRecharge = null;
            OrderF2F      OrderF2F      = null;
            if (baseOrders.TType == 1)
            {
                OrderRecharge = Entity.OrderRecharge.FirstOrNew(n => n.OId == baseOrders.TNum);
                PayMoney      = OrderRecharge.PayMoney;
            }
            //微信 支付宝 NFC
            if (baseOrders.TType == 7 || baseOrders.TType == 8 || baseOrders.TType == 9)
            {
                OrderF2F = Entity.OrderF2F.FirstOrNew(n => n.OId == baseOrders.TNum);
                PayMoney = OrderF2F.PayMoney;
            }
            #endregion

            #region 审核通过
            if (OrdersRefund.TState == 2)
            {
                //订单扣款
                int    USERSID = baseUsers.Id;
                string TNUM    = baseOrders.TNum;

                string SP_Ret = Entity.SP_UsersMoney(USERSID, TNUM, PayMoney, 11, OrdersRefund.AuditRemark);
                if (SP_Ret != "3")
                {
                    Utils.WriteLog(string.Format("U{0},O{1},T{2}:{3}【{4}】", USERSID, TNUM, 11, PayMoney, SP_Ret), "SP_UsersMoney");
                    ViewBag.ErrorMsg = "扣款失败";
                    return(View("Error"));
                }

                //订单信息修改
                baseOrders.TState  = 4;
                baseOrders.TDState = OrdersRefund.TState;

                #region 退还佣金
                //银联卡支付订单
                if (baseOrders.TType == 1)
                {
                    OrderRecharge.OrderState = baseOrders.TState;
                    //下级佣金退款
                    OrderRecharge.PayAgent(Entity, 2, 1);
                }
                //微信 支付宝 NFC
                if (baseOrders.TType == 7 || baseOrders.TType == 8 || baseOrders.TType == 9)
                {
                    OrderF2F.OrderState = baseOrders.TState;
                    //下级佣金退款
                    OrderF2F.PayAgent(Entity, 2, 1);
                }
                #endregion
            }
            #endregion

            #region 审核失败
            if (OrdersRefund.TState == 3)
            {
                //资金解冻
                #region 银联卡支付订单
                if (baseOrders.TType == 1)
                {
                    //包含下级分润
                    OrderRecharge.SetUnFrozen(Entity);
                }
                #endregion
                #region 微信 支付宝 NFC
                if (baseOrders.TType == 7 || baseOrders.TType == 8 || baseOrders.TType == 9)
                {
                    //包含下级分润
                    OrderF2F.SetUnFrozen(Entity);
                }
                #endregion
                baseOrders.FrozenState = 0;
                //修改冗余属性
                baseOrders.TDState = OrdersRefund.TState;
            }
            #endregion

            //保存退款信息,避免被savechanges
            baseOrdersRefund.AuditAdminId   = this.AdminUser.Id;
            baseOrdersRefund.AuditAdminName = this.AdminUser.TrueName;
            baseOrdersRefund.AuditRemark    = OrdersRefund.AuditRemark;
            baseOrdersRefund.TState         = OrdersRefund.TState;
            baseOrdersRefund.AuditTime      = DateTime.Now;
            //记录
            var OrdersRefundLog = new OrdersRefundLog()
            {
                AddTime   = DateTime.Now,
                AdminId   = this.AdminUser.Id,
                AdminName = this.AdminUser.TrueName,
                Img       = string.Empty,
                LogType   = OrdersRefund.TState,
                Remark    = OrdersRefund.AuditRemark,
                TNum      = OrdersRefund.TNum,
            };
            this.Entity.OrdersRefundLog.AddObject(OrdersRefundLog);
            Entity.SaveChanges();
            ViewBag.Msg = "操作成功,审核结果:" + (OrdersRefund.TState == 2 ? "通过" : "失败");
            return(View("Succeed"));
        }
Ejemplo n.º 4
0
        public void Post()
        {
            string Data = DataObj.GetData();

            if (Data.IsNullOrEmpty())
            {
                DataObj.OutError("1000");
                return;
            }
            JObject json = new JObject();

            try
            {
                json = (JObject)JsonConvert.DeserializeObject(Data);
            }
            catch (Exception Ex)
            {
                Log.Write("[Orders]:", "【Data】" + Data, Ex);
            }
            if (json == null)
            {
                DataObj.OutError("1000");
                return;
            }
            Orders Orders = new Orders();

            Orders = JsonToObject.ConvertJsonToModel(Orders, json);

            Users baseUsers = Entity.Users.FirstOrDefault(n => n.Token == Orders.Token);

            if (baseUsers == null)//用户令牌不存在
            {
                DataObj.OutError("2004");
                return;
            }
            if (baseUsers.State != 1)//用户被锁定
            {
                DataObj.OutError("2003");
                return;
            }
            if (baseUsers.CardStae != 2)//未实名认证
            {
                DataObj.OutError("2006");
                return;
            }
            if (baseUsers.MiBao != 1)//未设置支付密码
            {
                DataObj.OutError("2008");
                return;
            }

            Orders = Entity.Orders.FirstOrDefault(n => n.TNum == Orders.TNum && (n.UId == baseUsers.Id || (n.RUId == baseUsers.Id && n.PayState == 1)));
            if (Orders == null)//不存在
            {
                DataObj.OutError("1001");
                return;
            }
            if (Orders.RUId == baseUsers.Id)
            {
                Orders.TType = 4;
            }
            Orders.DoRemark(Entity);

            Orders.StateTxt = Orders.GetState();

            String Out = Orders.ToStr();

            if (Orders.TType == 1)
            { //银联卡支付
                OrderRecharge OrderRecharge = Entity.OrderRecharge.FirstOrNew(n => n.OId == Orders.TNum);
                OrderRecharge.Cols = "Amoney,PayMoney,Poundage,PayType";
                Out = Out + "," + OrderRecharge.ToStr();
            }
            if (Orders.TType == 2)//提现不能取消
            {
                OrderCash OrderCash = Entity.OrderCash.FirstOrNew(n => n.OId == Orders.TNum);
                OrderCash.Cols = "Owner,Bank,CardNum,Deposit,Mobile,Province,City,District,Amoney,UserRate";
                Out            = Out + "," + OrderCash.ToStr();
            }
            if (Orders.TType == 3 || Orders.TType == 4)//付款
            {
                OrderTransfer OrderTransfer = Entity.OrderTransfer.FirstOrNew(n => n.OId == Orders.TNum);
                OrderTransfer.Cols = "UId,RUId,PayMoney,Poundage,Amoney";
                Out = Out + "," + OrderTransfer.ToStr();
            }
            if (Orders.TType == 5)//防租
            {
                OrderHouse OrderHouse = Entity.OrderHouse.FirstOrNew(n => n.OId == Orders.TNum);
                OrderHouse.Cols = "HouseOwner,Bank,CardNum,Deposit,Mobile,MonthRent,SecurityMoney,PayMonth,Poundage,Amoney";
                Out             = Out + "," + OrderHouse.ToStr();
            }
            if (Orders.TType == 6)
            { //升级
              //PayConfigOrder PayConfigOrder = Entity.PayConfigOrder.FirstOrNew(n => n.OId == Orders.TNum);
              //Out = Out + "," + PayConfigOrder.ToStr();
            }
            if (Orders.TType == 7 || Orders.TType == 8 || Orders.TType == 9)
            { //扫码
                OrderF2F OrderF2F = Entity.OrderF2F.FirstOrNew(n => n.OId == Orders.TNum);
                OrderF2F.Cols = "Amoney,PayMoney,Poundage";
                Out           = Out + "," + OrderF2F.ToStr();
            }
            if (Orders.TType == 10)
            { //代理
            }
            Out          = "{" + Out + "}";
            DataObj.Data = Out;
            DataObj.Code = "0000";
            DataObj.OutString();
        }
Ejemplo n.º 5
0
        public void Execute(IJobExecutionContext context)
        {
            string JobName = "OrderProfit";
            string CanRun  = ConfigurationManager.AppSettings["Run" + JobName].ToString();

            if (CanRun == "true")
            {
                if (!IsRun)
                {
                    LokFuEntity Entity = new LokFuEntity();
                    IsRun = true;
                    try
                    {
                        Log.Write(JobName + "任务开始执行!");
                        //-------------------------------------------------------
                        #region 任务主体
                        IList <Orders> List = Entity.Orders.Where(n => n.RunSplit == 1).Take(50).ToList();
                        foreach (var p in List)
                        {
                            p.RunSplit = 2;
                        }
                        Entity.SaveChanges();
                        foreach (var O in List)
                        {
                            if (O.TType == 1)//银联卡支付
                            {
                                OrderRecharge OrderRecharge = Entity.OrderRecharge.FirstOrDefault(n => n.OId == O.TNum);
                                if (OrderRecharge != null)
                                {
                                    OrderRecharge = OrderRecharge.PayAgent(Entity, 1, O.FrozenState);
                                    O.AgentPayGet = (decimal)OrderRecharge.AgentPayGet;
                                    O.AgentState  = 1;
                                }
                            }
                            if (O.TType == 2)//提现
                            {
                                OrderCash OrderCash = Entity.OrderCash.FirstOrDefault(n => n.OId == O.TNum);
                                if (OrderCash != null)
                                {
                                    OrderCash     = OrderCash.PayAgent(Entity, 1);
                                    O.AgentPayGet = (decimal)OrderCash.AgentCashGet;
                                }
                            }
                            if (O.TType == 3)//转帐
                            {
                                OrderTransfer OrderTransfer = Entity.OrderTransfer.FirstOrDefault(n => n.OId == O.TNum);
                                if (OrderTransfer != null)
                                {
                                    OrderTransfer = OrderTransfer.PayAgent(Entity, 1);
                                    O.AgentPayGet = (decimal)OrderTransfer.AgentPayGet;
                                }
                            }
                            if (O.TType == 5)//房租
                            {
                                OrderHouse OrderHouse = Entity.OrderHouse.FirstOrDefault(n => n.OId == O.TNum);
                                if (OrderHouse != null)
                                {
                                    OrderHouse    = OrderHouse.PayAgent(Entity, 1);
                                    O.AgentPayGet = (decimal)OrderHouse.AgentPayGet;
                                }
                            }
                            if (O.TType == 6)//升级
                            {
                                VIPOrder VIPOrder = Entity.VIPOrder.FirstOrDefault(n => n.TNum == O.TNum);
                                if (VIPOrder != null)
                                {
                                    VIPOrder      = VIPOrder.PayAgent(Entity, 1);
                                    O.AgentPayGet = (decimal)VIPOrder.SplitMoney;
                                    O.AgentState  = 1;
                                }
                            }
                            if (O.TType == 7 || O.TType == 8 || O.TType == 9)//扫码 NFC
                            {
                                OrderF2F OrderF2F = Entity.OrderF2F.FirstOrDefault(n => n.OId == O.TNum);
                                if (OrderF2F != null)
                                {
                                    OrderF2F      = OrderF2F.PayAgent(Entity, 1, O.FrozenState);
                                    O.AgentPayGet = (decimal)OrderF2F.AgentPayGet;
                                }
                            }
                            if (O.TType == 10)//代理自助开通
                            {
                                DaiLiOrder DaiLiOrder = Entity.DaiLiOrder.FirstOrDefault(n => n.OId == O.TNum);
                                if (DaiLiOrder != null)
                                {
                                    DaiLiOrder    = DaiLiOrder.PayAgent(Entity, 1);
                                    O.AgentPayGet = (decimal)DaiLiOrder.AgentGet;
                                    O.AgentState  = 1;
                                }
                            }

                            O.RunSplit = 3;
                            Entity.SaveChanges();
                        }
                        #endregion
                        //-------------------------------------------------------
                        Log.Write(JobName + "任务执行结束![共计" + List.Count + "条]");
                    }
                    catch (Exception Ex)
                    {
                        Log.Write(JobName + "任务执行过程出错!", Ex);
                    }
                    IsRun = false;
                }
                else
                {
                    Log.Write(JobName + "任务还在执行中!");
                }
            }
        }
Ejemplo n.º 6
0
        public void Jump(string TNum)
        {
            OrderF2F OrderF2F = Entity.OrderF2F.FirstOrNew(n => n.OId == TNum);

            Response.Redirect(OrderF2F.PayId);
        }
Ejemplo n.º 7
0
        public void Post()
        {
            string Data = DataObj.GetData();

            if (Data.IsNullOrEmpty())
            {
                DataObj.OutError("1000");
                return;
            }
            JObject json = new JObject();

            try
            {
                json = (JObject)JsonConvert.DeserializeObject(Data);
            }
            catch (Exception Ex)
            {
                Log.Write("[Orders]:", "【Data】" + Data, Ex);
            }
            if (json == null)
            {
                DataObj.OutError("1000");
                return;
            }
            //System.Threading.Thread.Sleep(1000 * 150);
            Orders Orders = new Orders();

            Orders = JsonToObject.ConvertJsonToModel(Orders, json);

            Users baseUsers = Entity.Users.FirstOrDefault(n => n.Token == Orders.Token);

            if (baseUsers == null)//用户令牌不存在
            {
                DataObj.OutError("2004");
                return;
            }
            if (baseUsers.State != 1)//用户被锁定
            {
                DataObj.OutError("2003");
                return;
            }
            if (baseUsers.CardStae != 2)//未实名认证
            {
                //DataObj.OutError("2006");
                //return;
            }
            //if (baseUsers.MiBao != 1)//未设置支付密码
            //{
            //    DataObj.OutError("2008");
            //    return;
            //}

            Orders = Entity.Orders.FirstOrDefault(n => n.TNum == Orders.TNum && (n.UId == baseUsers.Id || (n.RUId == baseUsers.Id && n.PayState == 1)));
            if (Orders == null)//不存在
            {
                DataObj.OutError("1001");
                return;
            }
            if (Orders.RUId == baseUsers.Id)
            {
                Orders.TType = 4;
            }
            Orders.DoRemark(Entity);

            Orders.StateTxt = Orders.GetState();
            Orders.Cols    += ",Json,PicList,UserCardName,CardUpdateTime";
            Orders.DoRemark(Entity);
            Orders.Colour = Orders.GeStateColour();
            IList <OrdersModel> OML         = Utils.GetOrdersModel();
            OrdersModel         OrdersModel = OML.FirstOrNew(n => n.Id == Orders.TType);

            Orders.Otypename   = OrdersModel.Name;
            Orders.LagEntryDay = (byte)(Orders.TrunType.HasValue && Orders.TrunType.Value != 0 ? Orders.TrunType.Value : Orders.LagEntryDay);

            if (Orders.IdCardState > 1)
            {
                Orders.Remark = Orders.DDAuditRemark;
            }
            if (!Orders.UserCardPic.IsNullOrEmpty())
            {
                var UserCardPicList = Orders.UserCardPic.Split(',').ToList();
                for (int i = 0; i < UserCardPicList.Count; i++)
                {
                    var a = Utils.ImageUrl("Orders", UserCardPicList[i], AppImgPath);
                    UserCardPicList[i] = a;
                }
                JavaScriptSerializer JSS = new JavaScriptSerializer();
                string data = JSS.Serialize(UserCardPicList);
                JArray JO   = (JArray)JsonConvert.DeserializeObject(data);
                Orders.PicList = JO;
            }

            JObject JS = new JObject();

            if (Orders.TType == 1)
            { //银联卡支付
                OrderRecharge OrderRecharge = Entity.OrderRecharge.FirstOrNew(n => n.OId == Orders.TNum);
                OrderRecharge.Cols = "Amoney,PayMoney,Poundage,PayType";
                string JsStr = OrderRecharge.OutJson();
                try
                {
                    JS = (JObject)JsonConvert.DeserializeObject(JsStr);
                }
                catch (Exception Ex)
                {
                    Log.Write("[Order]:", "【JsStr】" + JsStr, Ex);
                }
                Orders.Json = JS;
            }
            if (Orders.TType == 2)//提现不能取消
            {
                OrderCash OrderCash = Entity.OrderCash.FirstOrNew(n => n.OId == Orders.TNum);
                OrderCash.Cols     = "Owner,Bank,CardNum,Deposit,Mobile,Province,City,District,Amoney,UserRate,TrunType,PayMoney";
                OrderCash.PayMoney = OrderCash.Amoney - (decimal)OrderCash.UserRate;
                string JsStr = OrderCash.OutJson();
                try
                {
                    JS = (JObject)JsonConvert.DeserializeObject(JsStr);
                }
                catch (Exception Ex)
                {
                    Log.Write("[Order]:", "【JsStr】" + JsStr, Ex);
                }
                Orders.Json = JS;
            }
            if (Orders.TType == 3 || Orders.TType == 4)//付款
            {
                OrderTransfer OrderTransfer = Entity.OrderTransfer.FirstOrNew(n => n.OId == Orders.TNum);
                Users         Users         = new Users();
                if (Orders.TType == 4)
                {
                    Users = Entity.Users.FirstOrNew(n => n.Id == OrderTransfer.UId);
                }
                if (Orders.TType == 3)
                {
                    Users = Entity.Users.FirstOrNew(n => n.Id == OrderTransfer.RUId);
                }
                OrderTransfer.Mobile     = Users.UserName;
                OrderTransfer.ToUserName = Users.TrueName;
                OrderTransfer.Cols       = "UId,RUId,PayMoney,Poundage,Amoney,Mobile,ToUserName";
                string JsStr = OrderTransfer.OutJson();
                try
                {
                    JS = (JObject)JsonConvert.DeserializeObject(JsStr);
                }
                catch (Exception Ex)
                {
                    Log.Write("[Order]:", "【JsStr】" + JsStr, Ex);
                }
                Orders.Json = JS;
            }
            if (Orders.TType == 5)//防租
            {
                OrderHouse OrderHouse = Entity.OrderHouse.FirstOrNew(n => n.OId == Orders.TNum);
                OrderHouse.Cols = "HouseOwner,Bank,CardNum,Deposit,Mobile,MonthRent,SecurityMoney,PayMonth,Poundage,Amoney";
                string JsStr = OrderHouse.OutJson();
                try
                {
                    JS = (JObject)JsonConvert.DeserializeObject(JsStr);
                }
                catch (Exception Ex)
                {
                    Log.Write("[Order]:", "【JsStr】" + JsStr, Ex);
                }
                Orders.Json = JS;
            }
            if (Orders.TType == 6)
            { //升级
                //PayConfigOrder PayConfigOrder = Entity.PayConfigOrder.FirstOrNew(n => n.OId == Orders.TNum);
                //Out = Out + "," + PayConfigOrder.ToStr();
                Orders.Poundage = 0;
            }
            if (Orders.TType == 7 || Orders.TType == 8 || Orders.TType == 9)
            { //扫码
                OrderF2F OrderF2F = Entity.OrderF2F.FirstOrNew(n => n.OId == Orders.TNum);
                OrderF2F.Cols = "Amoney,PayMoney,Poundage";
                string JsStr = OrderF2F.OutJson();
                try
                {
                    JS = (JObject)JsonConvert.DeserializeObject(JsStr);
                }
                catch (Exception Ex)
                {
                    Log.Write("[Order]:", "【JsStr】" + JsStr, Ex);
                }
                Orders.Json = JS;
            }
            if (Orders.TType == 10)
            { //代理
            }

            String Out = Orders.ToStr();

            Out          = "{" + Out + "}";
            DataObj.Data = Out;
            DataObj.Code = "0000";
            DataObj.OutString();
        }
Ejemplo n.º 8
0
        public void XLSDo(Orders Orders, EFPagingInfo <Orders> p, bool?IsShowSupAgent, int TimeType = 1)
        {
            if (IsShowSupAgent == null)
            {
                IsShowSupAgent = false;
            }
            p = this.Condition(Orders, p, IsShowSupAgent, TimeType);

            p.PageSize = 99999999;
            p.OrderByList.Add("Id", "DESC");
            IPageOfItems <Orders> OrdersList = Entity.Selects <Orders>(p);

            if (OrdersList.Count() > 0)
            {
                #region 导出
                string       file    = Server.MapPath("/template") + "\\finorders.xlsx";
                ExcelPackage package = new ExcelPackage(new FileInfo(file), true);
                var          sheet   = package.Workbook.Worksheets[1];
                var          cells   = sheet.Cells;
                int          Rows    = OrdersList.Count();
                //设置数据开始行
                int Befor = 2;
                sheet.InsertRow(Befor + 1, Rows - 1, Befor);
                int i = Befor;
                sheet.Row(i - 1).Height = 22;//设置行高
                int maxCol = 0;
                //获取机构及管理员
                IList <Orders> List = OrdersList.GroupBy(n => n.UId).Select(n => n.First()).ToList();
                List <int>     UId  = new List <int>();
                foreach (var pp in List)
                {
                    UId.Add(pp.UId);
                }
                IList <Users>     UsersList     = Entity.Users.Where(n => n.State == 1 && UId.Contains(n.Id)).ToList();
                IList <PayConfig> PayConfigList = Entity.PayConfig.Where(n => n.State == 1).ToList();
                IList <SysAgent>  SysAgentList  = Entity.SysAgent.ToList();
                foreach (var item in OrdersList)
                {
                    #region MyRegion
                    string AName = "--";
                    if (item.AId > 0)
                    {
                        SysAgent SA = SysAgentList.FirstOrNew(n => n.Id == item.Agent);
                        if (!SA.Name.IsNullOrEmpty())
                        {
                            AName = SA.Name;
                        }
                    }
                    string BName = "--";
                    Users  OU    = UsersList.FirstOrNew(n => n.Id == item.UId);
                    if (!OU.TrueName.IsNullOrEmpty())
                    {
                        BName = OU.TrueName;
                    }
                    PayConfig PayConfig = PayConfigList.FirstOrNew(n => n.Id == item.PayWay);
                    sheet.Row(i).Height = 22;//设置行高
                    //机构
                    cells["A" + i].Value = AName;
                    //交易号
                    cells["B" + i].Value = item.TNum;
                    //交易商户
                    cells["C" + i].Value = OU.NeekName + "[" + OU.TrueName + "]";
                    //交易类型
                    cells["D" + i].Value = item.GetTTName();
                    //交易内容
                    cells["E" + i].Value = item.GetPayNameWithTName();
                    //交易金额
                    cells["F" + i].Value = item.Amoney.ToString("f2");
                    //交易时间
                    cells["G" + i].Value = item.PayTime;
                    //入账时间
                    cells["H" + i].Value = (item.InTimed != null?Convert.ToDateTime(item.InTimed).ToString():"");
                    //支付方式
                    cells["I" + i].Value = PayConfig.Name;
                    //订单状态
                    cells["J" + i].Value = item.GetState();
                    string temp = string.Empty;
                    if (item.TType == 2 || item.TType == 5)
                    {
                        temp = "T+" + item.TrunType;
                    }
                    if (item.TType == 1 || item.TType == 7 || item.TType == 8 || item.TType == 9)
                    {
                        temp = "T+" + item.LagEntryDay;
                    }
                    //接收方式
                    cells["K" + i].Value = temp;
                    double  I = 0, K = 0, N = 0;
                    decimal J = 0, L = 0, M = 0;
                    string  Is = "";
                    #region MyRegion
                    if (item.TType == 1)
                    {                                                                                                                            //银联卡支付订单
                        OrderRecharge OrderRecharge = Entity.OrderRecharge.FirstOrNew(n => n.OId == item.TNum);
                        I = OrderRecharge.UserRate;                                                                                              //商户费率
                        J = OrderRecharge.Poundage;                                                                                              //手续费
                        K = OrderRecharge.SysRate;                                                                                               //第三方费率
                        L = ((decimal)OrderRecharge.SysRate * OrderRecharge.Amoney).Ceiling();                                                   //第三方手续费
                        N = OrderRecharge.AgentPayGet;                                                                                           //分支机构提成
                        M = OrderRecharge.Poundage - (decimal)OrderRecharge.SysRate * OrderRecharge.Amoney - (decimal)OrderRecharge.AgentPayGet; //利润
                    }
                    if (item.TType == 2)
                    { //提现订单
                        OrderCash OrderCash = Entity.OrderCash.FirstOrNew(n => n.OId == item.TNum);
                        I = 0;
                        if (!OrderCash.ECash.IsNullOrEmpty() && !OrderCash.Cash.IsNullOrEmpty())
                        {
                            Is = OrderCash.ECash.ToMoney() + "+" + (OrderCash.Cash * 100).ToString("F2") + "%";
                        }
                        else if (!OrderCash.ECash.IsNullOrEmpty())
                        {
                            Is = OrderCash.ECash.ToMoney();
                        }
                        else if (!OrderCash.Cash.IsNullOrEmpty())
                        {
                            Is = (OrderCash.Cash * 100).ToString("F2") + "%";
                        }
                        else
                        {
                            Is = "0";
                        }
                        J = (decimal)OrderCash.UserRate;                                                        //手续费
                        K = 0;                                                                                  //第三方费率
                        L = OrderCash.CashRate;                                                                 //第三方手续费
                        N = OrderCash.AgentCashGet;                                                             //分支机构提成
                        M = (decimal)OrderCash.UserRate - OrderCash.CashRate - (decimal)OrderCash.AgentCashGet; //利润
                    }
                    if (item.TType == 3)
                    {                                                                                               //转帐订单
                        OrderTransfer OrderTransfer = Entity.OrderTransfer.FirstOrNew(n => n.OId == item.TNum);
                        I = OrderTransfer.UserRate;                                                                 //商户费率
                        J = OrderTransfer.Poundage;                                                                 //手续费
                        K = OrderTransfer.SysRate;                                                                  //第三方费率
                        L = ((decimal)OrderTransfer.SysRate * OrderTransfer.Amoney).Ceiling();                      //第三方手续费
                        N = OrderTransfer.AgentPayGet;                                                              //分支机构提成
                        M = OrderTransfer.Amoney - OrderTransfer.PayMoney - L - (decimal)OrderTransfer.AgentPayGet; //利润
                    }
                    if (item.TType == 5)
                    {                                                                                      //付房租订单
                        OrderHouse OrderHouse = Entity.OrderHouse.FirstOrNew(n => n.OId == item.TNum);
                        I = OrderHouse.UserRate + (double)OrderHouse.CashRate;                             //商户费率
                        J = OrderHouse.Poundage;                                                           //手续费
                        K = OrderHouse.SysRate;                                                            //第三方费率
                        L = ((decimal)OrderHouse.SysRate * OrderHouse.Amoney).Ceiling();                   //第三方手续费
                        N = OrderHouse.AgentPayGet;                                                        //分支机构提成
                        M = OrderHouse.Amoney - OrderHouse.PayMoney - L - (decimal)OrderHouse.AgentPayGet; //利润
                    }
                    if (item.TType == 6)
                    {                                                                            //升级订单
                        PayConfigOrder PayConfigOrder = Entity.PayConfigOrder.FirstOrNew(n => n.OId == item.TNum);
                        I = 0;                                                                   //商户费率
                        J = PayConfigOrder.Poundage;                                             //手续费
                        K = PayConfigOrder.SysRate;                                              //第三方费率
                        L = ((decimal)PayConfigOrder.SysRate * PayConfigOrder.Amoney).Ceiling(); //第三方手续费
                        N = PayConfigOrder.AgentGet;                                             //分支机构提成
                        M = PayConfigOrder.Amoney - (decimal)PayConfigOrder.AgentGet;            //利润
                    }
                    if (item.TType == 7 || item.TType == 8 || item.TType == 9)
                    {                                                                                                        //当面付
                        OrderF2F OrderF2F = Entity.OrderF2F.FirstOrNew(n => n.OId == item.TNum);
                        I = OrderF2F.UserRate;                                                                               //商户费率
                        J = OrderF2F.Poundage;                                                                               //手续费
                        K = OrderF2F.SysRate;                                                                                //第三方费率
                        L = ((decimal)OrderF2F.SysRate * OrderF2F.Amoney).Ceiling();                                         //第三方手续费
                        N = OrderF2F.AgentPayGet;                                                                            //分支机构提成
                        M = OrderF2F.Poundage - (decimal)OrderF2F.SysRate * OrderF2F.Amoney - (decimal)OrderF2F.AgentPayGet; //利润
                    }
                    if (item.TType == 10)
                    {                                                         //升级订单
                        DaiLiOrder DaiLiOrder = Entity.DaiLiOrder.FirstOrNew(n => n.OId == item.TNum);
                        I = 0;                                                //商户费率
                        J = 0;                                                //手续费
                        K = 0;                                                //第三方费率
                        L = 0;                                                //第三方手续费
                        N = DaiLiOrder.AgentGet;                              //分支机构提成
                        M = DaiLiOrder.Amoney - (decimal)DaiLiOrder.AgentGet; //利润
                    }
                    #endregion
                    //用户费率9
                    if (item.TType == 2)
                    {
                        cells["L" + i].Value = Is;
                    }
                    else
                    {
                        cells["L" + i].Value = I;
                    }
                    //用户手续费10
                    cells["M" + i].Value = J;
                    //支出费率11 系统费率
                    cells["N" + i].Value = K;
                    //支出手续费12
                    cells["O" + i].Value = L;
                    //利润13
                    cells["P" + i].Value = M;
                    //结算金额14
                    cells["Q" + i].Value = N;
                    i++;
                    #endregion
                }
                sheet.Row(i).Height = 40;//设置行高
                //交易总额
                cells["F" + i].Formula = "SUM(F" + Befor + ":F" + (i - 1) + ")";
                //用户手续费10
                cells["M" + i].Formula = "SUM(M" + Befor + ":M" + (i - 1) + ")";
                //支出手续费12
                cells["O" + i].Formula = "SUM(O" + Befor + ":O" + (i - 1) + ")";
                //利润13
                cells["P" + i].Formula = "SUM(P" + Befor + ":P" + (i - 1) + ")";
                //结算金额14
                cells["Q" + i].Formula = "SUM(Q" + Befor + ":Q" + (i - 1) + ")";

                i--;
                maxCol = 17;
                //cells["B" + (i + 2)].Value = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                sheet.Cells[Befor, 1, i, maxCol].Style.Border.Left.Style   = ExcelBorderStyle.Thin;
                sheet.Cells[Befor, 1, i, maxCol].Style.Border.Right.Style  = ExcelBorderStyle.Thin;
                sheet.Cells[Befor, 1, i, maxCol].Style.Border.Top.Style    = ExcelBorderStyle.Thin;
                sheet.Cells[Befor, 1, i, maxCol].Style.Border.Bottom.Style = ExcelBorderStyle.Thin;
                sheet.Cells[Befor, 1, i, maxCol].Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;//居中
                sheet.Cells[Befor, 7, i, 7].Style.Numberformat.Format      = "yyyy-mm-dd HH:mm:ss";
                sheet.Cells[Befor, 8, i, 8].Style.Numberformat.Format      = "yyyy-mm-dd HH:mm:ss";
                sheet.Cells[Befor, 12, i, 12].Style.Numberformat.Format    = "#0.00%";
                sheet.Cells[Befor, 14, i, 14].Style.Numberformat.Format    = "#0.00%";
                i++;
                sheet.Cells[Befor, 6, i, 6].Style.Numberformat.Format   = "\"¥\"#,##0.00_);[Red](\"¥\"#,##0.00)";
                sheet.Cells[Befor, 13, i, 13].Style.Numberformat.Format = "\"¥\"#,##0.00_);[Red](\"¥\"#,##0.00)";
                sheet.Cells[Befor, 15, i, 15].Style.Numberformat.Format = "\"¥\"#,##0.00_);[Red](\"¥\"#,##0.00)";
                sheet.Cells[Befor, 16, i, 16].Style.Numberformat.Format = "\"¥\"#,##0.00_);[Red](\"¥\"#,##0.00)";
                sheet.Cells[Befor, 17, i, 17].Style.Numberformat.Format = "\"¥\"#,##0.00_);[Red](\"¥\"#,##0.00)";
                Response.BinaryWrite(package.GetAsByteArray());
                //输出
                Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
                Response.AddHeader("content-disposition", "attachment;  filename=" + DateTime.Now.ToString("yyyyMMddHHmmss") + new Random().Next(10, 99) + ".xlsx");
                #endregion
            }
            else
            {
                Response.Write("暂无符合条件数据");
            }
        }
Ejemplo n.º 9
0
        //接止返回数据
        public void Notice()
        {
            Stream    InputStream = Request.InputStream;
            Notify    Notify      = new Notify();
            WxPayData notifyData  = Notify.GetNotifyData(InputStream);

            notifyData.SaveLog(Entity);
            WxPayData res = new WxPayData();

            //检查支付结果中transaction_id是否存在
            if (!notifyData.IsSet("transaction_id"))
            {
                //若transaction_id不存在,则立即返回结果给微信支付后台
                res.SetValue("return_code", "FAIL");
                res.SetValue("return_msg", "支付结果中微信订单号不存在");
                Response.Write(res.ToXml());
                return;
            }
            string transaction_id = notifyData.GetValue("transaction_id").ToString();
            string outtradeno     = notifyData.GetValue("out_trade_no").ToString();

            Orders Orders = Entity.Orders.FirstOrDefault(n => n.TNum == outtradeno);

            if (Orders == null)
            {
                res.SetValue("return_code", "FAIL");
                res.SetValue("return_msg", "订单不存在");
                Response.Write(res.ToXml());
                return;
            }
            PayConfig PayConfig = Entity.PayConfig.FirstOrDefault(n => n.Id == Orders.PayWay && n.State == 1);

            if (PayConfig == null)
            {
                res.SetValue("return_code", "FAIL");
                res.SetValue("return_msg", "支付通道关闭或配置不正确");
                Response.Write(res.ToXml());
                return;
            }
            WxPayConfig WxPayConfig = new WxPayConfig();

            string[] PayConfigArr = PayConfig.QueryArray.Split(new char[] { ',' });//接口信息 appid,mchid,key,appsecret
            if (PayConfigArr.Length != 4 && PayConfigArr.Length != 5)
            {
                res.SetValue("return_code", "FAIL");
                res.SetValue("return_msg", "支付通道配置不正确");
                Response.Write(res.ToXml());
                return;
            }
            if (PayConfigArr.Length == 5)
            {
                WxPayConfig.SubMCHID = PayConfigArr[4];
            }
            string ServerIp = ConfigurationManager.AppSettings["ServerIp"].ToString();

            WxPayConfig.IP        = ServerIp;
            WxPayConfig.APPID     = PayConfigArr[0];
            WxPayConfig.MCHID     = PayConfigArr[1];
            WxPayConfig.KEY       = PayConfigArr[2];
            WxPayConfig.APPSECRET = PayConfigArr[3];
            WxPayData req = new WxPayData();

            req.SetValue("transaction_id", transaction_id);
            WxPayData resp = WxPayApi.OrderQuery(req, WxPayConfig);

            resp.SaveLog(Entity);
            if (resp.GetValue("return_code").ToString() == "SUCCESS" && resp.GetValue("result_code").ToString() == "SUCCESS")
            {
                res.SetValue("return_code", "SUCCESS");
                res.SetValue("return_msg", "OK");
                Response.Write(res.ToXml());
                //支付成功
                if (resp.GetValue("trade_state").ToString() == "SUCCESS")
                {
                    string out_trade_no = resp.GetValue("out_trade_no").ToString();
                    if (out_trade_no != outtradeno)
                    {
                        res.SetValue("return_code", "FAIL");
                        res.SetValue("return_msg", "订单信息有误");
                        Response.Write(res.ToXml());
                        return;
                    }
                    OrderF2F Orderf2f = Entity.OrderF2F.FirstOrDefault(n => n.OId == out_trade_no);
                    if (Orderf2f == null)
                    {
                        res.SetValue("return_code", "FAIL");
                        res.SetValue("return_msg", "订单不存在");
                        Response.Write(res.ToXml());
                        return;
                    }
                    Orders = Orders.PaySuccess(Entity);
                }
            }
            else
            {
                res.SetValue("return_code", "FAIL");
                res.SetValue("return_msg", "订单查询失败");
                Response.Write(res.ToXml());
            }
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="shopid"></param>
        /// <param name="Amount"></param>
        /// <param name="payway">这里payway是SysConfig的ID</param>
        /// <returns></returns>
        public ActionResult GoPay(int shopid = 0, decimal Amount = 0, byte payway = 0)
        {
            if (shopid.IsNullOrEmpty())
            {
                ViewBag.ErrorMsg = "商户信息有误,请核实!";
                return(View("Error"));
            }
            if (Amount.IsNullOrEmpty())
            {
                ViewBag.ErrorMsg = "付款金额有误,请核实!";
                return(View("Error"));
            }
            Users baseUsers = Entity.Users.FirstOrNew(n => n.Id == shopid && n.State == 1 && n.CardStae == 2);

            if (baseUsers.Id.IsNullOrEmpty())
            {
                ViewBag.ErrorMsg = "商户信息有误,请核实!";
                return(View("Error"));
            }
            if (Amount <= 0)
            {
                ViewBag.ErrorMsg = "付款金额有误![00]";
                return(View("Error"));
            }
            Amount = Amount.FormatMoney();

            #region 处理选择通道
            string Tag     = string.Empty;
            byte   PayType = 0;//订单类型
            if (IsWeiXinBrowser)
            {
                Tag = "WeiXin";
            }
            else if (IsAlipayBrowser)
            {
                Tag = "Alipay";
            }
            #region 获取系统支付配置
            SysControl SysControl = Entity.SysControl.FirstOrDefault(n => n.Id == payway);
            if (SysControl == null)
            {
                ViewBag.ErrorMsg = "接口维护中";
                return(View("Error"));
            }
            SysControl syscontrol = SysControl.ChkState();
            if (syscontrol.State != 1)
            {
                ViewBag.ErrorMsg = "接口维护中";
                return(View("Error"));
            }

            if (Amount < SysControl.SNum || Amount > SysControl.ENum)
            {
                ViewBag.ErrorMsg = "本付款方式限定金额为" + SysControl.SNum.ToString("f2") + "-" + SysControl.ENum.ToString("f2");
                return(View("Error"));
            }

            if (SysControl.Tag != Tag)//接口对应的"操作应用程序"
            {
                string tagname = "";
                if (SysControl.Tag == "WeiXin")
                {
                    tagname = "微信";
                }
                else if (SysControl.Tag == "Alipay")
                {
                    tagname = "支付宝";
                }
                else
                {
                    tagname = "银联";
                }
                ViewBag.ErrorMsg = "请使用" + tagname + "操作";
                return(View("Error"));
            }
            PayConfig PayConfig = Entity.PayConfig.FirstOrDefault(o => o.Id == SysControl.PayWay && o.State == 1);
            if (PayConfig == null)
            {
                ViewBag.ErrorMsg = "支付接口维护中,请使用其它支付通道!";
                return(View("Error"));
            }
            switch (PayConfig.GroupType)//从这里获取订单类型
            {
            case "AliPay":
                PayType = 7;
                break;

            case "WeiXin":
                PayType = 8;
                break;
            }
            if (PayType == 0)
            {
                ViewBag.ErrorMsg = "没有对应的支付配置";
                return(View("Error"));
            }
            #endregion
            #endregion

            #region 订单生成
            //获取用户支付配置
            UserPay UserPay = Entity.UserPay.FirstOrDefault(n => n.UId == baseUsers.Id && n.PId == SysControl.PayWay);
            if (UserPay == null)
            {
                ViewBag.ErrorMsg = "用户支付配置错误";
                return(View("Error"));
            }
            //获取分支机构信息
            SysAgent SysAgent = new SysAgent();
            if (!baseUsers.Agent.IsNullOrEmpty())
            {
                SysAgent = Entity.SysAgent.FirstOrNew(n => n.Id == baseUsers.Agent);
            }
            //获取系统配置
            SysSet SysSet = Entity.SysSet.FirstOrDefault();

            //TN判断
            int InType = SysControl.LagEntryNum > 0 ? 1 : 0;
            if (InType == 1)
            {
                //客户端传来T+N但是系统没开启时无效
                if (SysSet.LagEntry == 0)
                {
                    InType = 0;
                }
            }
            var OrderF2F = new OrderF2F()
            {
                PayWay  = SysControl.PayWay,
                AddTime = DateTime.Now,
                OType   = PayType,
                Amoney  = Amount,
            };
            if (InType == 1)
            {
                //手续费
                OrderF2F.Poundage = 0;
                //商户费率
                OrderF2F.UserRate = 0;
                //T+n时,代理佣金为 交易金额*费率
                decimal AgentPayGet = OrderF2F.Amoney * SysSet.AgentGet;
                OrderF2F.AgentPayGet = (Double)AgentPayGet;
                //佣金舍位
                OrderF2F.AgentPayGet = OrderF2F.AgentPayGet.Floor();
            }
            else
            {
                //手续费
                OrderF2F.Poundage = OrderF2F.Amoney * (decimal)UserPay.Cost;
                //手续费取进
                OrderF2F.Poundage = OrderF2F.Poundage.Ceiling();
                //商户费率
                OrderF2F.UserRate = UserPay.Cost;
                //分支机构佣金设置为0,待分润计算后再写入
                OrderF2F.AgentPayGet = 0;
            }
            OrderF2F.UId = baseUsers.Id;
            //到帐金额=支付金额-手续费
            OrderF2F.PayMoney = OrderF2F.Amoney - OrderF2F.Poundage;
            //第三方支付通道率
            OrderF2F.SysRate = (double)PayConfig.Cost;
            //这里是利润计算==========
            //利润=总金额-到帐-支付手续费
            decimal GetAll = OrderF2F.Amoney - OrderF2F.PayMoney - OrderF2F.Amoney * (decimal)OrderF2F.SysRate;
            //利润舍位
            GetAll = GetAll.Floor();
            //总利润
            OrderF2F.AIdPayGet = (double)GetAll;

            OrderF2F.Agent      = SysAgent.Id;//分支机构Id
            OrderF2F.AId        = baseUsers.AId;
            OrderF2F.FId        = 0;
            OrderF2F.OrderState = 1;
            OrderF2F.PayState   = 0;
            OrderF2F.AgentState = 0;
            OrderF2F.AddTime    = DateTime.Now;
            OrderF2F.PayId      = string.Empty;
            OrderF2F.PayType    = PayType;

            //写入订单总表
            Orders Orders = new Orders();
            Orders.UId   = OrderF2F.UId;
            Orders.TName = baseUsers.NeekName;

            Orders.PayType = PayType;
            Orders.PayName = "收银台-" + PayConfig.Name;;

            Orders.RUId     = 0;
            Orders.RName    = string.Empty;
            Orders.TType    = OrderF2F.OType;
            Orders.TState   = 1;
            Orders.Amoney   = OrderF2F.Amoney;
            Orders.Poundage = OrderF2F.Poundage;
            Orders.AddTime  = DateTime.Now;
            Orders.PayState = 0;
            Orders.PayWay   = SysControl.PayWay;

            Orders.Agent      = OrderF2F.Agent;
            Orders.AgentState = 0;
            Orders.AId        = OrderF2F.AId;
            Orders.FId        = 0;
            Orders.ComeWay    = 2;//收银台订单的标识 1:APP订单 2:收银台订单

            if (InType == 1)
            {
                Orders.LagEntryDay = SysControl.LagEntryDay;
                Orders.LagEntryNum = SysControl.LagEntryNum;
            }
            else
            {
                Orders.LagEntryDay = 0;
                Orders.LagEntryNum = 0;
            }

            Entity.Orders.AddObject(Orders);
            Entity.SaveChanges();
            Entity.Refresh(RefreshMode.StoreWins, Orders);

            OrderF2F.OId = Orders.TNum;
            Entity.OrderF2F.AddObject(OrderF2F);
            Entity.SaveChanges();

            //=======================================
            UserTrack UserTrack = new UserTrack();
            UserTrack.ENo        = baseUsers.ENo;
            UserTrack.OPType     = Orders.PayName;
            UserTrack.UserName   = Orders.TNum;
            UserTrack.GPSAddress = "";
            UserTrack.GPSX       = "";
            UserTrack.GPSY       = "";
            UserTrack.IP         = Utils.GetIP();
            Orders.SeavGPSLog(UserTrack, Entity);
            //=======================================

            #endregion

            #region 提交结算中心
            if (PayConfig.DllName == "HFAliPay" || PayConfig.DllName == "HFWeiXin")
            {
                string NoticeUrl = "";
                string Action    = "";
                if (PayConfig.DllName == "HFAliPay")
                {
                    NoticeUrl = NoticePath + "/PayCenter/HFAliPay/Notice.html";
                    Action    = "AliSao";
                }
                if (PayConfig.DllName == "HFWeiXin")
                {
                    NoticeUrl = NoticePath + "/PayCenter/HFWeiXin/Notice.html";
                    Action    = "WxJsApi";
                }
                string[] PayConfigArr = PayConfig.QueryArray.Split(',');
                if (PayConfigArr.Length != 3)
                {
                    ViewBag.ErrorMsg = "参数错误!";
                    return(View("Error"));
                }
                //提交结算中心
                string merId    = PayConfigArr[0]; //商户号
                string merKey   = PayConfigArr[1]; //商户密钥
                string JsPayWay = PayConfigArr[2]; //绑定通道

                string  orderId    = Orders.TNum;  //商户流水号
                decimal money      = Orders.Amoney * 100;
                long    intmoney   = Int64.Parse(money.ToString("F0"));
                string  OrderMoney = intmoney.ToString();//金额,以分为单

                string PostJson = "{\"action\":\"" + Action + "\",\"txnamt\":\"" + OrderMoney + "\",\"merid\":\"" + merId + "\",\"payway\":\"" + JsPayWay + "\",\"orderid\":\"" + orderId + "\",\"backurl\":\"" + NoticeUrl + "\"}";

                string DataBase64 = LokFuEncode.Base64Encode(PostJson, "utf-8");
                string Sign       = (DataBase64 + merKey).GetMD5();

                DataBase64 = HttpUtility.UrlEncode(DataBase64);
                string PostData = string.Format("req={0}&sign={1}", DataBase64, Sign);

                //本通道支持直联公众号
                if (IsWeiXinBrowser && Action == "WxJsApi")
                {
                    Orders.PayId = "公众号支付";
                    Entity.SaveChanges();
                    string gateway_url = "https://api.zhifujiekou.com/apis/wxjspaygateway";
                    string GoUrl       = gateway_url + "?" + PostData;
                    Response.Redirect(GoUrl);
                    return(View("Null"));
                }

                string  HF_Url = "https://api.zhifujiekou.com/api/mpgateway";
                string  Ret    = Utils.PostRequest(HF_Url, PostData, "utf-8");
                JObject JS     = new JObject();
                try
                {
                    JS = (JObject)JsonConvert.DeserializeObject(Ret);
                }
                catch (Exception)
                {
                    Utils.WriteLog("[Order_HF_Err]:【PostData】" + PostData + "\n【Ret】" + Ret, "ShopErr");
                    ViewBag.ErrorMsg = "返回数据异常!";
                    return(View("Error"));
                }
                string resp = JS["resp"].ToString();
                Ret = LokFuEncode.Base64Decode(resp, "utf-8");
                try
                {
                    JS = (JObject)JsonConvert.DeserializeObject(Ret);
                }
                catch (Exception)
                {
                    Utils.WriteLog("[Order_HF_Err]:【Ret】" + Ret, "ShopErr");
                    ViewBag.ErrorMsg = "返回结果异常!";
                    return(View("Error"));
                }
                string respcode = JS["respcode"].ToString();
                if (respcode != "00")
                {
                    string respmsg = JS["respmsg"].ToString();
                    Utils.WriteLog("[Order_HF_Err]:【" + respcode + "】" + respmsg, "ShopErr");
                    ViewBag.ErrorMsg = respmsg;
                    return(View("Error"));
                }
                if (JS["formaction"] == null)
                {
                    Utils.WriteLog("[Order_HF_Err]:【formaction NULL】" + Ret, "ShopErr");
                    ViewBag.ErrorMsg = "未能生成二维码";
                    return(View("Error"));
                }
                Orders.PayId = JS["formaction"].ToString();
            }
            #endregion

            this.ViewBag.Orders = Orders;
            return(View());
        }
Ejemplo n.º 11
0
        public void Post()
        {
            string Data = DataObj.GetData();

            if (Data.IsNullOrEmpty())
            {
                DataObj.OutError("1000");
                return;
            }
            JObject json = new JObject();

            try
            {
                json = (JObject)JsonConvert.DeserializeObject(Data);
            }
            catch (Exception Ex)
            {
                Log.Write("[OrderNFC]:", "【Data】" + Data, Ex);
            }
            if (json == null)
            {
                DataObj.OutError("1000");
                return;
            }

            OrderF2F OrderF2F = new OrderF2F();

            OrderF2F = JsonToObject.ConvertJsonToModel(OrderF2F, json);

            UserTrack UserTrack = new UserTrack();

            UserTrack = JsonToObject.ConvertJsonToModel(UserTrack, json);

            #region 获取并处理用户信息
            Users baseUsers = Entity.Users.FirstOrDefault(n => n.Token == OrderF2F.Token);
            if (baseUsers == null)//用户令牌不存在
            {
                DataObj.OutError("2004");
                return;
            }
            if (baseUsers.State != 1)//用户被锁定
            {
                DataObj.OutError("2003");
                return;
            }
            if (baseUsers.CardStae != 2)//未实名认证
            {
                //DataObj.OutError("2006");
                //return;
            }
            if (baseUsers.MiBao != 1)//未设置支付密码
            {
                //DataObj.OutError("2008");
                //return;
            }
            string NeekName = baseUsers.NeekName;
            if (NeekName.IsNullOrEmpty())
            {
                NeekName = baseUsers.TrueName;
            }
            if (NeekName.IsNullOrEmpty())
            {
                NeekName = "货款";
            }
            #endregion

            if (OrderF2F.Action == "Create")
            {
                //处理交易地点
                if (OrderF2F.X.IsNullOrEmpty() || OrderF2F.Y.IsNullOrEmpty())
                {
                    DataObj.OutError("1000");
                    return;
                }
                int PayWay = OrderF2F.PayWay;
                if (PayWay.IsNullOrEmpty())
                {
                    PayWay = 7;//兼容老版本
                }

                //获取系统支付配置
                PayConfig PayConfig = Entity.PayConfig.FirstOrDefault(n => n.Id == PayWay && n.State == 1);
                if (PayConfig == null)
                {
                    DataObj.OutError("1000");
                    return;
                }
                if (PayConfig.GroupType != "NFC")
                {
                    DataObj.OutError("1000");
                    return;
                }
                int InType = 0;
                if (!OrderF2F.InType.IsNullOrEmpty())
                {
                    InType = 1;
                }
                SysControl SysControl = new SysControl();
                #region 版本比较 升级之后比较长时间后可以考滤删除版本判断代码
                bool IsNew     = true;
                var  vSysAgent = this.Entity.SysAgent.FirstOrDefault(o => o.Id == baseUsers.Agent);
                if (vSysAgent == null)
                {
                    DataObj.OutError("1000");
                    return;
                }
                IsNew = BizExt.NewOrOldVersion(vSysAgent, Equipment, this.Entity);
                #endregion
                if (IsNew)//新版
                {
                    if (InType == 1)
                    {
                        SysControl = Entity.SysControl.FirstOrDefault(n => n.Tag == "NFC" && n.PayWay == PayWay && n.LagEntryDay > 0);
                    }
                    else
                    {
                        SysControl = Entity.SysControl.FirstOrDefault(n => n.Tag == "NFC" && n.PayWay == PayWay && n.LagEntryDay == 0);
                    }
                }
                else//旧版
                {
                    SysControl = Entity.SysControl.FirstOrDefault(n => n.Tag == "NFC" && n.PayWay == PayWay);
                }

                //获取系统支付配置
                if (SysControl == null)
                {
                    DataObj.OutError("1005");
                    return;
                }
                SysControl syscontrol = SysControl.ChkState();
                if (syscontrol.State != 1)
                {
                    DataObj.OutError("1005");
                    return;
                }

                #region 创建交易
                OrderF2F.PayWay  = PayWay;
                OrderF2F.PayType = 0;
                OrderF2F.PayId   = PayConfig.DllName;
                OrderF2F.OType   = 9; //NFC

                //开始处理参数 PayId扣款码,OType通道,7支付宝,8微信
                if (OrderF2F.Amoney.IsNullOrEmpty())
                {
                    DataObj.OutError("1000");
                    return;
                }
                OrderF2F.Amoney = OrderF2F.Amoney.FormatMoney();

                //获取用户支付配置
                UserPay UserPay = Entity.UserPay.FirstOrDefault(n => n.UId == baseUsers.Id && n.PId == PayConfig.Id);
                if (UserPay == null)
                {
                    DataObj.OutError("1000");
                    return;
                }

                //获取分支机构信息
                SysAgent SysAgent = new SysAgent();
                if (!baseUsers.Agent.IsNullOrEmpty())
                {
                    SysAgent = Entity.SysAgent.FirstOrNew(n => n.Id == baseUsers.Agent);
                }


                //获取系统配置
                SysSet SysSet = Entity.SysSet.FirstOrDefault();
                if (InType == 1)
                {//客户端传来T+N但是系统没开启时无效
                    if (SysSet.LagEntry == 0)
                    {
                        InType = 0;
                    }
                }
                if (InType == 1)
                {
                    //手续费
                    OrderF2F.Poundage = 0;
                    //商户费率
                    OrderF2F.UserRate = 0;
                    //T+n时,代理佣金为 交易金额*费率
                    decimal AgentPayGet = OrderF2F.Amoney * SysSet.AgentGet;
                    OrderF2F.AgentPayGet = (Double)AgentPayGet;
                    //佣金舍位
                    OrderF2F.AgentPayGet = OrderF2F.AgentPayGet.Floor();
                }
                else
                {
                    //手续费
                    OrderF2F.Poundage = OrderF2F.Amoney * (decimal)UserPay.Cost;
                    //手续费取进
                    OrderF2F.Poundage = OrderF2F.Poundage.Ceiling();
                    //商户费率
                    OrderF2F.UserRate = UserPay.Cost;
                    //分支机构佣金设置为0,待分润计算后再写入
                    OrderF2F.AgentPayGet = 0;
                }

                OrderF2F.UId = baseUsers.Id;

                //到帐金额=支付金额-手续费
                OrderF2F.PayMoney = OrderF2F.Amoney - OrderF2F.Poundage;
                //第三方支付通道率
                OrderF2F.SysRate = (double)PayConfig.Cost;
                //这里是利润计算==========
                //利润=总金额-到帐-支付手续费
                decimal GetAll = OrderF2F.Amoney - OrderF2F.PayMoney - OrderF2F.Amoney * (decimal)OrderF2F.SysRate;
                //利润舍位
                GetAll = GetAll.Floor();
                //总利润
                OrderF2F.AIdPayGet = (double)GetAll;

                OrderF2F.Agent      = SysAgent.Id;//分支机构Id
                OrderF2F.AId        = baseUsers.AId;
                OrderF2F.FId        = 0;
                OrderF2F.OrderState = 1;
                OrderF2F.PayState   = 0;
                OrderF2F.AgentState = 0;
                OrderF2F.AddTime    = DateTime.Now;

                //写入前,判断交易金额限制
                if (OrderF2F.Amoney < syscontrol.SNum || OrderF2F.Amoney > syscontrol.ENum)
                {
                    DataObj.OutError("1006");
                    return;
                }

                //写入订单总表
                Orders Orders = new Orders();
                Orders.UId   = OrderF2F.UId;
                Orders.TName = NeekName;

                Orders.PayType = OrderF2F.PayType;
                Orders.PayName = "NFC";

                Orders.RUId     = 0;
                Orders.RName    = string.Empty;
                Orders.TType    = OrderF2F.OType;
                Orders.TState   = 1;
                Orders.Amoney   = OrderF2F.Amoney;
                Orders.Poundage = OrderF2F.Poundage;
                Orders.AddTime  = DateTime.Now;
                Orders.PayState = 0;
                Orders.PayWay   = PayConfig.Id;

                Orders.Agent      = OrderF2F.Agent;
                Orders.AgentState = 0;
                Orders.AId        = OrderF2F.AId;
                Orders.FId        = 0;

                string OrderAddress = OrderF2F.OrderAddress;
                if (OrderAddress.IsNullOrEmpty())
                {
                    OrderAddress = Utils.GetAddressByGPS(OrderF2F.X, OrderF2F.Y);
                }
                Orders.OrderAddress = OrderAddress;
                Orders.X            = OrderF2F.X;
                Orders.Y            = OrderF2F.Y;

                if (InType == 1)
                {
                    if (IsNew)//新版
                    {
                        Orders.LagEntryDay = SysControl.LagEntryDay;
                        Orders.LagEntryNum = SysControl.LagEntryNum;
                    }
                    else
                    {
                        Orders.LagEntryDay = SysSet.LagEntryDay;
                        Orders.LagEntryNum = SysSet.LagEntryNum;
                    }
                }
                else
                {
                    Orders.LagEntryDay = 0;
                    Orders.LagEntryNum = 0;
                }

                Entity.Orders.AddObject(Orders);
                Entity.SaveChanges();
                Entity.Refresh(RefreshMode.StoreWins, Orders);

                OrderF2F.OId = Orders.TNum;
                Entity.OrderF2F.AddObject(OrderF2F);
                Entity.SaveChanges();

                //=======================================
                UserTrack.ENo        = DataObj.ENo;
                UserTrack.OPType     = Orders.PayName;
                UserTrack.UserName   = Orders.TNum;
                UserTrack.GPSAddress = Orders.OrderAddress;
                UserTrack.GPSX       = Orders.X;
                UserTrack.GPSY       = Orders.Y;
                Orders.SeavGPSLog(UserTrack, Entity);
                //=======================================

                if (PayConfig.DllName == "NFC")
                {
                    string[] PayConfigArr = PayConfig.QueryArray.Split(',');
                    if (PayConfigArr.Length != 2)
                    {
                        DataObj.OutError("1000");
                        return;
                    }

                    string NoticeUrl = NoticePath + "/PayCenter/NFC/Notice.html";

                    NFCObj NFCObj = new NFCObj();
                    NFCObj.merchantCode    = PayConfigArr[0];                           //      商户编码
                    NFCObj.outOrderId      = Orders.TNum;                               //		订单号
                    NFCObj.outUserId       = Orders.UId.ToString();                     //		用户编号
                    NFCObj.orderCreateTime = Orders.AddTime.ToString("yyyyMMddHHmmss"); //		订单生成时间20140423112324
                    NFCObj.nonceStr        = Utils.RandomSMSCode(10);                   //		随机字符串
                    NFCObj.goodName        = Orders.TName;                              //		商品名称
                    NFCObj.goodsExplain    = Orders.TNum;;                              //		商品详情
                    NFCObj.totalAmount     = (Orders.Amoney * 100).ToString("F0");      //		订单金额	100
                    NFCObj.payNotifyUrl    = NoticeUrl;                                 //		支付通知地址
                    NFCObj.sign            = PayConfigArr[1];
                    NFCObj.lastPayTime     = "";
                    //===================================
                    JavaScriptSerializer jss = new JavaScriptSerializer();
                    string jsonString        = jss.Serialize(NFCObj);
                    try
                    {
                        json = (JObject)JsonConvert.DeserializeObject(jsonString);
                    }
                    catch (Exception Ex)
                    {
                        Log.Write("[OrderNFC_My]:", "【jsonString】" + jsonString, Ex);
                    }
                    Orders.Json = json;
                }
                else if (PayConfig.DllName == "HFNFC")
                {
                    string NoticeUrl = NoticePath + "/PayCenter/HFNFC/Notice.html";

                    string[] PayConfigArr = PayConfig.QueryArray.Split(',');
                    if (PayConfigArr.Length != 3)
                    {
                        DataObj.OutError("1000");
                        return;
                    }
                    //提交结算中心
                    string merId    = PayConfigArr[0]; //商户号
                    string merKey   = PayConfigArr[1]; //商户密钥
                    string JsPayWay = PayConfigArr[2]; //绑定通道

                    string  orderId    = Orders.TNum;  //商户流水号
                    decimal money      = Orders.Amoney * 100;
                    long    intmoney   = Int64.Parse(money.ToString("F0"));
                    string  OrderMoney = intmoney.ToString();//金额,以分为单

                    string PostJson = "{\"action\":\"getOrder\",\"txnamt\":\"" + OrderMoney + "\",\"merid\":\"" + merId + "\",\"payway\":\"" + JsPayWay + "\",\"orderid\":\"" + orderId + "\",\"backurl\":\"" + NoticeUrl + "\"}";

                    string DataBase64 = LokFuEncode.Base64Encode(PostJson, "utf-8");
                    string Sign       = (DataBase64 + merKey).GetMD5();

                    DataBase64 = HttpUtility.UrlEncode(DataBase64);
                    string PostData = string.Format("req={0}&sign={1}", DataBase64, Sign);

                    string HFNFC_Url = "https://api.zhifujiekou.com/api/nfcgateway";

                    string Ret = Utils.PostRequest(HFNFC_Url, PostData, "utf-8");

                    JObject JS = new JObject();
                    try
                    {
                        JS = (JObject)JsonConvert.DeserializeObject(Ret);
                    }
                    catch (Exception Ex)
                    {
                        Log.Write("[OrderNFC_HF]:", "【Ret】" + Ret, Ex);
                    }
                    if (JS == null)
                    {
                        DataObj.OutError("1000");
                        return;
                    }
                    string resp = JS["resp"].ToString();
                    Ret = LokFuEncode.Base64Decode(resp, "utf-8");
                    try
                    {
                        JS = (JObject)JsonConvert.DeserializeObject(Ret);
                    }
                    catch (Exception Ex)
                    {
                        Log.Write("[OrderNFC_HF]:", "【Ret2】" + Ret, Ex);
                    }
                    if (JS == null)
                    {
                        DataObj.OutError("1000");
                        return;
                    }
                    string respcode = JS["respcode"].ToString();
                    if (respcode != "00")
                    {
                        string respmsg = JS["respmsg"].ToString();
                        DataObj.OutError("1000");
                        Utils.WriteLog("[OrderNFC_HF_Err]:【" + respcode + "】" + respmsg, "orderface");
                        return;
                    }
                    JObject Json = (JObject)JS["webform"];
                    Orders.Json = Json;
                }
                Orders.Cols  = Orders.Cols + ",Json";
                DataObj.Data = Orders.OutJson();
                DataObj.Code = "0000";
                DataObj.OutString();
                #endregion
            }
            if (OrderF2F.Action == "GET")//获取订交易信息
            {
                //开始处理参数
                if (OrderF2F.OId.IsNullOrEmpty())
                {
                    DataObj.OutError("1000");
                    return;
                }
                Orders Orders = Entity.Orders.FirstOrDefault(n => n.TNum == OrderF2F.OId && n.UId == baseUsers.Id);
                if (Orders == null)
                {
                    DataObj.OutError("1000");
                    return;
                }
                OrderF2F  Orderf2f  = Entity.OrderF2F.FirstOrDefault(n => n.OId == OrderF2F.OId && n.UId == baseUsers.Id);
                PayConfig PayConfig = Entity.PayConfig.FirstOrNew(n => n.Id == Orders.PayWay);
                if (Orders.TState == 1 && Orders.PayState == 0)
                {
                    if (PayConfig.DllName == "NFC")
                    {
                        //1000000951,f38e989d-900f-4768-8a01-f6667a21f7d3
                        string[] QueryArr = PayConfig.QueryArray.Split(',');
                        if (QueryArr.Length == 2)
                        {
                            string merchantCode = QueryArr[0];
                            string Key          = QueryArr[1];
                            string outOrderId   = Orders.TNum;
                            string dataStr      = "merchantCode=" + merchantCode + "&outOrderId=" + outOrderId;
                            string signStr      = dataStr + "&KEY=" + Key;
                            string sign         = signStr.GetMD5().ToUpper();
                            string dataJson     = "{\"merchantCode\":\"" + merchantCode + "\",\"outOrderId\":\"" + outOrderId + "\",\"sign\":\"" + sign + "\"}";
                            string postData     = "{\"param\":" + dataJson + ",\"project_id\":\"WEPAYPLUGIN_PAY\"}";
                            string postUrl      = "https://payment.kklpay.com/query/queryOrder.do";
                            string Ret          = Utils.GetPostJson(postUrl, postData);
                            //"{"code":"00","data":{"amount":1,"instructCode":"11001998044","merchantCode":"1000000951","outOrderId":"201511170900077","replyCode":"00","sign":"EA778C87B5ACDCBC7735BB78C15CAC72","transTime":"20151117174726","transType":"00200"},"msg":"成功"}"
                            JObject JS = new JObject();
                            try
                            {
                                JS = (JObject)JsonConvert.DeserializeObject(Ret);
                            }
                            catch (Exception Ex)
                            {
                                Utils.WriteLog("[OrderNFC]:JSON[" + Ret + "]" + Ex.ToString(), "orderface");
                            }
                            if (JS != null)
                            {
                                string code = JS["code"].ToString();//返回状态--
                                if (code == "00")
                                {
                                    JObject JSD = (JObject)JS["data"];
                                    if (JSD != null)
                                    {
                                        string amount        = JSD["amount"].ToString();       //交易金额 单位分
                                        string instructCode  = JSD["instructCode"].ToString(); //交易单号
                                        string merchantCodeR = JSD["merchantCode"].ToString(); //商户号
                                        string outOrderIdR   = JSD["outOrderId"].ToString();   //订单号
                                        string replyCode     = JSD["replyCode"].ToString();    //交易状态
                                        string transTime     = JSD["transTime"].ToString();    //交易时间
                                        string transType     = JSD["transType"].ToString();    //交易类型
                                        string signR         = JSD["sign"].ToString();
                                        //================================================
                                        PayLog PayLog = new PayLog();
                                        PayLog.PId     = PayConfig.Id;
                                        PayLog.OId     = outOrderId;
                                        PayLog.TId     = instructCode;
                                        PayLog.Amount  = decimal.Parse(amount) / 100;
                                        PayLog.Way     = "GET";
                                        PayLog.AddTime = DateTime.Now;
                                        PayLog.Data    = Ret;
                                        PayLog.State   = 1;
                                        Entity.PayLog.AddObject(PayLog);
                                        Entity.SaveChanges();
                                        //================================================
                                        if (replyCode == "00")
                                        {
                                            if (merchantCodeR == merchantCode)
                                            {
                                                int factmoney = int.Parse(amount);
                                                if (((int)(Orders.Amoney * 100)) == factmoney)
                                                {
                                                    //Orders.PayState = 1;//此处不保存支付状态,由通知返回再操作
                                                    Orders = Orders.PaySuccess(Entity);
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                        //PaySuccess
                    }
                    else if (PayConfig.DllName == "HFNFC")
                    {
                        string[] QueryArr = PayConfig.QueryArray.Split(',');
                        if (QueryArr.Length == 3)
                        {
                            //提交结算中心
                            string merId      = QueryArr[0]; //商户号
                            string merKey     = QueryArr[1]; //商户密钥
                            string orderId    = Orders.TNum; //商户流水号
                            string PostJson   = "{\"merid\":\"" + merId + "\",\"orderid\":\"" + orderId + "\"}";
                            string DataBase64 = LokFuEncode.Base64Encode(PostJson, "utf-8");
                            string Sign       = (DataBase64 + merKey).GetMD5();
                            DataBase64 = HttpUtility.UrlEncode(DataBase64);
                            string PostData  = string.Format("req={0}&sign={1}", DataBase64, Sign);
                            string HFNFC_Url = "https://api.zhifujiekou.com/api/query";
                            string Ret       = Utils.PostRequest(HFNFC_Url, PostData, "utf-8");

                            JObject JS = new JObject();
                            try
                            {
                                JS = (JObject)JsonConvert.DeserializeObject(Ret);
                            }
                            catch (Exception Ex)
                            {
                                Log.Write("[OrderNFC_HFQuery]:", "【Ret】" + Ret, Ex);
                            }
                            if (JS == null)
                            {
                                DataObj.OutError("1000");
                                return;
                            }
                            string resp = JS["resp"].ToString();
                            Ret = LokFuEncode.Base64Decode(resp, "utf-8");
                            try
                            {
                                JS = (JObject)JsonConvert.DeserializeObject(Ret);
                            }
                            catch (Exception Ex)
                            {
                                Log.Write("[OrderNFC_HFQuery]:", "【Ret2】" + Ret, Ex);
                            }
                            if (JS == null)
                            {
                                DataObj.OutError("1000");
                                return;
                            }
                            string respcode = JS["respcode"].ToString();
                            if (respcode != "00")
                            {
                                string respmsg = JS["respmsg"].ToString();
                                DataObj.OutError("1000");
                                Utils.WriteLog("[OrderNFC_HFQuery_Err]:【" + respcode + "】" + respmsg, "orderface");
                                return;
                            }
                            string resultcode = JS["resultcode"].ToString();
                            if (resultcode == "0000" || resultcode == "1002" || resultcode == "1004")
                            {
                                string txnamt    = JS["txnamt"].ToString();
                                int    factmoney = int.Parse(txnamt);
                                if (((int)(Orders.Amoney * 100)) == factmoney)
                                {
                                    //Orders.PayState = 1;//此处不保存支付状态,由通知返回再操作
                                    Orders = Orders.PaySuccess(Entity);
                                }
                            }
                        }
                        //PaySuccess
                    }
                }
                DataObj.Data = Orders.OutJson();
                DataObj.Code = "0000";
                DataObj.OutString();
            }
        }
Ejemplo n.º 12
0
        public void Execute(IJobExecutionContext context)
        {
            string JobName = "TnInMoney";
            string CanRun  = ConfigurationManager.AppSettings["Run" + JobName].ToString();

            if (CanRun == "true")
            {
                if (!IsRun)
                {
                    LokFuEntity Entity = new LokFuEntity();
                    IsRun = true;
                    try
                    {
                        Log.Write(JobName + "任务开始执行!");
                        //-------------------------------------------------------
                        #region 任务主体
                        IList <TaskOrders> List = Entity.TaskOrders.Where(n => n.State == 1 && n.ODate <= DateTime.Now).ToList();
                        foreach (var p in List)
                        {
                            p.State = 2;
                            Entity.SaveChanges();
                            Orders Orders = Entity.Orders.FirstOrDefault(n => n.TNum == p.OId);
                            if (Orders != null)
                            {
                                if (Orders.FrozenState == 1)
                                {
                                    Orders.FrozenState = 0;
                                    Entity.SaveChanges();
                                    if (Orders.TType == 1)
                                    {
                                        OrderRecharge OrderRecharge = Entity.OrderRecharge.FirstOrDefault(n => n.OId == Orders.TNum);
                                        if (OrderRecharge != null)
                                        {
                                            OrderRecharge.SetUnFrozen(Entity);
                                        }
                                    }
                                    if (Orders.TType == 7 || Orders.TType == 8 || Orders.TType == 9)
                                    {
                                        OrderF2F OrderF2F = Entity.OrderF2F.FirstOrDefault(n => n.OId == Orders.TNum);
                                        if (OrderF2F != null)
                                        {
                                            OrderF2F.SetUnFrozen(Entity);
                                        }
                                    }
                                }
                                Orders.InState = 1;
                                Orders.TState  = 2;
                                Orders.InTimed = DateTime.Now;
                                Entity.SaveChanges();
                            }
                            Log.WriteLog("执行入帐:" + p.OId, JobName);
                        }
                        #endregion
                        //-------------------------------------------------------
                        Log.Write(JobName + "任务执行结束![共计" + List.Count + "条]");
                    }
                    catch (Exception Ex)
                    {
                        Log.Write(JobName + "任务执行过程出错!", Ex);
                    }
                    IsRun = false;
                }
                else
                {
                    Log.Write(JobName + "任务还在执行中!");
                }
            }
        }