/// <summary> /// 取消订单后,金额处理 /// </summary> /// <param name="order"></param> public bool OrderCancelDoMoney(OrderInfo order) { var user = UserInfoOper.Instance.GetById((int)order.userId); user.userBalance += order.useBalance + order.payMoney; user.coupon += order.useCoupon; UserInfoOper.Instance.Update(user); UserPay up = new UserPay(); up.type = 6; up.money = order.useBalance + order.payMoney; up.userId = order.userId; up.createTime = DateTime.Now; UserPayOper.Instance.Add(up); if (order.useCoupon > 0) { UserPay up2 = new UserPay(); up2.type = 7; up2.money = order.useCoupon; up2.userId = order.userId; up2.createTime = DateTime.Now; UserPayOper.Instance.Add(up2); } return(true); }
/// <summary> /// add /// </summary> /// <param name="UserPay"></param> /// <returns></returns> public int Add(UserPay model) { var str = GetInsertStr(model) + " select @@identity"; var dict = GetParameters(model); return(Convert.ToInt32(SqlHelperHere.ExecuteScalar(str, dict))); }
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("[UsersPay]:", "【Data】" + Data, Ex); } if (json == null) { DataObj.OutError("1000"); return; } UserPay UserPay = new UserPay(); UserPay = JsonToObject.ConvertJsonToModel(UserPay, json); //获取用户信息 Users baseUsers = Entity.Users.FirstOrDefault(n => n.Token == UserPay.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; } UserPay = Entity.UserPay.FirstOrDefault(n => n.UId == baseUsers.Id && n.PId == UserPay.PId); if (UserPay == null) { DataObj.OutError("1001"); return; } DataObj.Data = UserPay.OutJson(); DataObj.Code = "0000"; DataObj.OutString(); }
/// <summary> /// 添加一条充值记录 /// </summary> /// <param name="up"></param> /// <returns></returns> public bool AddUserPay(UserPay up) { using (ChatEntities db = new ChatEntities()) { db.UserPay.Add(up); return(db.SaveChanges() > 0); } }
/// <summary> /// update /// </summary> /// <param name="UserPay"></param> /// <returns></returns> public void Update(UserPay model) { //CacheHelper.LockCache("UserPay"); var str = GetUpdateStr(model); var dict = GetParameters(model); SqlHelperHere.ExcuteNon(str, dict); //CacheHelper.ReleaseLock("UserPay"); }
/// <summary> /// 删除当前用户的消费记录 /// </summary> /// <param name="up"></param> /// <returns></returns> public bool DeleteUserPay(UserPay up) { using (ChatEntities db = new ChatEntities()) { UserPay ups = db.UserPay.Find(up.ID); db.UserPay.Remove(ups); return(db.SaveChanges() > 0); } }
public void Add(Users Users, int[] PId, double[] Cost) { Users baseUsers = Entity.Users.FirstOrDefault(n => n.Id == Users.Id && n.Agent == BasicAgent.Id); bool Check = true; if (baseUsers != null) { Users.Cash0 = Users.Cash0 / 1000; if (Users.Cash0 >= BasicSet.AgentCash0 && Users.ECash0 >= BasicSet.AgentECash0 && Users.Cash1 >= BasicSet.AgentCash1 && Users.ECash1 >= BasicSet.AgentECash1) { baseUsers.Cash0 = Users.Cash0; baseUsers.ECash0 = Users.ECash0; baseUsers.Cash1 = Users.Cash1; baseUsers.ECash1 = Users.ECash1; baseUsers.State = 1; } else { Check = false; } for (int i = 0; i < PId.Length; i++) { int pid = PId[i]; double cost = Cost[i] / 1000; PayConfig PC = Entity.PayConfig.FirstOrDefault(n => n.Id == pid); if (PC == null) { Check = false; } if (cost >= PC.CostAgent) { UserPay UserPay = new UserPay(); UserPay.UId = baseUsers.Id; UserPay.PId = pid; UserPay.Cost = cost; Entity.UserPay.AddObject(UserPay); } else { Check = false; } } } //Entity.UserPayChange.AddObject(UserPayChange); if (Check) { Entity.SaveChanges(); BaseRedirect(); } else { Response.Redirect("/Agent/home/error.html?IsAjax=" + Request["IsAjax"] + "&msg=费率设置有误~"); } }
/// <summary> /// 修改用户的一条消费记录 /// </summary> /// <param name="up"></param> /// <returns></returns> public bool UpdateUserPay(UserPay up) { using (ChatEntities db = new ChatEntities()) { UserPay userpay = db.UserPay.SingleOrDefault(u => u.ID == up.ID); userpay.ID = up.ID; userpay.UserID = up.UserID; userpay.PayMoney = up.PayMoney; userpay.PayTime = up.PayTime; userpay.Type = up.Type; return(db.SaveChanges() > 0); } }
/// <summary> /// 插入 /// </summary> /// <param name="userpay"></param> /// <returns>是否成功</returns> public string GetInsertStr(UserPay userpay) { StringBuilder part1 = new StringBuilder(); StringBuilder part2 = new StringBuilder(); if (userpay.type != null) { part1.Append("type,"); part2.Append("@type,"); } if (userpay.money != null) { part1.Append("money,"); part2.Append("@money,"); } if (userpay.status != null) { part1.Append("status,"); part2.Append("@status,"); } if (userpay.userId != null) { part1.Append("userId,"); part2.Append("@userId,"); } if (userpay.createTime != null) { part1.Append("createTime,"); part2.Append("@createTime,"); } if (userpay.takeType != null) { part1.Append("takeType,"); part2.Append("@takeType,"); } if (userpay.takeAccount != null) { part1.Append("takeAccount,"); part2.Append("@takeAccount,"); } if (userpay.outTradeNo != null) { part1.Append("outTradeNo,"); part2.Append("@outTradeNo,"); } StringBuilder sql = new StringBuilder(); sql.Append("insert into userpay(").Append(part1.ToString().Remove(part1.Length - 1)).Append(") values (").Append(part2.ToString().Remove(part2.Length - 1)).Append(")"); return(sql.ToString()); }
public HttpResponseMessage TakeCash(UserReq req) { var tokenStr = req.Token; var userId = Convert.ToInt32(req.userId); Token token = CacheHelper.GetUserToken(tokenStr); if (token == null) { return(ControllerHelper.Instance.JsonResult(400, "token失效")); } if (token.Payload.UserID != userId) { return(ControllerHelper.Instance.JsonResult(400, "token错误")); } var takeType = req.takeType; var takeAccount = req.takeAccount; var money = Convert.ToDecimal(req.money); var user = UserInfoOper.Instance.GetById(userId); if (money > user.userBalance) { return(ControllerHelper.Instance.JsonResult(500, "超过现有的余额")); } var userHere = new UserInfo(); userHere.id = user.id; userHere.userBalance = user.userBalance - money; UserInfoOper.Instance.Update(userHere); UserPay up = new UserPay(); up.type = 99; up.money = money; up.userId = userId; up.status = false; up.createTime = DateTime.Now; up.takeType = takeType; up.takeAccount = takeAccount; UserPayOper.Instance.Add(up); return(ControllerHelper.Instance.JsonResult(200, "1-3个工作日提现成功")); }
public override UserPay GetUserPay(string orderNo) { using (SqlQuery query = new SqlQuery()) { query.CommandType = CommandType.Text; query.CommandText = "SELECT * FROM bx_Pay WHERE OrderNo=@OrderNo"; query.CreateParameter <string>("@OrderNo", orderNo, SqlDbType.NVarChar, 200); using (XSqlDataReader reader = query.ExecuteReader()) { UserPay usertype = null; while (reader.Next) { usertype = new UserPay(reader); } return(usertype); } } }
public override UserPay GetUserPay(string orderNo) { using (SqlQuery query = new SqlQuery()) { query.CommandType = CommandType.Text; query.CommandText = "SELECT * FROM bx_Pay WHERE OrderNo=@OrderNo"; query.CreateParameter<string>("@OrderNo", orderNo, SqlDbType.NVarChar, 200); using (XSqlDataReader reader = query.ExecuteReader()) { UserPay usertype = null; while (reader.Next) { usertype = new UserPay(reader); } return usertype; } } }
/// 获取参数 /// </summary> /// <param name="userpay"></param> /// <returns></returns> public Dictionary <string, string> GetParameters(UserPay userpay) { Dictionary <string, string> dict = new Dictionary <string, string>(); if (userpay.id != null) { dict.Add("@id", userpay.id.ToString()); } if (userpay.type != null) { dict.Add("@type", userpay.type.ToString()); } if (userpay.money != null) { dict.Add("@money", userpay.money.ToString()); } if (userpay.status != null) { dict.Add("@status", userpay.status.ToString()); } if (userpay.userId != null) { dict.Add("@userId", userpay.userId.ToString()); } if (userpay.createTime != null) { dict.Add("@createTime", userpay.createTime.ToString()); } if (userpay.takeType != null) { dict.Add("@takeType", userpay.takeType.ToString()); } if (userpay.takeAccount != null) { dict.Add("@takeAccount", userpay.takeAccount.ToString()); } if (userpay.outTradeNo != null) { dict.Add("@outTradeNo", userpay.outTradeNo.ToString()); } return(dict); }
/// <summary> /// 更新 /// </summary> /// <param name="userpay"></param> /// <returns>是否成功</returns> public string GetUpdateStr(UserPay userpay) { StringBuilder part1 = new StringBuilder(); part1.Append("update userpay set "); if (userpay.type != null) { part1.Append("type = @type,"); } if (userpay.money != null) { part1.Append("money = @money,"); } if (userpay.status != null) { part1.Append("status = @status,"); } if (userpay.userId != null) { part1.Append("userId = @userId,"); } if (userpay.createTime != null) { part1.Append("createTime = @createTime,"); } if (userpay.takeType != null) { part1.Append("takeType = @takeType,"); } if (userpay.takeAccount != null) { part1.Append("takeAccount = @takeAccount,"); } if (userpay.outTradeNo != null) { part1.Append("outTradeNo = @outTradeNo,"); } int n = part1.ToString().LastIndexOf(","); part1.Remove(n, 1); part1.Append(" where id= @id "); return(part1.ToString()); }
public ActionResult Index(UserPay UserPay) { Users Users = Entity.Users.FirstOrNew(n => n.Id == UserPay.UId); if (Users == null) { ViewBag.ErrorMsg = "查询的商户不存在"; return(View("Error")); } if (!IsBelongToAgent(Users.Agent)) { ViewBag.ErrorMsg = "只能查询当前用户下属代理的商户"; return(View("Error")); } ViewBag.UserPayList = Entity.UserPay.Where(n => n.UId == UserPay.UId).ToList(); ViewBag.PayConfigList = Entity.PayConfig.Where(n => n.State == 1).ToList(); ViewBag.Users = Users; ViewBag.SysAgent = Entity.SysAgent.FirstOrNew(n => n.Id == Users.Agent); return(View()); }
/// <summary> /// 支付订单,添加收支明细 /// </summary> /// <param name="order"></param> /// <returns></returns> public bool PayOrderRecord(OrderInfo order) { if (order.useBalance > 0) { UserPay up = new UserPay(); up.type = 2; up.money = order.useBalance; up.createTime = DateTime.Now; up.userId = order.userId; UserPayOper.Instance.Add(up); } if (order.useCoupon > 0) { UserPay up = new UserPay(); up.type = 3; up.money = order.useCoupon; up.createTime = DateTime.Now; up.userId = order.userId; UserPayOper.Instance.Add(up); } return(true); }
/// <summary> /// 押金退回用户余额,并添加记录 /// </summary> public void DepositBackRecord(OrderInfo order) { var user = UserInfoOper.Instance.GetById((int)order.userId); user.userBalance += order.deposit; var userHere = new UserInfo { id = user.id, userBalance = user.userBalance }; UserInfoOper.Instance.Update(userHere); UserPay up = new UserPay { userId = order.userId, type = 5, money = order.deposit, createTime = DateTime.Now }; Add(up);//收支明细-押金退回 }
/// <summary> /// 支付成功的时候。添加收支明细 up.type 2余额支付 3礼金券支付 /// </summary> /// <param name="order"></param> public void payOrderAddRecord(OrderInfo order) { if (order.useBalance > 0) { UserPay up = new UserPay { type = 2, money = order.useBalance, userId = order.userId, createTime = DateTime.Now }; Add(up); } if (order.useCoupon > 0) { UserPay up = new UserPay(); up.type = 3; up.money = order.useCoupon; up.userId = order.userId; up.createTime = DateTime.Now; Add(up); } }
public ActionResult Save(UserPayChange UserPayChange, int[] PId, double[] Cost) { Users baseUsers = null; if (BasicAgent.Tier == 1) { baseUsers = Entity.Users.FirstOrDefault(n => n.Id == UserPayChange.UId); } else { baseUsers = Entity.Users.FirstOrDefault(n => n.Id == UserPayChange.UId && n.Agent == BasicAgent.Id); } if (!IsBelongToAgent(baseUsers.Agent)) { ViewBag.ErrorMsg = AgentLanguage.Surmount; return(View("Error")); } int UPC = Entity.UserPayChange.Count(n => n.UId == baseUsers.Id && n.State == 1); if (UPC > 0) { //Response.Redirect("/Agent/home/error.html?IsAjax=" + Request["IsAjax"] + "&msg=当前用户有未处理完成申请,请不要重复申请!"); ViewBag.ErrorMsg = "当前用户有未处理完成申请,请不要重复申请!"; return(View("Error")); } else { bool Check = true; if (baseUsers != null) { UserPayChange.CashNew0 = UserPayChange.CashNew0 / 1000; UserPayChange.CashNew1 = UserPayChange.CashNew1 / 1000; if (UserPayChange.CashNew0 < BasicSet.AgentCash0 || UserPayChange.ECashNew0 < BasicSet.AgentECash0 || UserPayChange.CashNew1 < BasicSet.AgentCash1 || UserPayChange.ECashNew1 < BasicSet.AgentECash1) { Check = false; } UserPayChange = Request.ConvertRequestToModel <UserPayChange>(UserPayChange, UserPayChange); UserPayChange.AddTime = DateTime.Now; UserPayChange.SId = BasicAgent.Id; UserPayChange.SAId = AdminUser.Id; UserPayChange.State = 1; UserPayChange.Cash0 = baseUsers.Cash0; UserPayChange.ECash0 = baseUsers.ECash0; UserPayChange.Cash1 = baseUsers.Cash1; UserPayChange.ECash1 = baseUsers.ECash1; Entity.UserPayChange.AddObject(UserPayChange); Entity.SaveChanges(); int upcId = UserPayChange.Id; for (int i = 0; i < PId.Length; i++) { int pid = PId[i]; double cost = Cost[i] / 1000; PayConfig PC = Entity.PayConfig.FirstOrDefault(n => n.Id == pid); if (PC == null) { Check = false; } if (cost >= PC.CostAgent) { UserPayTemp UserPay = new UserPayTemp(); UserPay UP = Entity.UserPay.FirstOrNew(n => n.PId == PC.Id); UserPay.UPCId = upcId; UserPay.UId = baseUsers.Id; UserPay.PId = pid; UserPay.Cost = cost; UserPay.ACost = UP.Cost; Entity.UserPayTemp.AddObject(UserPay); } else { Check = false; } } } //Entity.UserPayChange.AddObject(UserPayChange); if (Check) { Entity.SaveChanges(); return(this.View("ReloadFrame")); //BaseRedirect(); } else { Entity.UserPayChange.DeleteObject(UserPayChange); Entity.SaveChanges(); //Response.Redirect("/Agent/home/error.html?IsAjax=" + Request["IsAjax"] + "&msg=费率设置有误~"); ViewBag.ErrorMsg = "费率设置有误!"; return(View("Error")); } } }
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("[OrderTransfer]:", "【Data】" + Data, Ex); } if (json == null) { DataObj.OutError("1000"); return; } OrderTransfer OrderTransfer = new OrderTransfer(); OrderTransfer = JsonToObject.ConvertJsonToModel(OrderTransfer, json); UserTrack UserTrack = new UserTrack(); UserTrack = JsonToObject.ConvertJsonToModel(UserTrack, json); string Tag = "Transfer"; SysControl SysControl = Entity.SysControl.FirstOrDefault(n => n.Tag == Tag); SysControl syscontrol = SysControl.ChkState(); if (syscontrol.State != 1) { DataObj.OutError("1005"); return; } //获取用户信息 Users baseUsers = Entity.Users.FirstOrDefault(n => n.Token == OrderTransfer.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; } if (baseUsers.UserName == OrderTransfer.ToUserName)//不能给自己转帐 { DataObj.OutError("6031"); return; } if (baseUsers.Amount < OrderTransfer.PayMoney)//余额不足 { DataObj.OutError("6001"); return; } //获取收款用户信息 Users ToUsers = Entity.Users.FirstOrDefault(n => n.UserName == OrderTransfer.ToUserName); if (ToUsers == null)//用户不存在 { DataObj.OutError("6004"); return; } if (ToUsers.State != 1)//用户被锁定 { DataObj.OutError("6003"); return; } //if (ToUsers.CardStae != 2)//未实名认证 //{ // DataObj.OutError("6006"); // return; //} //开始处理参数 if (OrderTransfer.PayMoney.IsNullOrEmpty())//转帐金额 { DataObj.OutError("1000"); return; } OrderTransfer.PayMoney = OrderTransfer.PayMoney.FormatMoney(); if (OrderTransfer.PayType.IsNullOrEmpty()) { OrderTransfer.PayType = 0; } if (OrderTransfer.X.IsNullOrEmpty() || OrderTransfer.Y.IsNullOrEmpty()) { DataObj.OutError("1000"); return; } if (OrderTransfer.AId.IsNullOrEmpty()) { //支付方式,用于取出支付费率信息,计算各接口金额 DataObj.OutError("1000"); return; } //获取系统支付配置 PayConfig PayConfig = Entity.PayConfig.FirstOrDefault(n => n.Id == OrderTransfer.AId && n.State == 1); if (PayConfig == null) { DataObj.OutError("1000"); return; } //转帐目前只支持余额 if (PayConfig.DllName != "Cash") { DataObj.OutError("1000"); return; } //获取分支机构信息 SysAgent SysAgent = new SysAgent(); //获取系统配置 //SysSet SysSet = Entity.SysSet.FirstOrDefault(); OrderTransfer.UId = baseUsers.Id; OrderTransfer.RUId = ToUsers.Id; if (OrderTransfer.IsMe == 1)//付方出手续费 { //获取付方支付配置 UserPay UserPay = Entity.UserPay.FirstOrDefault(n => n.UId == baseUsers.Id && n.PId == OrderTransfer.AId); if (UserPay == null) { DataObj.OutError("1000"); return; } //获取付方机构信息 if (!baseUsers.Agent.IsNullOrEmpty()) { SysAgent = Entity.SysAgent.FirstOrNew(n => n.Id == baseUsers.Agent); } //手续费 OrderTransfer.Poundage = OrderTransfer.PayMoney * (decimal)UserPay.Cost; //手续费进位 OrderTransfer.Poundage = OrderTransfer.Poundage.Ceiling(); //总金额=转帐金额+手续费 OrderTransfer.Amoney = OrderTransfer.PayMoney + OrderTransfer.Poundage; //第三方支付通道率 OrderTransfer.SysRate = (double)PayConfig.Cost; //商户费率 OrderTransfer.UserRate = UserPay.Cost; //这里是利润计算========== //利润=总金额-转到帐-支付手续费 decimal GetAll = OrderTransfer.Amoney - OrderTransfer.PayMoney - OrderTransfer.Amoney * (decimal)OrderTransfer.SysRate; //利润舍位 GetAll = GetAll.Floor(); //总利润 OrderTransfer.AIdPayGet = (double)GetAll; //分支机构佣金设置为0,待分润计算后再写入 OrderTransfer.AgentPayGet = 0; } else //收方出手续费 //获取收方支付配置 { UserPay UserPay = Entity.UserPay.FirstOrDefault(n => n.UId == ToUsers.Id && n.PId == OrderTransfer.AId); if (UserPay == null) { DataObj.OutError("1000"); return; } //获取收方机构信息 if (!ToUsers.Agent.IsNullOrEmpty()) { SysAgent = Entity.SysAgent.FirstOrNew(n => n.Id == ToUsers.Agent); } //总金额=转帐金额+手续费 OrderTransfer.Amoney = OrderTransfer.PayMoney; //手续费 OrderTransfer.Poundage = OrderTransfer.Amoney * (decimal)UserPay.Cost; //手续费进位 OrderTransfer.Poundage = OrderTransfer.Poundage.Ceiling(); //到帐金额 OrderTransfer.PayMoney = OrderTransfer.Amoney - OrderTransfer.Poundage; //第三方支付通道率 OrderTransfer.SysRate = (double)PayConfig.Cost; //商户费率 OrderTransfer.UserRate = UserPay.Cost; //这里是利润计算========== //利润=总金额-转到帐-支付手续费 decimal GetAll = OrderTransfer.Amoney - OrderTransfer.PayMoney - OrderTransfer.Amoney * (decimal)OrderTransfer.SysRate; //利润舍位 GetAll = GetAll.Floor(); //总利润 OrderTransfer.AIdPayGet = (double)GetAll; //分支机构佣金设置为0,待分润计算后再写入 OrderTransfer.AgentPayGet = 0; } OrderTransfer.Agent = SysAgent.Id;//分支机构Id OrderTransfer.AId = baseUsers.AId; OrderTransfer.FId = 0; OrderTransfer.OrderState = 1; OrderTransfer.PayState = 0; OrderTransfer.AgentState = 0; OrderTransfer.AddTime = DateTime.Now; //写入前,判断交易金额限制 if (OrderTransfer.Amoney < syscontrol.SNum || OrderTransfer.Amoney > syscontrol.ENum) { DataObj.OutError("1006"); return; } //写入订单总表 Orders Orders = new Orders(); Orders.UId = OrderTransfer.UId; Orders.TName = "自 " + baseUsers.TrueName + " To " + ToUsers.TrueName; Orders.PayType = OrderTransfer.PayType; switch (Orders.PayType) { case 0: Orders.PayName = "转帐"; break; case 1: Orders.PayName = "当面付"; break; case 2: Orders.PayName = "收银台-钱包"; break; } Orders.RUId = ToUsers.Id; Orders.RName = ToUsers.TrueName; Orders.TType = 3; Orders.TState = 1; Orders.Amoney = OrderTransfer.Amoney; Orders.Poundage = OrderTransfer.Poundage; Orders.AddTime = DateTime.Now; Orders.PayState = 0; Orders.PayWay = PayConfig.Id; Orders.Agent = OrderTransfer.Agent; Orders.AgentState = 0; Orders.AId = OrderTransfer.AId; Orders.FId = 0; string OrderAddress = OrderTransfer.OrderAddress; if (OrderAddress.IsNullOrEmpty()) { OrderAddress = Utils.GetAddressByGPS(OrderTransfer.X, OrderTransfer.Y); } Orders.OrderAddress = OrderAddress; Orders.X = OrderTransfer.X; Orders.Y = OrderTransfer.Y; Orders.Remark = OrderTransfer.Remark; Entity.Orders.AddObject(Orders); Entity.SaveChanges(); Entity.Refresh(RefreshMode.StoreWins, Orders); OrderTransfer.OId = Orders.TNum; Entity.OrderTransfer.AddObject(OrderTransfer); 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); //======================================= Orders.SendMsg(Entity);//发送消息类 DataObj.Data = Orders.OutJson(); 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(); } }
/// <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()); }
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("[ShareTotal3]:", "【Data】" + Data, Ex); } if (json == null) { DataObj.OutError("1000"); return; } Users Users = new Users(); Users = JsonToObject.ConvertJsonToModel(Users, json); if (Users.Token.IsNullOrEmpty()) { DataObj.OutError("1000"); return; } Users = Entity.Users.FirstOrDefault(n => n.Token == Users.Token); if (Users == null)//用户令牌不存在 { DataObj.OutError("2004"); return; } if (Users.State != 1) { DataObj.OutError("2003"); return; } if (Users.CardStae != 2)//未实名认证 { DataObj.OutError("2006"); return; } //if (Users.MiBao != 1)//未设置支付密码 //{ // DataObj.OutError("2008"); // return; //} StringBuilder allsb = new StringBuilder(""); allsb.Append("{ "); #region 分润统计 DateTime tdate = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd")); DateTime ldate = tdate.AddDays(-1); decimal Today = Entity.OrderProfitLog.Where(n => n.UId == Users.Id && n.LogType == 1 && n.AddTime > tdate).Sum(n => (decimal?)n.Profit) ?? 0m; decimal Yesterday = Entity.OrderProfitLog.Where(n => n.UId == Users.Id && n.LogType == 1 && n.AddTime > ldate && n.AddTime < tdate).Sum(n => (decimal?)n.Profit) ?? 0m; decimal Amount = Entity.ShareTotal.Where(n => n.UId == Users.Id).Sum(o => (decimal?)o.Profit) ?? 0m; allsb.Append("\"today\":\"" + Today.ToString("f2") + "\",\"yesterday\":\"" + Yesterday.ToString("f2") + "\",\"total\":\"" + Amount.ToString("f2") + "\",\"list\":"); #endregion string CashName = "PayConfigChange_" + Users.Agent + "_" + Users.Id; if (HasCache) { string StringJson = CacheBuilder.EntityCache.Get(CashName, null) as string; if (!StringJson.IsNullOrEmpty()) { allsb.Append(StringJson + "}"); DataObj.Data = allsb.ToString(); DataObj.Code = "0000"; DataObj.OutString(); return; } } #region 降费套餐 //获取用户所属代理商 SysAgent SysAgent = Entity.SysAgent.FirstOrDefault(x => x.Id == Users.Agent); int ShowType = 0; int AgentId = 0; if (SysAgent != null) { SysAgent TopAgent = SysAgentExtensions.GetTopAgent(SysAgent, Entity); ShowType = TopAgent.AgentState.HasValue ? TopAgent.AgentState.Value : 0; AgentId = TopAgent.Id; } //获取顶级代理商 IList <PayConfigChange> List = null; switch (ShowType) { case 0: //显示好付 List = Entity.PayConfigChange.Where(n => n.AgentId == 0 && n.State == 1).ToList(); break; case 1: //不显示 List = new List <PayConfigChange>(); break; case 2: //显示代理商 List = Entity.PayConfigChange.Where(n => n.AgentId == AgentId && n.State == 1).ToList(); break; } StringBuilder sb = new StringBuilder(""); sb.Append("["); int i = 0; foreach (var p in List) { //处理数据 List <PayConfigTemp> list = Entity.PayConfigTemp.Where(n => n.PCCId == p.Id && n.State == 1).ToList(); bool isAct = false;//是否可升级,默认不能升级 var PCTDelIds = new List <int>(); foreach (var pp in list) { pp.Cols = "PId,Name,Cost,GroupType,Poundage"; PayConfig PC = Entity.PayConfig.FirstOrDefault(n => n.Id == pp.PId && n.State == 1); if (PC != null) { pp.Name = PC.Name; pp.GroupType = PC.GroupType; pp.Poundage = 0; UserPay UP = Entity.UserPay.FirstOrNew(n => n.UId == Users.Id && n.PId == pp.PId); if (pp.Cost < UP.Cost) {//只要有一个比原配置低就可升级 isAct = true; } else { PCTDelIds.Add(pp.Id); } } else { PCTDelIds.Add(pp.Id); } } if (PCTDelIds.Count > 0) { list.RemoveAll(o => PCTDelIds.Contains(o.Id)); } if (p.CState == 1) {//本套餐可升级提现费率 //用户可升级提现费率或提现服务费 if (p.Cash0 < Users.Cash0 || p.ECash0 < Users.ECash0) { var T0Cash = new PayConfigTemp() { Poundage = p.ECash0, Cost = (double)p.Cash0, GroupType = "Cash", Name = "T0提现", PId = 0, }; T0Cash.Cols = "PId,Name,Cost,GroupType,Poundage"; list.Add(T0Cash); isAct = true; } //var T0Cash = new PayConfigTemp() //{ // Poundage = p.ECash0, // Cost = (double)p.Cash0, // GroupType = "Cash", // Name = "T0提现", // PId = 0, //}; //T0Cash.Cols = "PId,Name,Cost,GroupType,Poundage"; //list.Add(T0Cash); //isAct = true; } if (p.EState == 1) { //本套餐可升级提现费率 //用户可升级提现费率或提现服务费 if (p.Cash1 < Users.Cash1 || p.ECash1 < Users.ECash1) //用户可升级提现费率 { var T1Cash = new PayConfigTemp() { Poundage = p.ECash1, Cost = (double)p.Cash1, GroupType = "Cash", Name = "T1提现", PId = 0, }; T1Cash.Cols = "PId,Name,Cost,GroupType,Poundage"; list.Add(T1Cash); isAct = true; } //var T1Cash = new PayConfigTemp() //{ // Poundage = p.ECash1, // Cost = (double)p.Cash1, // GroupType = "Cash", // Name = "T1提现", // PId = 0, //}; //T1Cash.Cols = "PId,Name,Cost,GroupType,Poundage"; //list.Add(T1Cash); //isAct = true; } if (!isAct) { p.State = 0; } //处理数据End if (p.State == 1) { if (i > 0) { sb.Append(","); } sb.Append("{"); sb.Append(p.ToStr()); sb.Append(","); sb.Append(list.EntityToString()); sb.Append("}"); i++; } } sb.Append("]"); string data = sb.ToString(); if (HasCache) { CacheBuilder.EntityCache.Remove(CashName, null); CacheBuilder.EntityCache.Add(CashName, data, DateTime.Now.AddMinutes(6), null); } allsb.Append(sb.ToString() + "}"); #endregion DataObj.Data = allsb.ToString(); DataObj.Code = "0000"; DataObj.OutString(); }
public HttpResponseMessage Charge(UserReq req) { var tokenStr = req.Token; var userId = Convert.ToInt32(req.userId); Token token = CacheHelper.GetUserToken(tokenStr); if (token == null) { return(ControllerHelper.Instance.JsonResult(400, "token失效")); } if (token.Payload.UserID != userId) { return(ControllerHelper.Instance.JsonResult(400, "token错误")); } var payType = req.payType; var payMoney = Convert.ToDecimal(req.payMoney); var Spbill_create_ip = req.spbill_create_ip; var out_trade_no = StringHelperHere.Instance.GetTimeStamp() + StringHelperHere.Instance.GetLastFiveStr(userId.ToString()); UserPay up = new UserPay(); up.type = 0; up.status = false; up.userId = userId; up.createTime = DateTime.Now; up.takeType = payType; up.outTradeNo = out_trade_no; up.money = payMoney; UserPayOper.Instance.Add(up); if (payType == "alipay") { //var str = alipay.CreateAlipayOrder(chargeMoney, out_trade_no, "http://" + apiHost + "/user/chargeByAlipayNotify"); AlipayHelperHere a = new AlipayHelperHere(); var b = a.CreateAlipayOrder(req.payMoney, out_trade_no, "https://fan-di.com/notify/chargeByAlipayNotify"); JObject jo = new JObject(); jo.Add("payType", "alipay"); jo.Add("payStr", b); return(ControllerHelper.Instance.JsonResult(200, JsonConvert.SerializeObject(jo), "")); } else { WXPayHelperHere w = new WXPayHelperHere(); var b = w.CreateWXOrder(payMoney, out_trade_no, "https://fan-di.com/notify/ChargeByWxNotify", Spbill_create_ip); XmlDocument doc = new XmlDocument(); doc.LoadXml(b); if (doc.DocumentElement["return_code"].InnerText != "SUCCESS") { txyInfo txy = new txyInfo(); txy.content = JsonConvert.SerializeObject(doc); //txyInfoOper txyOper = new txyInfoOper(); txyInfoOper.Instance.Add(txy); return(ControllerHelper.Instance.JsonResult(500, "网络不稳定,请稍后")); } JObject jo = new JObject(); jo.Add("payType", "wxpay"); foreach (XmlNode item in doc.DocumentElement.ChildNodes) { if (item.Name != "sign") { jo.Add(item.Name, item.InnerText); } } var timestamp = StringHelperHere.Instance.GetTimeStamp(); jo.Add("timestamp", timestamp); var dict = new Dictionary <string, string>(); foreach (var item in jo) { if (item.Key == "prepay_id") { dict.Add("prepayid", item.Value.ToString()); } if (item.Key == "nonce_str") { dict.Add("noncestr", item.Value.ToString()); } } dict.Add("appid", "wxd8482615c33b8859"); dict.Add("partnerid", "1494504712"); dict.Add("package", "Sign=WXPay"); dict.Add("timestamp", timestamp); string sign = StringHelperHere.Instance.GetWXSign(dict, "2BCF8DD9490E328D2FCEDE7B26643231"); jo.Add("sign", sign); return(ControllerHelper.Instance.JsonResult(200, JsonConvert.SerializeObject(jo), "")); } }
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(); } }
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("[UsersPay]:", "【Data】" + Data, Ex); } if (json == null) { DataObj.OutError("1000"); return; } UserPay UserPay = new UserPay(); UserPay = JsonToObject.ConvertJsonToModel(UserPay, json); //获取用户信息 Users baseUsers = Entity.Users.FirstOrDefault(n => n.Token == UserPay.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; } IList <PayConfig> PayConfigList = Entity.PayConfig.Where(n => n.State == 1).OrderBy(n => n.Sort).ToList(); IList <UserPay> UserPayList = Entity.UserPay.Where(n => n.UId == baseUsers.Id).ToList(); IList <UserPay> List = new List <UserPay>(); foreach (var p in PayConfigList) { UserPay = UserPayList.FirstOrDefault(n => n.PId == p.Id); if (UserPay != null) { UserPay.Name = p.Name; List.Add(UserPay); } } DataObj.Data = List.EntityToJson(); 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("[PayConfigChange]:", "【Data】" + Data, Ex); } if (json == null) { DataObj.OutError("1000"); return; } //JObject pp = (JObject)p; Users Users = new Users(); Users = JsonToObject.ConvertJsonToModel(Users, json); if (Users.Token.IsNullOrEmpty()) { // DataObj.OutError("1000"); return; } Users = Entity.Users.FirstOrDefault(n => n.Token == Users.Token); if (Users == null)//用户令牌不存在 { DataObj.OutError("2004"); return; } if (Users.State != 1) { DataObj.OutError("2003"); return; } if (Users.CardStae != 2)//未实名认证 { DataObj.OutError("2006"); return; } if (Users.MiBao != 1)//未设置支付密码 { DataObj.OutError("2008"); return; } string CashName = "PayConfigChange_" + Users.Agent + "_" + Users.Id; if (HasCache) { string StringJson = CacheBuilder.EntityCache.Get(CashName, null) as string; if (!StringJson.IsNullOrEmpty()) { DataObj.Data = StringJson; DataObj.Code = "0000"; DataObj.OutString(); return; } } //获取用户所属代理商 SysAgent SysAgent = Entity.SysAgent.FirstOrDefault(x => x.Id == Users.Agent); int ShowType = 0; int AgentId = 0; if (SysAgent != null) { SysAgent TopAgent = SysAgentExtensions.GetTopAgent(SysAgent, Entity); ShowType = TopAgent.AgentState.HasValue ? TopAgent.AgentState.Value : 0; AgentId = TopAgent.Id; } //获取顶级代理商 IList <PayConfigChange> List = null; switch (ShowType) { case 0: //显示好付 List = Entity.PayConfigChange.Where(n => n.AgentId == 0 && n.State == 1).ToList(); break; case 1: //不显示 List = new List <PayConfigChange>(); break; case 2: //显示代理商 List = Entity.PayConfigChange.Where(n => n.AgentId == AgentId && n.State == 1).ToList(); break; } StringBuilder sb = new StringBuilder(""); sb.Append("["); int i = 0; foreach (var p in List) { //处理数据 IList <PayConfigTemp> list = Entity.PayConfigTemp.Where(n => n.PCCId == p.Id && n.State == 1).ToList(); bool isAct = false;//是否可升级,默认不能升级 foreach (var pp in list) { pp.Cols = "PId,Name,Cost"; PayConfig PC = Entity.PayConfig.FirstOrNew(n => n.Id == pp.PId && n.State == 1); pp.Name = PC.Name; UserPay UP = Entity.UserPay.FirstOrNew(n => n.UId == Users.Id && n.PId == pp.PId); if (pp.Cost < UP.Cost) {//只要有一个比原配置低就可升级 isAct = true; } } if (p.CState == 1) { //本套餐可升级提现费率 if (p.Cash0 < Users.Cash0) //用户可升级提现费率 { isAct = true; } if (p.ECash0 < Users.ECash0)//用户可升级提现服务费 { isAct = true; } } else { p.Cash0 = -1; p.ECash0 = -1; } if (p.EState == 1) { //本套餐可升级提现服务费 if (p.Cash1 < Users.Cash1)//用户可升级提现费率 { isAct = true; } if (p.ECash1 < Users.ECash1)//用户可升级提现服务费 { isAct = true; } } else { p.Cash1 = -1; p.ECash1 = -1; } if (!isAct) { p.State = 0; } //处理数据End if (p.State == 1) { if (i > 0) { sb.Append(","); } sb.Append("{"); sb.Append(p.ToStr()); sb.Append(","); sb.Append(list.EntityToString()); sb.Append("}"); i++; } } sb.Append("]"); string data = sb.ToString(); if (HasCache) { CacheBuilder.EntityCache.Remove(CashName, null); CacheBuilder.EntityCache.Add(CashName, data, DateTime.Now.AddMinutes(6), null); } DataObj.Data = data; DataObj.Code = "0000"; DataObj.OutString(); //Tools.OutString(ErrInfo.Return("0000")); }
public void OpenOrBindUser(int id, string PowerID = "") { SysAgent SysAgent = Entity.SysAgent.FirstOrDefault(n => n.Id == id); if (!SysAgent.MyUId.IsNullOrEmpty()) { //已绑定 return; } SysAdmin SysAdmin = new SysAdmin(); SysSet ss = new SysSet(); ss.SMSEnd = BasicSet.SMSEnd; if (SysAgent.AdminId.IsNullOrEmpty()) { //未绑定管理员 SysAdmin = Entity.SysAdmin.Where(n => n.UserName == SysAgent.LinkMobile).OrderBy(n => n.Id).FirstOrDefault(); if (SysAdmin == null) { //获取是否开通过管理员 SysAdmin = Entity.SysAdmin.Where(n => n.AgentId == SysAgent.Id).FirstOrDefault(); if (SysAdmin == null) { //开通管理员帐号 SysAdmin = new SysAdmin(); SysAdmin.UserName = SysAgent.LinkMobile; SysAdmin.TrueName = SysAgent.Linker; SysAdmin.Mobile = SysAgent.LinkMobile; SysAdmin.Email = ""; SysAdmin.State = SysAgent.State; SysAdmin.LoginTimes = 0; SysAdmin.AddTime = DateTime.Now; SysAdmin.AgentId = SysAgent.Id; SysAdmin.PowerID = PowerID; string PassWord = Utils.GetCode(); SysAdmin.PassWord = PassWord.GetAdminMD5(); Entity.SysAdmin.AddObject(SysAdmin); Entity.SaveChanges(); SysAgent.AdminId = SysAdmin.Id; Entity.SaveChanges(); if (SysAgent.AdminId.IsNullOrEmpty()) { //绑定第一个管理员 SysAgent.AdminId = SysAdmin.Id; } Entity.SaveChanges(); //开通后发送短信 string SendText = "您的服务商管理账户已经开通,帐号:{0},密码:{1}。"; SendText = string.Format(SendText, SysAdmin.UserName, PassWord); this.SendSMS(SendText, SysAdmin.Mobile, ss); } } if (SysAdmin.AgentId.IsNullOrEmpty()) { //所属手机号是管理员 return; } if (SysAdmin.AgentId != SysAgent.Id) { //手机号所属于管理员不属于本代理商 return; } SysAgent.AdminId = SysAdmin.Id; Entity.SaveChanges(); } Users Users = Entity.Users.FirstOrDefault(n => n.UserName == SysAgent.LinkMobile); if (Users == null) { //注册用户 Users = new Users(); Users.UserName = SysAgent.LinkMobile; Users.Mobile = SysAgent.LinkMobile; string PassWord = Utils.GetCode(); Users.PassWord = PassWord.GetMD5(); Users.RegAddress = "下级代理自动开通"; Users.X = "0"; Users.Y = "0"; Users.MobileState = 2; Users.EmailState = 0; Users.CardStae = 0; Users.State = 0; Users.Amount = 0; Users.Frozen = 0; Users.AddTime = DateTime.Now; Users.PayPwd = ""; Users.Agent = SysAgent.Id;//默认指定 Users.SAId = SysAgent.Id; //Users.SALevel = SysAgent.Levels; Users.AId = SysAdmin.Id;//默认指定 Entity.Users.AddObject(Users); Entity.SaveChanges(); //======================================= UserTrack UserTrack = new UserTrack(); UserTrack.ENo = string.Empty; UserTrack.OPType = "下级代理开通"; UserTrack.IfYY = string.Empty; UserTrack.EqMobile = string.Empty; UserTrack.SysVer = string.Empty; UserTrack.SoftVer = string.Empty; UserTrack.SignalType = string.Empty; UserTrack.GPSAddress = string.Empty; UserTrack.GPSX = "0"; UserTrack.GPSY = "0"; Users.SeavGPSLog(UserTrack, Entity); //======================================= SysAgent.MyUId = Users.Id; Entity.SaveChanges(); //自动开通 //IList<PayConfig> PCList = Entity.PayConfig.Where(n => n.State == 1).ToList(); //foreach (var PC in PCList) //{ // UserPay UserPay = new UserPay(); // UserPay.UId = Users.Id; // UserPay.PId = PC.Id; // UserPay.Cost = (double)PC.CostUser; // Entity.UserPay.AddObject(UserPay); //} //使用代理配置 IList <UserPayAgent> UPAList = Entity.UserPayAgent.Where(n => n.AId == SysAgent.Id).OrderBy(n => n.PId).ToList(); foreach (var p in UPAList) { UserPay UserPay = new UserPay(); UserPay.UId = Users.Id; UserPay.PId = p.PId; UserPay.Cost = p.Cost; Entity.UserPay.AddObject(UserPay); } SysSet Sys = Entity.SysSet.FirstOrDefault(); //Users.Cash0 = Sys.Cash0; //Users.ECash0 = Sys.ECash0; //Users.Cash1 = Sys.Cash1; //Users.ECash1 = Sys.ECash1; //使用代理配置 Users.Cash0 = SysAgent.Cash0; Users.Cash1 = SysAgent.Cash1; Users.ECash0 = SysAgent.ECash0; Users.ECash1 = SysAgent.ECash1; Users.State = 1; Entity.SaveChanges(); //自动开通End //开通后发送短信 string SendText = "您的钱包账户已经开通,帐号:{0},密码:{1}。"; SendText = string.Format(SendText, Users.UserName, PassWord); this.SendSMS(SendText, Users.UserName, ss); } else { SysAgent.MyUId = Users.Id; //钱包帐户所属于代理商改成自己,避免推广用户属于原代理商 Users.Agent = SysAgent.Id; //默认指定 Users.SAId = SysAgent.Id; Users.AId = SysAdmin.Id; //默认指定 Users.MyPId = 0; Entity.SaveChanges(); string SendText = "您的钱包账户“{0}”,绑定成为{1}的结算帐户。"; SendText = string.Format(SendText, Users.UserName, SysAgent.Name); this.SendSMS(SendText, Users.UserName, ss); } }
public void Save(Users Users) { if (Users.UserName.IsNullOrEmpty() || Users.PassWord.IsNullOrEmpty() || Users.Code.IsNullOrEmpty()) { Response.Write("0"); return; } //验证是否重复 Users Old = Entity.Users.FirstOrDefault(n => n.UserName == Users.UserName); if (Old != null) { Response.Write("1"); return; } if (Entity.UserBlackList.FirstOrDefault(UBL => UBL.CardNumber == Users.UserName && UBL.State == 1) != null) { Response.Write("6"); return; } //手机验证码 //失效之前获取验证码 SMSCode SMSCode = Entity.SMSCode.OrderByDescending(n => n.Id).FirstOrDefault(n => n.UId == 0 && n.Mobile == Users.UserName && n.CType == 1 && n.Code == Users.Code); if (SMSCode == null) { Response.Write("2"); return; } SysSet SysSet = Entity.SysSet.FirstOrNew(); if (SMSCode.State != 1) { Response.Write("3"); return; } if (SMSCode.AddTime.AddMinutes(SysSet.SMSActives) < DateTime.Now) { Response.Write("4"); return; } Users.Agent = 1; //默认指定 Users.AId = 2; //默认指定 if (!Users.MyPId.IsNullOrEmpty()) { Users U = Entity.Users.FirstOrDefault(n => n.Id == Users.MyPId && n.State == 1); if (U == null) { Users.MyPId = 0; Utils.WriteLog("Users.MyPId=" + Users.MyPId + "Is Null!", "UsersRegAgent" + DateTime.Now.ToString("yyyy-MM-dd")); } else { Users.Agent = U.Agent; //默认指定 Users.AId = U.AId; //默认指定 } } else { Users.MyPId = 0; } if (!Users.PayConfigId.IsNullOrEmpty()) { PayConfigChange PCC = Entity.PayConfigChange.FirstOrDefault(n => n.Id == Users.PayConfigId && n.State == 1 && n.ShareNumber > 0); if (PCC == null) { Users.PayConfigId = 0; } Users.ShareType = 2; } else { Users.PayConfigId = 0; } if (Users.ShareType == 2) { if (Users.PayConfigId.IsNullOrEmpty() || Users.MyPId.IsNullOrEmpty()) { //Users.MyPId = 0; Users.PayConfigId = 0; } } else { if (Users.MyPId.IsNullOrEmpty()) { Users.MyPId = 0; } Users.PayConfigId = 0; } if (Users.MyPId == 0) { Response.Write("5"); return; } Users.PassWord = Users.PassWord.GetMD5(); Users.Mobile = Users.UserName; Users.EmailState = 0; Users.CardStae = 0; Users.State = 0; Users.Amount = 0; Users.Frozen = 0; Users.AddTime = DateTime.Now; Users.PayPwd = ""; //Users.Agent = 1;//默认指定 //Users.AId = 2;//默认指定 Users.MobileState = 2; Users.RegAddress = "网页注册," + Utils.GetAddressAndIp(); Users.X = "0"; Users.Y = "0"; Entity.Users.AddObject(Users); Entity.SaveChanges(); //======================================= UserTrack UserTrack = new UserTrack(); UserTrack.ENo = string.Empty; UserTrack.OPType = "网页注册"; UserTrack.IfYY = string.Empty; UserTrack.EqMobile = string.Empty; UserTrack.SysVer = Utils.GetCustomOS(); //操作系统版本 UserTrack.SoftVer = Utils.GetCustomBrowser(); //软件版本 UserTrack.SignalType = string.Empty; UserTrack.GPSAddress = string.Empty; UserTrack.GPSX = "0"; UserTrack.GPSY = "0"; Users.SeavGPSLog(UserTrack, Entity); //======================================= SMSCode.State = 2; SMSCode.UId = Users.Id; Entity.SaveChanges(); //自动开通 //IList<PayConfig> PCList = Entity.PayConfig.Where(n => n.State == 1).ToList(); //foreach (var PC in PCList) //{ // UserPay UserPay = new UserPay(); // UserPay.UId = Users.Id; // UserPay.PId = PC.Id; // UserPay.Cost = (double)PC.CostUser; // Entity.UserPay.AddObject(UserPay); //} SysAgent SysAgent = Entity.SysAgent.FirstOrDefault(n => n.Id == Users.Agent && n.State == 1); if (SysAgent == null) { Utils.WriteLog("Users.Id=" + Users.Id + "Read Agent Null Users.Agent=" + Users.Agent + "!", "UsersRegAgent" + DateTime.Now.ToString("yyyy-MM-dd")); SysAgent = Entity.SysAgent.FirstOrDefault(n => n.Id == 1 && n.State == 1); Users.Agent = SysAgent.Id; Users.AId = SysAgent.AdminId.GetValueOrDefault(); } //使用代理配置 IList <UserPayAgent> UPAList = Entity.UserPayAgent.Where(n => n.AId == SysAgent.Id).OrderBy(n => n.PId).ToList(); foreach (var p in UPAList) { UserPay UserPay = new UserPay(); UserPay.UId = Users.Id; UserPay.PId = p.PId; UserPay.Cost = p.Cost; Entity.UserPay.AddObject(UserPay); } //SysSet Sys = Entity.SysSet.FirstOrDefault(); //Users.Cash0 = Sys.Cash0; //Users.ECash0 = Sys.ECash0; //Users.Cash1 = Sys.Cash1; //Users.ECash1 = Sys.ECash1; //使用代理配置 Users.Cash0 = SysAgent.Cash0; Users.Cash1 = SysAgent.Cash1; Users.ECash0 = SysAgent.ECash0; Users.ECash1 = SysAgent.ECash1; Users.State = 1; Entity.SaveChanges(); //自动开通End Response.Write("OK"); }
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("[UsersReg_2_0]:", "【Data】" + Data, Ex); } if (json == null) { DataObj.OutError("1000"); return; } //JObject pp = (JObject)p; Users Users = new Users(); Users = JsonToObject.ConvertJsonToModel(Users, json); if (Users.Mobile.IsNullOrEmpty()) { // DataObj.OutError("1000"); return; } //验证是否重复 Users Old = Entity.Users.FirstOrDefault(n => n.Mobile == Users.Mobile); if (Old != null) { DataObj.OutError("2005"); return; } //手机号码黑名单验证 if (Entity.UserBlackList.FirstOrDefault(UBL => UBL.CardNumber == Users.Mobile && UBL.State == 1) != null) { //提示暂不支持该手机号入网 DataObj.OutError("2035"); return; } Users baseUsers = null; if (Users.Token.IndexOf("Print|") == -1) { baseUsers = Entity.Users.FirstOrDefault(n => n.Token == Users.Token); } else { baseUsers = Entity.Users.FirstOrDefault(n => n.PrintToken == Users.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; } int IntervalCountAll = Entity.Users.Count(o => o.MyPId == baseUsers.Id && o.ShareType == 4);//统计所有邀请人数 if (IntervalCountAll > 20) { //20人以上,验证其认证通过率 int IntervalCountRZ = Entity.Users.Count(o => o.MyPId == baseUsers.Id && o.ShareType == 4 && o.CardStae == 2);//统计所有邀请并认证人数 if (IntervalCountRZ * 10 < IntervalCountAll) { DataObj.OutError("2102"); return; } } SysSet SysSet = this.Entity.SysSet.FirstOrNew(); DateTime IntervalTime = DateTime.Now.AddSeconds(0 - SysSet.YaoQingIntervalTime); int IntervalCount = this.Entity.Users.Where(o => o.MyPId == baseUsers.Id && o.ShareType == 4 && o.AddTime > IntervalTime).Count(); if (IntervalCount >= SysSet.YaoQingIntervalNumber) { DataObj.OutError("2101"); return; } //邀请注册 Users inviteUsers = new Users(); inviteUsers.UserName = Users.Mobile; inviteUsers.Mobile = Users.Mobile; inviteUsers.Agent = baseUsers.Agent; inviteUsers.AId = baseUsers.AId; inviteUsers.MyPId = baseUsers.Id; inviteUsers.ShareType = 4; inviteUsers.RegAddress = "短信邀请"; inviteUsers.X = "0"; inviteUsers.Y = "0"; string PassWord = Utils.GetCode(); inviteUsers.PassWord = PassWord.GetMD5(); inviteUsers.MobileState = 2; inviteUsers.EmailState = 0; inviteUsers.CardStae = 0; inviteUsers.State = 0; inviteUsers.Amount = 0; inviteUsers.Frozen = 0; inviteUsers.AddTime = DateTime.Now; inviteUsers.PayPwd = ""; Entity.Users.AddObject(inviteUsers); //======================================= UserTrack UserTrack = new UserTrack(); UserTrack.ENo = string.Empty; UserTrack.OPType = "邀请注册"; UserTrack.IfYY = string.Empty; UserTrack.EqMobile = string.Empty; UserTrack.SysVer = string.Empty; UserTrack.SoftVer = string.Empty; UserTrack.SignalType = string.Empty; UserTrack.GPSAddress = string.Empty; UserTrack.GPSX = "0"; UserTrack.GPSY = "0"; Users.SeavGPSLog(UserTrack, Entity); //======================================= //自动开通 //IList<PayConfig> PCList = Entity.PayConfig.Where(n => n.State == 1).ToList(); //foreach (var PC in PCList) //{ // UserPay UserPay = new UserPay(); // UserPay.UId = inviteUsers.Id; // UserPay.PId = PC.Id; // UserPay.Cost = (double)PC.CostUser; // Entity.UserPay.AddObject(UserPay); //} SysAgent SysAgent = Entity.SysAgent.FirstOrDefault(n => n.Id == inviteUsers.Agent && n.State == 1); if (SysAgent == null) { SysAgent = Entity.SysAgent.FirstOrDefault(n => n.Id == 1 && n.State == 1); inviteUsers.Agent = SysAgent.Id; inviteUsers.AId = SysAgent.AdminId.GetValueOrDefault(); } //使用代理配置 IList <UserPayAgent> UPAList = Entity.UserPayAgent.Where(n => n.AId == SysAgent.Id).OrderBy(n => n.PId).ToList(); foreach (var p in UPAList) { UserPay UserPay = new UserPay(); UserPay.UId = inviteUsers.Id; UserPay.PId = p.PId; UserPay.Cost = p.Cost; Entity.UserPay.AddObject(UserPay); } SysSet Sys = Entity.SysSet.FirstOrDefault(); //inviteUsers.Cash0 = Sys.Cash0; //inviteUsers.ECash0 = Sys.ECash0; //inviteUsers.Cash1 = Sys.Cash1; //inviteUsers.ECash1 = Sys.ECash1; //使用代理配置 inviteUsers.Cash0 = SysAgent.Cash0; inviteUsers.Cash1 = SysAgent.Cash1; inviteUsers.ECash0 = SysAgent.ECash0; inviteUsers.ECash1 = SysAgent.ECash1; inviteUsers.State = 1; Entity.SaveChanges(); //自动开通End //开通后发送短信 string NoteDownload = "https://fir.im/he3q"; string CompanyName = Sys.Name; //查询根代理 //var CurrentAgent = this.Entity.SysAgent.FirstOrNew(o => o.Id == baseUsers.Agent);//当前代理 //if (CurrentAgent.Tier == 1) //{ // if (CurrentAgent.IsTeiPai == 1) { // CompanyName = CurrentAgent.APPName; // NoteDownload = CurrentAgent.NoteDownload.IsNullOrEmpty() ? NoteDownload : CurrentAgent.NoteDownload; // } //} //else //{ // var TreeAgent = CurrentAgent.GetAgentsById(Entity); // SysAgent RootAgent = TreeAgent.FirstOrDefault(o => o.Tier == 1); // if (RootAgent.IsTeiPai == 1) // { // CompanyName = RootAgent.APPName; // NoteDownload = RootAgent.NoteDownload.IsNullOrEmpty() ? NoteDownload : RootAgent.NoteDownload; // } //} //根代理 //string SendText = "{2}邀请您使用{3},您的账号{0}已开通,登陆密码{1},登陆后请修改登陆密码和尽快实名认证!APP下载地址{4}。"; //SendText = string.Format(SendText, inviteUsers.UserName, PassWord, baseUsers.Mobile, CompanyName, NoteDownload); string SendText = "您的账号{0}已开通,登陆密码{1},登录后请修改登录密码和尽快实名认证!APP下载地址{2}。"; SendText = string.Format(SendText, inviteUsers.UserName, PassWord, NoteDownload); SMSLog SMSLog = new SMSLog(); SMSLog.SendText = SendText; SMSLog.Mobile = inviteUsers.UserName; SMSLog.UId = baseUsers.Id; SysSet ss = new SysSet(); ss.SMSEnd = Sys.SMSEnd; SysAgent SA = Entity.SysAgent.FirstOrNew(n => n.Id == baseUsers.Agent); SA = SA.GetTopAgent(Entity); SMSLog.SendSMS(ss, SA, Entity); //邀请注册end DataObj.Data = ""; DataObj.Code = "0000"; DataObj.OutString(); }
public HttpResponseMessage ConvertCoupon(UserReq req) { var tokenStr = req.Token; var userId = Convert.ToInt32(req.userId); Token token = CacheHelper.GetUserToken(tokenStr); if (token == null) { return(ControllerHelper.Instance.JsonResult(400, "token失效")); } if (token.Payload.UserID != userId) { return(ControllerHelper.Instance.JsonResult(400, "token错误")); } var couponNo = req.couponNo; var list = CouponOper.Instance.GetByCouponNo(couponNo); if (list.Count < 1) { return(ControllerHelper.Instance.JsonResult(500, "兑换码不存在")); } list = list.Where(p => p.isUse == false).ToList(); if (list.Count < 1) { return(ControllerHelper.Instance.JsonResult(500, "兑换码已被使用")); } var coupon = list.First(); var now = DateTime.Now; var set = new SettingRes(); var couponDays = Convert.ToInt32(set.couponSaveDays); if (Convert.ToDateTime(coupon.createTime).AddDays(couponDays) < now) { return(ControllerHelper.Instance.JsonResult(500, "兑换码已过期")); } //if ((bool)coupon.isUse) // return ControllerHelper.Instance.JsonResult(500, "兑换码已被使用"); var ts = coupon.batch; if (CouponOper.Instance.isUserUsedCoupon(userId, ts)) { return(ControllerHelper.Instance.JsonResult(500, "已使用过同类型兑换码")); } coupon.isUse = true; if (!(bool)coupon.isRepeat) { CouponOper.Instance.AddCouponIds(userId, ts); } CouponOper.Instance.Update(coupon); var user = UserInfoOper.Instance.GetById(userId); var userHere = new UserInfo(); userHere.id = user.id; userHere.coupon = user.coupon + coupon.money; UserInfoOper.Instance.Update(userHere); UserPay up = new UserPay(); up.type = 1; up.money = coupon.money; up.userId = userId; up.createTime = DateTime.Now; UserPayOper.Instance.Add(up); return(ControllerHelper.Instance.JsonResult(200, "兑换成功")); }