public ActionResult Index(Users Users) { if (!Users.Id.IsNullOrEmpty()) { Users = Entity.Users.FirstOrNew(n => n.Id == Users.Id); } ViewBag.Users = Users; IList <SysControl> SysControlList = new List <SysControl>(); if (IsWeiXinBrowser) { SysControlList = Entity.SysControl.Where(n => n.State == 1 && n.Tag == "WeiXin" && n.LagEntryNum == 0).OrderBy(n => n.Sort).ToList(); } else if (IsAlipayBrowser) { SysControlList = Entity.SysControl.Where(n => n.State == 1 && n.Tag == "Alipay" && n.LagEntryNum == 0).OrderBy(n => n.Sort).ToList(); } DateTime Now = DateTime.Now; DateTime ToDay = DateTime.Parse(Now.ToString("yyyy-MM-dd")); IList <SysControl> List = new List <SysControl>(); foreach (var p in SysControlList) { SysControl SC = p.GetState(); if (SC.State == 1) { SC.CName = p.CName; SC.PayWay = p.PayWay; List.Add(SC); } } ViewBag.SysControlList = List; return(View()); }
public void Delete(SysControl SysControl, string InfoList, int?IsDel) { if (string.IsNullOrEmpty(InfoList)) { InfoList = SysControl.Id.ToString(); } int Ret = Entity.MoveToDeleteEntity <SysControl>(InfoList, IsDel, AdminUser.UserName); Entity.SaveChanges(); Response.Write(Ret); }
public void ChangeStatus(SysControl SysControl, string InfoList, string Clomn, string Value) { if (string.IsNullOrEmpty(InfoList)) { InfoList = SysControl.Id.ToString(); } int Ret = Entity.ChangeEntity <SysControl>(InfoList, Clomn, Value); Entity.SaveChanges(); Response.Write(Ret); }
public ActionResult Index(Users Users) { if (!Users.Id.IsNullOrEmpty()) { Users = Entity.Users.FirstOrNew(n => n.Id == Users.Id); } ViewBag.Users = Users; IList <SysControl> SysControlList = new List <SysControl>(); if (IsWeiXinBrowser) { SysControlList = Entity.SysControl.Where(n => n.State == 1 && n.Tag == "WeiXin").OrderBy(n => n.Sort).ToList(); } else if (IsAlipayBrowser) { SysControlList = Entity.SysControl.Where(n => n.State == 1 && n.Tag == "Alipay").OrderBy(n => n.Sort).ToList(); } else { SysControlList = Entity.SysControl.Where(n => n.State == 1 && n.Tag == "RecMoneyMulti").OrderBy(n => n.Sort).ToList(); } DateTime Now = DateTime.Now; DateTime ToDay = DateTime.Parse(Now.ToString("yyyy-MM-dd")); IList <SysControl> List = new List <SysControl>(); foreach (var p in SysControlList) { SysControl SC = p.GetState(); if (SC.State == 1) { SC.CName = p.CName; SC.PayWay = p.PayWay; List.Add(SC); } //if (p.TimeType == 0) { // List.Add(p); //} //else if (p.TimeType == 1) { // DateTime sTime = p.STime; // DateTime eTime = p.ETime; // DateTime STime = ToDay.AddHours(sTime.Hour).AddMinutes(sTime.Minute).AddSeconds(sTime.Second); // DateTime ETime = ToDay.AddHours(eTime.Hour).AddMinutes(eTime.Minute).AddSeconds(eTime.Second); // if (STime < Now && ETime > Now) // { // List.Add(p); // } //} } ViewBag.SysControlList = List; return(View()); }
public void Execute(IJobExecutionContext context) { string JobName = "AutoCash"; string CanRun = ConfigurationManager.AppSettings["Run" + JobName].ToString(); if (CanRun == "true") { if (!IsRun) { LokFuEntity Entity = new LokFuEntity(); IsRun = true; try { Log.Write(JobName + "任务开始执行!"); //------------------------------------------------------- #region 任务主体 IList <Users> List = Entity.Users.Where(n => n.State == 1 && n.AutoCash == 1 && n.Amount >= n.AutoCashMoney).ToList(); SysSet SysSet = Entity.SysSet.FirstOrDefault(); SysControl SysControl = Entity.SysControl.FirstOrDefault(n => n.Tag == "Cash"); if (SysControl != null) { foreach (var p in List) { p.AutoCash(Entity, SysSet, SysControl); Log.WriteLog("提现完成:" + p.UserName, JobName); } } #endregion //------------------------------------------------------- Log.Write(JobName + "任务执行结束![共计" + List.Count + "条]"); } catch (Exception Ex) { Log.Write(JobName + "任务执行过程出错!", Ex); } IsRun = false; } else { Log.Write(JobName + "任务还在执行中!"); } } }
public ActionResult Edit(SysControl SysControl) { if (SysControl.Id != 0) { SysControl = Entity.SysControl.FirstOrDefault(n => n.Id == SysControl.Id); } if (SysControl == null) { ViewBag.ErrorMsg = "数据不存在"; return(View("Error")); } ViewBag.SysControl = SysControl; if (Request.UrlReferrer != null) { Session["Url"] = Request.UrlReferrer.ToString(); } IList <PayConfig> PayConfigList = Entity.PayConfig.Where(n => n.State == 1).OrderBy(n => n.Sort).ToList(); ViewBag.PayConfigList = PayConfigList; return(View()); }
public ActionResult Add(SysControl SysControl, int STimeHH, int STimemm, int ETimeHH, int ETimemm) { //判断维一 if (SysControl.PayWay > 0) { SysControl tempSysControl = Entity.SysControl.FirstOrDefault(n => n.PayWay == SysControl.PayWay); if (tempSysControl != null) { ViewBag.ErrorMsg = "已经绑定在“" + tempSysControl.CName + "”"; return(View("Error")); } } DateTime STime = DateTime.Parse("1990-01-01 " + STimeHH + ":" + STimemm + ":00"); DateTime ETime = DateTime.Parse("1990-01-01 " + ETimeHH + ":" + ETimemm + ":" + (ETimeHH == 23 && ETimemm == 59 ? "59" : "00")); SysControl.STime = STime; SysControl.ETime = ETime; SysControl.AddTime = DateTime.Now; Entity.SysControl.AddObject(SysControl); Entity.SaveChanges(); if (SysControl.Tag == "RecMoneyMulti" || SysControl.Tag == "RecMoneyLocal") { if (SysControl.State == 1 || SysControl.State == 2) { if (SysControl.Tag == "RecMoneyMulti") { Entity.ExecuteStoreCommand("Update SysControl Set State=0 Where Tag='RecMoneyLocal'"); } if (SysControl.Tag == "RecMoneyLocal") { Entity.ExecuteStoreCommand("Update SysControl Set State=0 Where Tag='RecMoneyMulti'"); } } Entity.SaveChanges(); } BaseRedirect(); return(View("Succeed")); }
public ActionResult Save(SysControl SysControl, int STimeHH, int STimemm, int ETimeHH, int ETimemm) { DateTime STime = DateTime.Parse("1990-01-01 " + STimeHH + ":" + STimemm + ":00"); DateTime ETime = DateTime.Parse("1990-01-01 " + ETimeHH + ":" + ETimemm + ":" + (ETimeHH == 23 && ETimemm == 59 ? "59" : "00")); SysControl baseSysControl = Entity.SysControl.FirstOrDefault(n => n.Id == SysControl.Id); if (SysControl.PayWay != baseSysControl.PayWay && SysControl.PayWay > 0) { //修改了通道 SysControl tempSysControl = Entity.SysControl.FirstOrDefault(n => n.Id != baseSysControl.Id && n.PayWay == SysControl.PayWay); if (tempSysControl != null) { ViewBag.ErrorMsg = "已经绑定在“" + tempSysControl.CName + "”"; return(View("Error")); } } baseSysControl = Request.ConvertRequestToModel <SysControl>(baseSysControl, SysControl); baseSysControl.STime = STime; baseSysControl.ETime = ETime; Entity.SaveChanges(); if (SysControl.Tag == "RecMoneyMulti" || SysControl.Tag == "RecMoneyLocal") { if (SysControl.State == 1 || SysControl.State == 2) { if (SysControl.Tag == "RecMoneyMulti") { Entity.ExecuteStoreCommand("Update SysControl Set State=0 Where Tag='RecMoneyLocal'"); } if (SysControl.Tag == "RecMoneyLocal") { Entity.ExecuteStoreCommand("Update SysControl Set State=0 Where Tag='RecMoneyMulti'"); } } Entity.SaveChanges(); } BaseRedirect(); return(View("Succeed")); }
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(); } }
private ActionResult WeiXinPay(Users Users, decimal Amount, PayConfig PayConfig, SysControl SysControl) { if (Users.Token.IsNullOrEmpty()) { Users.Token = DateTime.Now.ToString().GetMD5(); Entity.SaveChanges(); } int InType = 0; if (SysControl.LagEntryNum > 0) { InType = 1; } #region 微信支付 string PostJson = "{amoney:" + Amount.ToString("F2") + ",token:\"" + Users.Token + "\",payid:\"shop\",otype:8,action:\"Create\",x:\"0\",y:\"0\",intype:\"" + InType + "\",payway:\"" + PayConfig.Id + "\",orderaddress:\"网店收银台,IP:" + Utils.GetAddressAndIp() + "\",ip:\"" + Utils.GetIP() + "\"}"; //提交数据 string PostData = LokFuEncode.LokFuAPIEncode(PostJson, Shop_Keys); PostData = HttpUtility.UrlEncode(PostData); //Post参数 string PostString = "eno=" + Shop_ENO + "&data=" + PostData + "&code=0000"; //AppPath = "http://localhost:2610"; string url = AppPath + "/API/OrderQC/"; string RetString = Utils.PostRequest(url, PostString, "utf-8"); JObject json = new JObject(); try { json = (JObject)JsonConvert.DeserializeObject(RetString); } catch (Exception) { ViewBag.ErrorMsg = "接口数据有误![01]"; return(View("Error")); } if (json == null) { ViewBag.ErrorMsg = "接口数据有误![02]"; return(View("Error")); } string code = ""; string data = ""; try { code = json["code"].ToString(); data = json["data"].ToString(); } catch (Exception) { ViewBag.ErrorMsg = "接口数据有误![03]"; return(View("Error")); } if (code != "0000") { ViewBag.ErrorMsg = "交易有误![" + code + "]"; return(View("Error")); } //解密 string RetData = LokFuEncode.LokFuAPIDecode(data, Shop_Keys); JObject Json = new JObject(); try { Json = (JObject)JsonConvert.DeserializeObject(RetData); } catch (Exception) { ViewBag.ErrorMsg = "数据解析有误![01]"; return(View("Error")); } if (Json == null) { ViewBag.ErrorMsg = "数据解析有误![02]"; return(View("Error")); } Orders Orders = new Orders(); Orders = JsonToObject.ConvertJsonToModel(Orders, Json); if (Orders.PayId.IsNullOrEmpty()) { ViewBag.ErrorMsg = "订单信息有误"; return(View("Error")); } string PayId = Orders.PayId; string[] PayConfigArr = PayConfig.QueryArray.Split(new char[] { ',' }); if (PayConfig.DllName == "WeiXin") { string AppId = PayConfigArr[0]; string AppKey = PayConfigArr[2]; WxPayData jsApiParam = new WxPayData(); jsApiParam.SetValue("appId", AppId); jsApiParam.SetValue("timeStamp", WxPayApi.GenerateTimeStamp()); jsApiParam.SetValue("nonceStr", WxPayApi.GenerateNonceStr()); jsApiParam.SetValue("package", "prepay_id=" + PayId); jsApiParam.SetValue("signType", "MD5"); jsApiParam.SetValue("paySign", jsApiParam.MakeSign(AppKey)); string Parameters = jsApiParam.ToJson(); ViewBag.Parameters = Parameters; Orders = Entity.Orders.FirstOrNew(n => n.TNum == Orders.TNum); ViewBag.Orders = Orders; return(View("WeiXinPay")); } else if (PayConfig.DllName == "HFWeiXin") { //提交结算中心 string merId = PayConfigArr[0]; //商户号 string merKey = PayConfigArr[1]; //商户密钥 string orderId = Orders.TNum; //商户流水号 string myData = "{\"merid\":\"" + merId + "\",\"orderid\":\"" + orderId + "\",\"code\":\"" + PayId + "\"}"; string DataBase64 = LokFuEncode.Base64Encode(myData, "utf-8"); string 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; //Response.Redirect(Url); return(this.Redirect(Url)); } else { return(View("Null")); } //return View("Null"); #endregion }
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 Users = Entity.Users.FirstOrNew(n => n.Id == shopid && n.State == 1 && n.CardStae == 2); if (Users.Id.IsNullOrEmpty()) { ViewBag.ErrorMsg = "商户信息有误,请核实!"; return(View("Error")); } if (Amount <= 0) { ViewBag.ErrorMsg = "付款金额有误![00]"; return(View("Error")); } string Tag = string.Empty; if (IsWeiXinBrowser) { Tag = "WeiXin"; } else if (IsAlipayBrowser) { Tag = "Alipay"; } else { Tag = "RecMoneyMulti"; } SysControl SysControl = Entity.SysControl.FirstOrNew(n => n.Tag == Tag && n.Id == payway); SysControl syscontrol = SysControl.ChkState(); if (syscontrol.State != 1) { ViewBag.ErrorMsg = "支付接口维护中,请使用其它支付通道!"; return(View("Error")); } int SNum = syscontrol.SNum; int ENum = syscontrol.ENum; if (SysControl.Tag == "RecMoneyMulti") { if (ENum > BasicSet.CtrlMoney1) { ENum = (int)BasicSet.CtrlMoney1; } } if (Amount < SNum || Amount > ENum) { ViewBag.ErrorMsg = "收款金额范围:" + SNum + "~" + ENum + "元!"; return(View("Error")); } var PayConfig = Entity.PayConfig.FirstOrDefault(o => o.Id == SysControl.PayWay); if (PayConfig == null) { ViewBag.ErrorMsg = "支付配置不存在"; return(View("Error")); } //业务开始 switch (PayConfig.DllName) { case "Transfer": //钱包接口 OrderTransfer OrderTransfer = new OrderTransfer(); OrderTransfer.Amoney = Amount; OrderTransfer.Remark = Users.UserName; ViewBag.OrderTransfer = OrderTransfer; SysAgent SysAgent = Entity.SysAgent.FirstOrNew(n => n.Id == Users.Agent && n.State == 1 && n.IsTeiPai == 1); ViewBag.SysAgent = SysAgent; return(View("Transfer")); case "HFAliPay": //不管直联还是结算中心,由API处理 case "Alipay": return(AliPay(Users, Amount, PayConfig, SysControl)); case "HFWeiXin": //不管直联还是结算中心,由API处理 case "WeiXin": return(WeiXinPay(Users, Amount, PayConfig, SysControl)); case "Unionpay": //走银联接口 case "HFPay": //走银联接口 return(BankPay(Users, Amount, PayConfig, SysControl)); default: 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("[OrderCash]:", "【Data】" + Data, Ex); } if (json == null) { DataObj.OutError("1000"); return; } //System.Threading.Thread.Sleep(60000 * 60 * 24); OrderCash OrderCash = new OrderCash(); OrderCash = JsonToObject.ConvertJsonToModel(OrderCash, json); UserTrack UserTrack = new UserTrack(); UserTrack = JsonToObject.ConvertJsonToModel(UserTrack, json); if (OrderCash.TrunType.IsNullOrEmpty()) { OrderCash.TrunType = 0; } if (OrderCash.TrunType != 0) { OrderCash.TrunType = 1; } string Tag = "Cash"; if (OrderCash.TrunType == 0) { Tag = "CashT0"; } if (OrderCash.TrunType == 1) { Tag = "CashT1"; } SysControl SysControl = Entity.SysControl.FirstOrDefault(n => n.Tag == Tag); SysControl syscontrol = SysControl.ChkState(); if (syscontrol.State != 1) { DataObj.OutError("1005"); return; } if (OrderCash.PayPwd.IsNullOrEmpty()) { DataObj.OutError("1000"); return; } if (OrderCash.PayPwd.Length < 6)//6位及以上 { DataObj.OutError("1000"); return; } //获取用户信息 Users baseUsers = Entity.Users.FirstOrDefault(n => n.Token == OrderCash.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.PayLock == 1)//密码错误太多次锁定 { DataObj.OutError("2050"); return; } if (baseUsers.StopPayState == 2)//禁止支付 { DataObj.OutError("6060"); return; } //获取系统配置 SysSet SysSet = Entity.SysSet.FirstOrDefault(); //这里是执行指纹解锁 bool IfCheckOk = true; if (OrderCash.PayPwd.Substring(0, 3) == "HF_") { string PassWord = OrderCash.PayPwd; PassWord = PassWord.Replace("HF_", ""); string Token = baseUsers.Token; Token = Token + "GoodPay"; string Md5Token = Token.GetMD5().ToUpper(); string Pass = Md5Token.Substring(0, 4) + Md5Token.Substring(Md5Token.Length - 4, 4); if (Pass != PassWord) { IfCheckOk = false; } } else if (baseUsers.PayPwd != OrderCash.PayPwd.GetPayMD5()) { //原支付密码错误 IfCheckOk = false; } if (!IfCheckOk) { //付密码错误 baseUsers.PayErr++; if (baseUsers.PayErr >= SysSet.PayLock) { baseUsers.PayLock = 1; } Entity.SaveChanges(); Users Out = new Users(); Out.PayErr = SysSet.PayLock - baseUsers.PayErr; Out.Cols = "PayErr"; DataObj.Data = Out.OutJson(); //DataObj.Code = "2010"; DataObj.Code = "2002"; if (Out.PayErr == 0) { DataObj.Msg = "用户支付密码不正确,请明日再试或取回支付密码"; } else { DataObj.Msg = "用户支付密码不正确,您还可以尝试" + Out.PayErr + "次"; } DataObj.OutString(); return; } baseUsers.PayErr = 0; Entity.SaveChanges(); //开始处理参数 if (OrderCash.Amoney.IsNullOrEmpty()) { DataObj.OutError("1000"); return; } OrderCash.Amoney = OrderCash.Amoney.FormatMoney(); //提现金额大于余额 if (OrderCash.Amoney > baseUsers.Amount) { DataObj.OutError("6001"); return; } //冻结金额小于0不能提现 if (baseUsers.Frozen < 0) { DataObj.OutError("6001"); return; } if (OrderCash.X.IsNullOrEmpty() || OrderCash.Y.IsNullOrEmpty()) { DataObj.OutError("1000"); return; } if (OrderCash.Owner.IsNullOrEmpty() || OrderCash.Bank.IsNullOrEmpty() || OrderCash.CardNum.IsNullOrEmpty() || OrderCash.Deposit.IsNullOrEmpty() || OrderCash.Mobile.IsNullOrEmpty()) { DataObj.OutError("1000"); return; } UserBlackList UserBlackList = Entity.UserBlackList.FirstOrDefault(UBL => UBL.CardNumber == OrderCash.CardNum && UBL.State == 3); if (UserBlackList != null) { //提示暂不支持该卡提现 DataObj.OutError("2017"); return; } //获取分支机构信息 SysAgent SysAgent = new SysAgent(); if (!baseUsers.Agent.IsNullOrEmpty()) { SysAgent = Entity.SysAgent.FirstOrNew(n => n.Id == baseUsers.Agent); } if (SysAgent.Id.IsNullOrEmpty()) { SysAgent.Cash0Times = 0; SysAgent.Cash1Times = 0; } decimal Peier = 0; if (OrderCash.TrunType == 0) { if (baseUsers.HasT0 != 1) { //T0黑名单 DataObj.OutError("6020"); return; } //验证是否满足T0 int Day = (DateTime.Now - baseUsers.AddTime).Days; int OrderCount = Entity.Orders.Count(n => (n.TType == 2 || n.TType == 5) && n.PayState == 2 && n.UId == baseUsers.Id); decimal?OrderMoney = Entity.Orders.Where(n => (n.TType == 2 || n.TType == 5) && n.PayState == 2 && n.UId == baseUsers.Id).Sum(n => (decimal?)n.Amoney); if (OrderMoney.IsNullOrEmpty()) { OrderMoney = 0; } if (Day >= SysSet.CashDay && OrderCount >= SysSet.CashNum && OrderMoney >= SysSet.CashMoney) { } else { DataObj.OutError("6020"); return; } //验证是否在快速提现时段内 TaskTimeSet TaskTimeSet = Entity.TaskTimeSet.FirstOrDefault(n => n.STime <= DateTime.Now && n.ETime >= DateTime.Now && n.TId == 1); if (TaskTimeSet == null) { DataObj.OutError("6018"); return; } Peier = TaskTimeSet.AllMoney - TaskTimeSet.UsedMoney; } OrderCash.UId = baseUsers.Id; if (OrderCash.TrunType == 0)//加急提现 { if (baseUsers.T0Times < SysAgent.Cash0Times) { //用户提现服务费 OrderCash.UserRate = 0; //加急费用 OrderCash.Cash = 0; //提现服务费 OrderCash.ECash = 0; } else { //用户提现服务费=提现金额*加急费率+提现服务费 OrderCash.UserRate = (double)(OrderCash.Amoney * baseUsers.Cash0 + baseUsers.ECash0); //提现服务费进位 OrderCash.UserRate = OrderCash.UserRate.Ceiling(); //加急费用 OrderCash.Cash = baseUsers.Cash0; //提现服务费 OrderCash.ECash = baseUsers.ECash0; } //系统提现费成本 OrderCash.CashRate = OrderCash.Amoney * SysSet.SysCash0 + SysSet.SysECash0; //系统手续费进位 OrderCash.CashRate = OrderCash.CashRate.Ceiling(); //这里是利润计算========== //代理商分润 double GetAgent = OrderCash.UserRate - (double)(OrderCash.Amoney * SysSet.AgentCash0 + SysSet.AgentECash0); if (GetAgent < 0) { GetAgent = 0; } //利润=收取用户手续费-系统支出手续费 double GetAll = OrderCash.UserRate - (double)OrderCash.CashRate - GetAgent; //利润舍位 GetAll = GetAll.Floor(); //总利润 OrderCash.AIdCashGet = (double)GetAll; //分支机构佣金设置为0,待分润计算后再写入 OrderCash.AgentCashGet = GetAgent; } else { if (baseUsers.T1Times < SysAgent.Cash1Times) { //用户提现服务费 OrderCash.UserRate = 0; //加急费用 OrderCash.Cash = 0; //提现服务费 OrderCash.ECash = 0; } else { //用户提现服务费=提现金额*加急费率+提现服务费 OrderCash.UserRate = (double)(OrderCash.Amoney * baseUsers.Cash1 + baseUsers.ECash1); //提现服务费进位 OrderCash.UserRate = OrderCash.UserRate.Ceiling(); //加急费用 OrderCash.Cash = baseUsers.Cash1; //提现服务费 OrderCash.ECash = baseUsers.ECash1; } //系统提现费成本 OrderCash.CashRate = OrderCash.Amoney * SysSet.SysCash1 + SysSet.SysECash1; //系统手续费进位 OrderCash.CashRate = OrderCash.CashRate.Ceiling(); //这里是利润计算========== //代理商分润 double GetAgent = OrderCash.UserRate - (double)(OrderCash.Amoney * SysSet.AgentCash1 + SysSet.AgentECash1); if (GetAgent < 0) { GetAgent = 0; } //利润=收取用户手续费-系统支出手续费 double GetAll = OrderCash.UserRate - (double)OrderCash.CashRate - GetAgent; //利润舍位 GetAll = GetAll.Floor(); //总利润 OrderCash.AIdCashGet = (double)GetAll; //分支机构佣金 OrderCash.AgentCashGet = GetAgent; } decimal Money = OrderCash.Amoney - (decimal)OrderCash.UserRate; if (Money < 0) { DataObj.OutError("1006"); return; } if (OrderCash.TrunType == 0)//T0时才验证 { //付款金额 //验证是否配额充足 if (Peier < Money) { DataObj.OutError("6019"); return; } } OrderCash.Agent = SysAgent.Id;//分支机构Id OrderCash.AId = baseUsers.AId; OrderCash.FId = 0; OrderCash.OrderState = 1; OrderCash.PayState = 1; OrderCash.AgentState = 0; OrderCash.FState = 0; OrderCash.AddTime = DateTime.Now; //写入前,判断交易金额限制 if (OrderCash.Amoney < syscontrol.SNum || OrderCash.Amoney > syscontrol.ENum) { DataObj.OutError("1006"); return; } //写入订单总表 Orders Orders = new Orders(); Orders.UId = OrderCash.UId; Orders.TName = baseUsers.TrueName; Orders.PayType = 0; Orders.PayName = "提现"; Orders.RUId = 0; Orders.RName = string.Empty; Orders.TType = 2; Orders.TState = 1; Orders.Amoney = OrderCash.Amoney; Orders.Poundage = (decimal)OrderCash.UserRate; Orders.AddTime = DateTime.Now; Orders.PayState = 1;//提现为余额支付的一种特殊形式。 Orders.PayWay = 4; Orders.PayTime = DateTime.Now; Orders.Agent = OrderCash.Agent; Orders.AgentState = 0; Orders.AId = OrderCash.AId; Orders.FId = 0; Orders.UserCardId = baseUsers.CardId; string OrderAddress = OrderCash.OrderAddress; if (OrderAddress.IsNullOrEmpty()) { OrderAddress = Utils.GetAddressByGPS(OrderCash.X, OrderCash.Y); } Orders.OrderAddress = OrderAddress; Orders.X = OrderCash.X; Orders.Y = OrderCash.Y; Orders.TrunType = OrderCash.TrunType; Entity.Orders.AddObject(Orders); Entity.SaveChanges(); Entity.Refresh(RefreshMode.StoreWins, Orders); OrderCash.OId = Orders.TNum; Entity.OrderCash.AddObject(OrderCash); Entity.SaveChanges(); //帐户变动记录 int USERSID = baseUsers.Id; string TNUM = OrderCash.OId; decimal PAYMONEY = Orders.Amoney; string SP_Ret = Entity.SP_UsersMoney(USERSID, TNUM, PAYMONEY, 3, ""); if (SP_Ret != "3") { Utils.WriteLog(string.Format("U{0},O{1},T{2}:{3}【{4}】", USERSID, TNUM, 3, PAYMONEY, SP_Ret), "SP_UsersMoney"); Orders.TState = 0; Orders.PayState = 0; OrderCash.OrderState = 0; OrderCash.PayState = 0; Entity.SaveChanges(); DataObj.OutError("8888"); return; } if (OrderCash.TrunType == 0)//T0时减少配额 { DateTime Today = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd")); TaskTimeSet TaskTimeSet = Entity.TaskTimeSet.FirstOrDefault(n => n.ODate == Today); if (TaskTimeSet != null) { TaskTimeSet.UsedMoney += Money; Entity.SaveChanges(); } baseUsers.T0Times = baseUsers.T0Times + 1; } else { baseUsers.T1Times = baseUsers.T1Times + 1; } if (SysSet.CashChecked == 1) { bool IsAuto = true; if (SysSet.EveryDayMaxCash > 0)//超出规定额度,变成人工审核。规定是0刚不执行 { DateTime Today = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd")); var todaymoney = this.Entity.OrderCash.Where(o => (o.OrderState == 2 || o.OrderState == 1) && o.AddTime > Today && (o.PayState == 1 || o.PayState == 2) && o.UId == baseUsers.Id).Sum(o => (decimal?)o.Amoney) ?? 0m; if (todaymoney > SysSet.EveryDayMaxCash)//当天累加提现 > 规定额度 { IsAuto = false; } } if (IsAuto) { //帐户变动记录 string SP_Ret2 = Entity.SP_UsersMoney(USERSID, TNUM, PAYMONEY, 4, ""); if (SP_Ret2 != "3") { Utils.WriteLog(string.Format("U{0},O{1},T{2}:{3}【{4}】", USERSID, TNUM, 4, PAYMONEY, SP_Ret2), "SP_UsersMoney"); DataObj.OutError("8888"); return; } else { //自动审核 Orders.TState = 2; OrderCash.OrderState = 2; OrderCash.AuditTime = DateTime.Now; Entity.SaveChanges(); } if (SysSet.CashPayWay == 1) //开启自动结算时执行 { if (OrderCash.TrunType == 0) //T0时自动出款 { if (OrderCash.Amoney <= SysSet.QCash0) { Utils.WriteLog("[S]" + Orders.TNum, "CashAuto"); OrderCash.PayCash(Orders, Entity);//去付款 Utils.WriteLog("[E]" + Orders.TNum, "CashAuto"); } else { Utils.WriteLog("结算金额超出自动出款金额" + OrderCash.OId + ":提现金额[" + OrderCash.Amoney + "]自动出款金额[" + SysSet.QCash0 + "]", "OrderCash"); } } //else //{ // Utils.WriteLog("T0时自动出款没开启" + OrderCash.OId, "OrderCash"); //} } else { Utils.WriteLog("自动结算没开启" + OrderCash.OId, "OrderCash"); } } else { Utils.WriteLog("单卡超过限定金额" + OrderCash.OId, "OrderCash"); } } else { Utils.WriteLog("自动审核没开启" + OrderCash.OId, "OrderCash"); } Entity.Refresh(RefreshMode.StoreWins, Orders); //======================================= 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);//发送消息类 if (Orders.PayState == 3 && Orders.Remark == "本银行卡今日提交超过限额!") { DataObj.OutError("1016"); return; } //超过单日单卡(10W)到账限额 DataObj.Data = Orders.OutJson(); DataObj.Code = "0000"; DataObj.OutString(); }
/// <summary> /// 上传操作 /// </summary> /// <param name="dirPath">目录路径</param> /// <param name="fileTypes">文件类型</param> /// <param name="maxFileSize">最大文件大小,默认10M</param> /// <returns></returns> protected Task <UploadResult> Upload(string dirPath, string fileTypes, long maxFileSize = 10000000) { if (!Request.Content.IsMimeMultipartContent("form-data")) { throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType); } string dirTempPath = SysControl.GetPhysicalPath(dirPath); if (!Directory.Exists(dirTempPath)) { Directory.CreateDirectory(dirTempPath); } // 设置上传目录 var provider = new MultipartFormDataStreamProvider(dirTempPath); var task = Request.Content.ReadAsMultipartAsync(provider).ContinueWith <UploadResult>(o => { FileInfo fileInfo = null; try { UploadResult result = new UploadResult(); // 判断文件数据 if (!(provider.FileData.Count > 0)) { throw new Exception("上传失败,文件数据不存在!"); } if (o.IsFaulted || o.IsCanceled) { throw new Exception("上传失败!"); } var file = provider.FileData[0]; string oldFileName = file.Headers.ContentDisposition.FileName.TrimStart('"').TrimEnd('"'); fileInfo = new FileInfo(file.LocalFileName); result.Length = fileInfo.Length; if (fileInfo.Length <= 0) { throw new Exception("请选择上传文件!"); } if (fileInfo.Length > maxFileSize) { throw new Exception("上传文件大小超过限制!"); } var fileExt = oldFileName.Substring(oldFileName.LastIndexOf('.')); if (fileExt == null || Array.IndexOf(fileTypes.Split(','), fileExt.Substring(1).ToLower()) == -1) { throw new Exception("不支持上传文件类型!"); } string newFileName = DateTime.Now.ToString("yyyyMMddHHmmss_ffff", DateTimeFormatInfo.InvariantInfo); string filePath = Path.Combine(dirPath, newFileName + fileExt); fileInfo.CopyTo(Path.Combine(dirTempPath, newFileName + fileExt), true); result.FileName = newFileName; result.FilePath = filePath; result.FileId = newFileName; result.Type = FileControl.GetContentType(fileExt); return(result); } catch (Exception ex) { throw new Exception("上传失败!"); } finally { if (fileInfo != null) { fileInfo.Delete(); } } }); return(task); }
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("[OrderPayConfig]:", "【Data】" + Data, Ex); } if (json == null) { DataObj.OutError("1000"); return; } PayConfigOrder PayConfigOrder = new PayConfigOrder(); PayConfigOrder = JsonToObject.ConvertJsonToModel(PayConfigOrder, json); UserTrack UserTrack = new UserTrack(); UserTrack = JsonToObject.ConvertJsonToModel(UserTrack, json); if (PayConfigOrder.PCCId.IsNullOrEmpty()) { DataObj.OutError("1000"); return; } if (PayConfigOrder.X.IsNullOrEmpty() || PayConfigOrder.Y.IsNullOrEmpty()) { DataObj.OutError("1000"); return; } //获取用户信息 Users baseUsers = Entity.Users.FirstOrDefault(n => n.Token == PayConfigOrder.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; } //获取分支机构信息 SysAgent SysAgent = new SysAgent(); if (!baseUsers.Agent.IsNullOrEmpty()) { SysAgent = Entity.SysAgent.FirstOrNew(n => n.Id == baseUsers.Agent); } //获取系统配置 //SysSet SysSet = Entity.SysSet.FirstOrDefault(); PayConfigChange PCC = Entity.PayConfigChange.FirstOrDefault(n => n.Id == PayConfigOrder.PCCId); if (PCC == null) { DataObj.OutError("1001"); return; } PayConfigOrder.UId = baseUsers.Id; PayConfigOrder.Agent = baseUsers.Agent; PayConfigOrder.AId = baseUsers.AId; PayConfigOrder.Amoney = PCC.BPrice.GetValueOrDefault(); PayConfigOrder.OrderState = 1; PayConfigOrder.PayState = 0; PayConfigOrder.AddTime = DateTime.Now; //这里是利润计算========== //分支机构提成=产品价格-代理商价格 decimal GetAll = PCC.BPrice.GetValueOrDefault() - PCC.CPrice.GetValueOrDefault(); //利润舍位 GetAll = GetAll.Floor(); //总利润 PayConfigOrder.AIdGet = (double)GetAll; //分支机构佣金设置为0,待分润计算后再写入 PayConfigOrder.AgentGet = 0; PayConfigOrder.AgentState = 0; //这里暂时写0,等后面支付再重新计算 PayConfigOrder.SysRate = 0; PayConfigOrder.Poundage = PayConfigOrder.Amoney * (decimal)PayConfigOrder.SysRate; //写入订单总表 Orders Orders = new Orders(); Orders.UId = PayConfigOrder.UId; Orders.TName = PCC.Title; Orders.PayType = 0; Orders.PayName = "升级费率"; Orders.RUId = 0; Orders.RName = string.Empty; Orders.TType = 6; Orders.TState = 1; Orders.Amoney = PayConfigOrder.Amoney; Orders.Poundage = PayConfigOrder.Poundage; Orders.AddTime = DateTime.Now; Orders.PayState = 0; Orders.PayWay = 0; Orders.Agent = PayConfigOrder.Agent; Orders.AgentState = 0; Orders.AId = PayConfigOrder.AId; Orders.FId = 0; string OrderAddress = PayConfigOrder.OrderAddress; if (OrderAddress.IsNullOrEmpty()) { OrderAddress = Utils.GetAddressByGPS(PayConfigOrder.X, PayConfigOrder.Y); } Orders.OrderAddress = OrderAddress; Orders.X = PayConfigOrder.X; Orders.Y = PayConfigOrder.Y; Entity.Orders.AddObject(Orders); Entity.SaveChanges(); Entity.Refresh(RefreshMode.StoreWins, Orders); PayConfigOrder.OId = Orders.TNum; Entity.PayConfigOrder.AddObject(PayConfigOrder); 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);//发送消息类 //======================================= Orders.Cols = "TNum,PayId,Amount,PayState"; string TNum = Orders.TNum; string Sign = (TNum + "NewPay").GetMD5().Substring(8, 8); Orders.PayId = PayPath + "/pay/" + TNum + ".html?sign=" + Sign; //======================================= //获取最佳支付通道 IList <PayConfig> PayConfigList = Entity.PayConfig.Where(n => n.State == 1).OrderBy(n => n.Cost).ToList(); IList <SysControl> SysControlList = Entity.SysControl.OrderBy(n => n.Sort).ToList();//SysControl IList <SysControl> SCList = new List <SysControl>(); IList <PayConfig> PCList = new List <PayConfig>(); foreach (var p in SysControlList) { SysControl T = p.ChkState(); if (T.State == 1) { SCList.Add(p); } } foreach (var p in PayConfigList) { SysControl T = SCList.FirstOrDefault(n => n.PayWay == p.Id); if (T != null) { if (PayConfigOrder.Amoney >= (decimal)T.SNum && PayConfigOrder.Amoney <= (decimal)T.ENum) { PCList.Add(p); } } } IList <PayConfig> CashList = PCList.Where(n => n.GroupType == "Cash").OrderBy(n => n.Cost).ToList(); IList <PayConfig> BankList = PCList.Where(n => n.GroupType == "Bank").OrderBy(n => n.Cost).ToList(); IList <PayConfig> WxList = PCList.Where(n => n.GroupType == "WeiXin").OrderBy(n => n.Cost).ToList(); IList <PayConfig> AliList = PCList.Where(n => n.GroupType == "AliPay").OrderBy(n => n.Cost).ToList(); IList <PayConfig> List = new List <PayConfig>(); if (CashList.Count > 0) { PayConfig Cash = new PayConfig(); Cash.GroupType = "Cash"; Cash.Name = "余额支付"; Cash.State = 1; Cash.Cols = "Name,GroupType,State"; List.Add(Cash); } if (BankList.Count > 0) { PayConfig Bank = new PayConfig(); Bank.GroupType = "Bank"; Bank.Name = "银联支付"; Bank.State = 1; Bank.Cols = "Name,GroupType,State"; List.Add(Bank); } //if (WxList.Count > 0) //{ // PayConfig Wx = new PayConfig(); // Wx.GroupType = "WeiXin"; // Wx.Name = "微信支付"; // Wx.State = 0; // Wx.Cols = "Name,GroupType,State"; // List.Add(Wx); //} if (AliList.Count > 0) { PayConfig Ali = new PayConfig(); Ali.GroupType = "AliPay"; Ali.Name = "支付宝支付"; Ali.State = 1; Ali.Cols = "Name,GroupType,State"; List.Add(Ali); } string PCString = List.EntityToJson(); JArray PCJson = (JArray)JsonConvert.DeserializeObject(PCString); Orders.PayConfig = PCJson; Orders.Cols += ",PayConfig"; //Orders.paycon 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(); } }
private ActionResult BankPay(Users Users, decimal Amount, PayConfig PayConfig, SysControl SysControl) { if (Users.Token.IsNullOrEmpty()) { Users.Token = DateTime.Now.ToString().GetMD5(); Entity.SaveChanges(); } int InType = 0; if (SysControl.LagEntryNum > 0) { InType = 1; } string PostJson = "{amoney:" + Amount.ToString("F2") + ",token:\"" + Users.Token + "\",aid:2,paytype:4,x:\"0\",y:\"0\",intype:\"" + InType + "\",payway:\"" + PayConfig.Id + "\",orderaddress:\"网店收银台,IP:" + Utils.GetAddressAndIp() + "\"}"; //提交数据 string PostData = LokFuEncode.LokFuAPIEncode(PostJson, Shop_Keys); PostData = HttpUtility.UrlEncode(PostData); //Post参数 string PostString = "eno=" + Shop_ENO + "&data=" + PostData + "&code=0000"; string url = AppPath + "/API/OrderRecharge/"; string RetString = Utils.PostRequest(url, PostString, "utf-8"); JObject json = new JObject(); try { json = (JObject)JsonConvert.DeserializeObject(RetString); } catch (Exception) { ViewBag.ErrorMsg = "接口数据有误![01]"; return(View("Error")); } if (json == null) { ViewBag.ErrorMsg = "接口数据有误![02]"; return(View("Error")); } string code = ""; string data = ""; try { code = json["code"].ToString(); data = json["data"].ToString(); } catch (Exception) { ViewBag.ErrorMsg = "接口数据有误![03]"; return(View("Error")); } if (code != "0000") { ViewBag.ErrorMsg = "交易有误![" + code + "]"; return(View("Error")); } //解密 string RetData = LokFuEncode.LokFuAPIDecode(data, Shop_Keys); JObject Json = new JObject(); try { Json = (JObject)JsonConvert.DeserializeObject(RetData); } catch (Exception) { ViewBag.ErrorMsg = "数据解析有误![01]"; return(View("Error")); } if (Json == null) { ViewBag.ErrorMsg = "数据解析有误![02]"; return(View("Error")); } Orders Orders = new Orders(); Orders = JsonToObject.ConvertJsonToModel(Orders, Json); if (Orders.TNum.IsNullOrEmpty()) { ViewBag.ErrorMsg = "订单信息有误"; return(View("Error")); } string payJson = "{tnum:\"" + Orders.TNum + "\",token:\"" + Users.Token + "\"}"; string JumpData = LokFuEncode.LokFuAPIEncode(payJson, Shop_Keys); JumpData = HttpUtility.UrlEncode(JumpData); string JumpString = "eno=" + Shop_ENO + "&data=" + JumpData + "&code=0000"; string Url = "/PayCenter/Pay/index.html?" + JumpString; return(this.Redirect(Url)); //Response.Redirect(Url); //return View("GoPay"); }
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("[OrderRecharge]:", "【Data】" + Data, Ex); } if (json == null) { DataObj.OutError("1000"); return; } OrderRecharge OrderRecharge = new OrderRecharge(); OrderRecharge = JsonToObject.ConvertJsonToModel(OrderRecharge, json); UserTrack UserTrack = new UserTrack(); UserTrack = JsonToObject.ConvertJsonToModel(UserTrack, json); int PayWay = OrderRecharge.PayWay; if (PayWay.IsNullOrEmpty()) { PayWay = OrderRecharge.AId; } if (PayWay.IsNullOrEmpty()) { //支付方式,用于取出支付费率信息,计算各接口金额 DataObj.OutError("1000"); return; } if (OrderRecharge.PayType.IsNullOrEmpty()) { OrderRecharge.PayType = 0; } //获取用户信息 Users baseUsers = Entity.Users.FirstOrDefault(n => n.Token == OrderRecharge.Token); if (baseUsers == null)//用户令牌不存在 { DataObj.OutError("2004"); return; } if (baseUsers.State != 1)//用户被锁定 { DataObj.OutError("2003"); return; } int InType = 0; if (!OrderRecharge.InType.IsNullOrEmpty()) { InType = 1; } SysControl SysControl = new SysControl(); bool IsNew = true; if (OrderRecharge.Id.IsNullOrEmpty()) { //这是旧逻辑,有一些旧版还在用 #region 版本比较 升级之后比较长时间后可以考滤删除版本判断代码 SysAgent vSysAgent = 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 == "RecMoneyLocal" && n.PayWay == PayWay && n.LagEntryDay > 0); } else { SysControl = Entity.SysControl.FirstOrDefault(n => n.Tag == "RecMoneyLocal" && n.PayWay == PayWay && n.LagEntryDay == 0); } } else//旧版 { SysControl = Entity.SysControl.FirstOrDefault(n => n.Tag == "RecMoneyLocal" && n.PayWay == PayWay); } } else { SysControl = Entity.SysControl.FirstOrDefault(n => n.Id == OrderRecharge.Id); PayWay = SysControl.PayWay; 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; } //开始处理参数 if (OrderRecharge.Amoney.IsNullOrEmpty()) { DataObj.OutError("1000"); return; } OrderRecharge.Amoney = OrderRecharge.Amoney.FormatMoney(); if (OrderRecharge.X.IsNullOrEmpty() || OrderRecharge.Y.IsNullOrEmpty()) { DataObj.OutError("1000"); return; } //获取用户支付配置 UserPay UserPay = Entity.UserPay.FirstOrDefault(n => n.UId == baseUsers.Id && n.PId == PayWay); if (UserPay == null) { DataObj.Msg = "你当前版本不支持该交易,请等待新版本发布及升级!"; DataObj.OutError("1000"); return; } //获取系统支付配置 PayConfig PayConfig = Entity.PayConfig.FirstOrDefault(n => n.Id == PayWay && n.State == 1); if (PayConfig == null) { DataObj.OutError("1000"); return; } if (PayConfig.GroupType != "Bank") { 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; } } //本算法在当系统费用为0时有问题,系统费用为0的T5会导致代理分不到钱。 if (InType == 1) { //T+N免手续费 OrderRecharge.Poundage = 0; //商户费率 OrderRecharge.UserRate = 0; //T+n时,代理佣金为 交易金额*费率 decimal AgentPayGet = OrderRecharge.Amoney * SysSet.AgentGet; OrderRecharge.AgentPayGet = (Double)AgentPayGet; //佣金舍位 OrderRecharge.AgentPayGet = OrderRecharge.AgentPayGet.Floor(); } else { //手续费 OrderRecharge.Poundage = OrderRecharge.Amoney * (decimal)UserPay.Cost; //手续费取进 OrderRecharge.Poundage = OrderRecharge.Poundage.Ceiling(); //商户费率 OrderRecharge.UserRate = UserPay.Cost; //分支机构佣金设置为0,待分润计算后再写入 OrderRecharge.AgentPayGet = 0; } OrderRecharge.UId = baseUsers.Id; //到帐金额=支付金额-手续费 OrderRecharge.PayMoney = OrderRecharge.Amoney - OrderRecharge.Poundage; //第三方支付通道率 OrderRecharge.SysRate = (double)PayConfig.Cost; //这里是利润计算========== //利润=总金额-到帐-支付手续费 decimal GetAll = OrderRecharge.Amoney - OrderRecharge.PayMoney - OrderRecharge.Amoney * (decimal)OrderRecharge.SysRate; //利润舍位 GetAll = GetAll.Floor(); //总利润 OrderRecharge.AIdPayGet = (double)GetAll; OrderRecharge.PayWay = PayWay; OrderRecharge.Agent = SysAgent.Id;//分支机构Id OrderRecharge.AId = baseUsers.AId; OrderRecharge.FId = 0; OrderRecharge.OrderState = 1; OrderRecharge.PayState = 0; OrderRecharge.AgentState = 0; OrderRecharge.AddTime = DateTime.Now; //写入前,判断交易金额限制 if (OrderRecharge.Amoney < syscontrol.SNum || OrderRecharge.Amoney > syscontrol.ENum) { DataObj.OutError("1006"); return; } //写入订单总表 Orders Orders = new Orders(); Orders.UId = OrderRecharge.UId; Orders.TName = baseUsers.TrueName; Orders.PayType = OrderRecharge.PayType; switch (Orders.PayType) { case 0: Orders.ComeWay = 1; Orders.PayName = "充值-" + PayConfig.Name; break; case 1: Orders.ComeWay = 1; Orders.PayName = "短信收款-" + PayConfig.Name; break; case 2: Orders.ComeWay = 1; Orders.PayName = "本地收款-" + PayConfig.Name; break; case 3: Orders.ComeWay = 1; Orders.PayName = "当面付-" + PayConfig.Name; break; case 4: Orders.ComeWay = 2; Orders.PayName = "收银台-" + PayConfig.Name; break; } Orders.RUId = 0; Orders.RName = string.Empty; Orders.TType = 1; Orders.TState = 1; Orders.Amoney = OrderRecharge.Amoney; Orders.Poundage = OrderRecharge.Poundage; Orders.AddTime = DateTime.Now; Orders.PayState = 0; Orders.PayWay = PayConfig.Id; Orders.Agent = OrderRecharge.Agent; Orders.AgentState = 0; Orders.AId = OrderRecharge.AId; Orders.FId = 0; //Orders.ComeWay = 1; string OrderAddress = OrderRecharge.OrderAddress; if (OrderAddress.IsNullOrEmpty()) { OrderAddress = Utils.GetAddressByGPS(OrderRecharge.X, OrderRecharge.Y); } Orders.OrderAddress = OrderAddress; Orders.X = OrderRecharge.X; Orders.Y = OrderRecharge.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); OrderRecharge.OId = Orders.TNum; Entity.OrderRecharge.AddObject(OrderRecharge); 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);//发送消息类 //======================================= Orders.Cols = "Id,TNum,PayId"; string TNum = Orders.TNum; string Sign = (TNum + "NewPay").GetMD5().Substring(8, 8); Orders.PayId = PayPath + "/pay/" + TNum + ".html?sign=" + Sign; //======================================= DataObj.Data = Orders.OutJson(); DataObj.Code = "0000"; DataObj.OutString(); }
/// <summary> /// 获取成员名 /// </summary> /// <typeparam name="T">枚举</typeparam> /// <param name="member">成员名、值、实例均可,范例:Enum1枚举有成员A=0,则传入Enum1.A或0,获取成员名"A"</param> /// <returns></returns> public static string GetName <T>(object member) { return(GetName(SysControl.GetType <T>(), member)); }
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("[OrderHouse]:", "【Data】" + Data, Ex); } if (json == null) { DataObj.OutError("1000"); return; } OrderHouse OrderHouse = new OrderHouse(); OrderHouse = JsonToObject.ConvertJsonToModel(OrderHouse, json); UserTrack UserTrack = new UserTrack(); UserTrack = JsonToObject.ConvertJsonToModel(UserTrack, json); string Tag = "House"; 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 == OrderHouse.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 (OrderHouse.HouseOwner.IsNullOrEmpty() || OrderHouse.Bank.IsNullOrEmpty() || OrderHouse.Deposit.IsNullOrEmpty() || OrderHouse.CardNum.IsNullOrEmpty() || OrderHouse.Mobile.IsNullOrEmpty()) { DataObj.OutError("1000"); return; } if (OrderHouse.MonthRent.IsNullOrEmpty() || OrderHouse.PayMonth.IsNullOrEmpty()) { DataObj.OutError("1000"); return; } if (OrderHouse.X.IsNullOrEmpty() || OrderHouse.Y.IsNullOrEmpty()) { DataObj.OutError("1000"); return; } if (OrderHouse.AId.IsNullOrEmpty()) {//支付方式,用于取出支付费率信息,计算各接口金额 DataObj.OutError("1000"); return; } if (OrderHouse.AId == 4) {//支付方式,用于取出支付费率信息,计算各接口金额 DataObj.OutError("6022"); return; } if (OrderHouse.SecurityMoney.IsNullOrEmpty()) { OrderHouse.SecurityMoney = 0; } //获取用户支付配置 //UserPay UserPay = Entity.UserPay.FirstOrDefault(n => n.UId == baseUsers.Id && n.PId == OrderHouse.AId); //if (UserPay == null) { // DataObj.OutError("1000"); // return; //} OrderHouse.SecurityMoney = OrderHouse.SecurityMoney.FormatMoney(); OrderHouse.MonthRent = OrderHouse.MonthRent.FormatMoney(); //获取系统支付配置 PayConfig PayConfig = Entity.PayConfig.FirstOrDefault(n => n.Id == OrderHouse.AId && n.State == 1); if (PayConfig == 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 (OrderHouse.TrunType.IsNullOrEmpty()) { OrderHouse.TrunType = 0; } if (OrderHouse.TrunType != 0) { OrderHouse.TrunType = 1; } decimal Peier = 0; if (OrderHouse.TrunType == 0) { if (baseUsers.HasT0 != 1) { //T0黑名单 DataObj.OutError("6020"); return; } //验证是否满足T0 int Day = (DateTime.Now - baseUsers.AddTime).Days; int OrderCount = Entity.Orders.Count(n => (n.TType == 2 || n.TType == 5) && n.PayState == 2 && n.UId == baseUsers.Id); decimal?OrderMoney = Entity.Orders.Where(n => (n.TType == 2 || n.TType == 5) && n.PayState == 2 && n.UId == baseUsers.Id).Sum(n => (decimal?)n.Amoney); if (OrderMoney.IsNullOrEmpty()) { OrderMoney = 0; } if (Day >= SysSet.CashDay && OrderCount >= SysSet.CashNum && OrderMoney >= SysSet.CashMoney) { } else { DataObj.OutError("6020"); return; } //验证是否在快速提现时段内 TaskTimeSet TaskTimeSet = Entity.TaskTimeSet.FirstOrDefault(n => n.STime <= DateTime.Now && n.ETime >= DateTime.Now && n.TId == 1); if (TaskTimeSet == null) { DataObj.OutError("6018"); return; } Peier = TaskTimeSet.AllMoney - TaskTimeSet.UsedMoney; } OrderHouse.UId = baseUsers.Id; double House = SysSet.House; double Cost = (double)PayConfig.Cost; //余额支付不收手续费 if (PayConfig.DllName == "Cash") { House = 0; Cost = 0; } if (OrderHouse.TrunType == 0) { //总房租=月租金*月数+压金 OrderHouse.PayMoney = OrderHouse.MonthRent * OrderHouse.PayMonth + OrderHouse.SecurityMoney; //手续费=总房租*(付房租系统费率+加急费率)+提现服务费 OrderHouse.Poundage = OrderHouse.PayMoney * ((decimal)House + baseUsers.Cash0) + baseUsers.ECash0; //手续费进位 OrderHouse.Poundage = OrderHouse.Poundage.Ceiling(); //总付款金额=房租+手续费 OrderHouse.Amoney = OrderHouse.PayMoney + OrderHouse.Poundage; //第三方支付通道率 OrderHouse.SysRate = Cost; //商户费率 OrderHouse.UserRate = House; //提现费率 OrderHouse.CashRate = OrderHouse.PayMoney * SysSet.Cash0 + SysSet.ECash0; //这里是利润计算========== //利润=总支付金额-房租-支付手续费-提现服务费 decimal GetAll = OrderHouse.Poundage - OrderHouse.PayMoney * ((decimal)Cost + SysSet.Cash0) - baseUsers.ECash0; //利润舍位 GetAll = GetAll.Floor(); //总利润 OrderHouse.AIdPayGet = (double)GetAll; //分支机构佣金设置为0,待分润计算后再写入 OrderHouse.AgentPayGet = 0; } else { //总房租=月租金*月数+压金 OrderHouse.PayMoney = OrderHouse.MonthRent * OrderHouse.PayMonth + OrderHouse.SecurityMoney; //手续费=总房租*付房租系统费率 OrderHouse.Poundage = OrderHouse.PayMoney * ((decimal)House + baseUsers.Cash1) + baseUsers.ECash1; //总付款金额=房租+手续费 OrderHouse.Amoney = OrderHouse.PayMoney + OrderHouse.Poundage; //第三方支付通道率 OrderHouse.SysRate = Cost; //商户费率 OrderHouse.UserRate = House; //提现服务费--T+1无手续费 OrderHouse.CashRate = OrderHouse.PayMoney * SysSet.Cash1 + SysSet.ECash1; //这里是利润计算========== //利润=总支付金额-房租-支付手续费 decimal GetAll = OrderHouse.Poundage - OrderHouse.Amoney * ((decimal)Cost + SysSet.Cash1) - baseUsers.ECash1; //总利润 OrderHouse.AIdPayGet = (double)GetAll; //分支机构佣金设置为0,待分润计算后再写入 OrderHouse.AgentPayGet = 0; } if (OrderHouse.TrunType == 0)//T0时才验证 { //需要支付房东金额 decimal TotalPrice = OrderHouse.PayMoney; //验证是否配额充足 if (Peier < TotalPrice) { DataObj.OutError("6019"); return; } } OrderHouse.Agent = SysAgent.Id;//分支机构Id OrderHouse.AId = baseUsers.AId; OrderHouse.FId = 0; OrderHouse.OrderState = 1; OrderHouse.PayState = 0; OrderHouse.AgentState = 0; OrderHouse.FState = 0; OrderHouse.AddTime = DateTime.Now; //写入前,判断交易金额限制 if (OrderHouse.Amoney < syscontrol.SNum || OrderHouse.Amoney > syscontrol.ENum) { DataObj.OutError("1006"); return; } //写入订单总表 Orders Orders = new Orders(); Orders.Remark = OrderHouse.Remark; Orders.UId = OrderHouse.UId; Orders.TName = OrderHouse.HouseOwner + "的房租"; Orders.PayType = 0; Orders.PayName = "房租"; Orders.RUId = 0; Orders.RName = string.Empty; Orders.TType = 5; Orders.TState = 1; Orders.Amoney = OrderHouse.Amoney; Orders.Poundage = OrderHouse.Poundage; Orders.AddTime = DateTime.Now; Orders.PayState = 0; Orders.PayWay = PayConfig.Id; Orders.Agent = OrderHouse.Agent; Orders.AgentState = 0; Orders.AId = OrderHouse.AId; Orders.FId = 0; string OrderAddress = OrderHouse.OrderAddress; if (OrderAddress.IsNullOrEmpty()) { OrderAddress = Utils.GetAddressByGPS(OrderHouse.X, OrderHouse.Y); } Orders.OrderAddress = OrderAddress; Orders.X = OrderHouse.X; Orders.Y = OrderHouse.Y; Orders.TrunType = OrderHouse.TrunType; Entity.Orders.AddObject(Orders); Entity.SaveChanges(); Entity.Refresh(RefreshMode.StoreWins, Orders); OrderHouse.OId = Orders.TNum; Entity.OrderHouse.AddObject(OrderHouse); 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("[IPay]:", "【Data】" + Data, Ex); json = null; } if (json == null) { DataObj.OutError("1000"); return; } Orders Orders = new Orders(); Orders = JsonToObject.ConvertJsonToModel(Orders, json); if (Orders.TNum.IsNullOrEmpty() || Orders.Token.IsNullOrEmpty()) { DataObj.OutError("1000"); return; } #region 处理用户信息 Users baseUsers = Entity.Users.FirstOrDefault(n => n.Token == Orders.Token); if (baseUsers == null)//用户令牌不存在 { DataObj.OutError("2004"); return; } if (baseUsers.State != 1)//用户被锁定 { DataObj.OutError("2003"); return; } #endregion Orders BaseOrders = Entity.Orders.FirstOrDefault(n => n.TNum == Orders.TNum); if (BaseOrders == null) { DataObj.OutError("1001"); return; } if (baseUsers.Id != BaseOrders.UId)//禁止代付 { DataObj.OutError("6021"); return; } if (BaseOrders.TType != 6 && BaseOrders.TType != 10) { DataObj.OutError("6022"); return; } if (BaseOrders.TState != 1) { DataObj.OutError("6024"); return; } if (BaseOrders.PayState != 0) { //已支付 DataObj.OutError("6025"); return; } #region 处理选择通道 PayConfig PayConfig = null; if (!BaseOrders.PayWay.IsNullOrEmpty()) { PayConfig = Entity.PayConfig.FirstOrDefault(n => n.State == 1 && n.Id == BaseOrders.PayWay); if (Orders.PayName != PayConfig.GroupType) { DataObj.OutError("1008"); return; } } else { if (Orders.PayName.IsNullOrEmpty()) { DataObj.OutError("1000"); return; } //获取最佳支付通道 IList <PayConfig> PayConfigList = Entity.PayConfig.Where(n => n.State == 1 && n.GroupType == Orders.PayName).ToList(); IList <SysControl> SysControlList = Entity.SysControl.OrderBy(n => n.Sort).ToList();//SysControl IList <SysControl> SCList = new List <SysControl>(); IList <PayConfig> PCList = new List <PayConfig>(); foreach (var p in SysControlList) { SysControl T = p.ChkState(); if (T.State == 1) { SCList.Add(p); } } foreach (var p in PayConfigList) { SysControl T = SCList.FirstOrDefault(n => n.PayWay == p.Id); if (T != null) { if (BaseOrders.Amoney >= (decimal)T.SNum && BaseOrders.Amoney <= (decimal)T.ENum) { PCList.Add(p); } } } PayConfig = PCList.OrderBy(n => n.Cost).FirstOrDefault(); if (PayConfig == null) { DataObj.OutError("1000"); return;; } if (BaseOrders.TType == 6) { //PayConfigOrder PayConfigOrder = Entity.PayConfigOrder.FirstOrDefault(n => n.OId == BaseOrders.TNum); //PayConfigOrder.SysRate = 0; //PayConfigOrder.Poundage = PayConfigOrder.Amoney * (decimal)PayConfigOrder.SysRate; //BaseOrders.Poundage = PayConfigOrder.Poundage; BaseOrders.PayWay = PayConfig.Id; } else if (BaseOrders.TType == 10) { BaseOrders.PayWay = PayConfig.Id; } Entity.SaveChanges(); } if (PayConfig == null) { DataObj.OutError("1000"); return; } if (PayConfig.GroupType != "AliPay" && PayConfig.GroupType != "WeiXin") { DataObj.OutError("1007"); return; } #endregion string DataRet = "", Trade = ""; #region 提交好付 if (PayConfig.DllName == "HFAliPay" || PayConfig.DllName == "HFWeiXin") { string NoticeUrl = NoticePath + "/PayCenter/HFPay/Notice.html";; string Action = ""; if (PayConfig.DllName == "HFAliPay") { Action = "AliSao"; } if (PayConfig.DllName == "HFWeiXin") { 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 = BaseOrders.TNum; //商户流水号 decimal money = BaseOrders.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); string HF_Url = "https://api.zhifujiekou.com/api/mpgateway"; DataRet = Utils.PostRequest(HF_Url, PostData, "utf-8"); JObject JS = new JObject(); try { JS = (JObject)JsonConvert.DeserializeObject(DataRet); } catch (Exception Ex) { Log.Write("[Order_HF]:", "【PostData】" + PostData + "\n【DataRet】" + DataRet, Ex); json = null; } if (JS == null) { DataObj.OutError("1000"); return; } string resp = JS["resp"].ToString(); DataRet = LokFuEncode.Base64Decode(resp, "utf-8"); try { JS = (JObject)JsonConvert.DeserializeObject(DataRet); } catch (Exception Ex) { Log.Write("[Order_HF]:", "【DataRet2】" + DataRet, 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】" + DataRet, "orderface"); DataObj.OutError("2096"); return; } BaseOrders.PayId = JS["formaction"].ToString(); Trade = JS["queryid"].ToString(); } #endregion //================================================ //这里记录日志 PayLog PayLog = new PayLog(); PayLog.PId = PayConfig.Id; PayLog.OId = BaseOrders.TNum; PayLog.TId = Trade; PayLog.Amount = BaseOrders.Amoney; PayLog.Way = "GET"; PayLog.AddTime = DateTime.Now; PayLog.Data = Data; PayLog.State = 1; Entity.PayLog.AddObject(PayLog); Entity.SaveChanges(); //================================================ BaseOrders.Cols = "TNum,PayId,Amount,PayState"; DataObj.Data = BaseOrders.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("[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(); }
/// <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("[UsersHouse]:", "【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; } int Day = (DateTime.Now - Users.AddTime).Days; int OrderCount = Entity.Orders.Count(n => (n.TType == 2 || n.TType == 5) && n.PayState == 2 && n.UId == Users.Id); decimal OrderMoney = 0; if (OrderCount > 0) { OrderMoney = Entity.Orders.Where(n => (n.TType == 2 || n.TType == 5) && n.PayState == 2 && n.UId == Users.Id).Sum(n => n.Amoney); } int isT0 = 0; SysSet SysSet = Entity.SysSet.FirstOrDefault(); SysSet.Cols = "House,Cash0,ECash0,Cash1,ECash1,isT0"; SysSet.Cash0 = Users.Cash0; SysSet.Cash1 = Users.Cash1; SysSet.ECash0 = Users.ECash0; SysSet.ECash1 = Users.ECash1; if (Day >= SysSet.CashDay && OrderCount >= SysSet.CashNum && OrderMoney >= SysSet.CashMoney) { isT0 = 1; } //验证是否在快速提现时段内 TaskTimeSet TaskTimeSet = Entity.TaskTimeSet.FirstOrDefault(n => n.STime <= DateTime.Now && n.ETime >= DateTime.Now && n.TId == 1); if (TaskTimeSet == null) { isT0 = 2; } else { //验证配额是否满足 decimal Peier = TaskTimeSet.AllMoney - TaskTimeSet.UsedMoney; decimal minMoney = 0.01M; SysControl SysControl = Entity.SysControl.FirstOrDefault(n => n.Tag == "Cash" && n.State == 1); if (SysControl != null) { minMoney = SysControl.SNum; } if (Peier < minMoney) { isT0 = 3; } } SysSet.isT0 = isT0; DataObj.Data = SysSet.OutJson(); DataObj.Code = "0000"; DataObj.OutString(); }
private bool SetPayConfig(Orders Orders) { if (Orders.PayWay != 0) { PayConfig PayConfig = Entity.PayConfig.FirstOrDefault(n => n.Id == Orders.PayWay && n.State == 1); if (PayConfig == null) { return(false); } if (PayConfig.GroupType != "Bank") { return(false); } ViewBag.PayConfig = PayConfig; } else { //获取最佳支付通道 IList <PayConfig> PayConfigList = Entity.PayConfig.Where(n => n.State == 1 && n.GroupType == "Bank").ToList(); IList <SysControl> SysControlList = Entity.SysControl.OrderBy(n => n.Sort).ToList();//SysControl IList <SysControl> SCList = new List <SysControl>(); IList <PayConfig> PCList = new List <PayConfig>(); foreach (var p in SysControlList) { SysControl T = p.ChkState(); if (T.State == 1) { SCList.Add(p); } } foreach (var p in PayConfigList) { SysControl T = SCList.FirstOrDefault(n => n.PayWay == p.Id); if (T != null) { if (Orders.Amoney >= (decimal)T.SNum && Orders.Amoney <= (decimal)T.ENum) { PCList.Add(p); } } } PayConfig PayConfig = PCList.OrderBy(n => n.Cost).FirstOrDefault(); if (PayConfig == null) { return(false); } ViewBag.PayConfig = PayConfig; if (Orders.TType == 6) { //PayConfigOrder PayConfigOrder = Entity.PayConfigOrder.FirstOrDefault(n => n.OId == Orders.TNum); //PayConfigOrder.SysRate = 0; //PayConfigOrder.Poundage = PayConfigOrder.Amoney * (decimal)PayConfigOrder.SysRate; //Orders.Poundage = PayConfigOrder.Poundage; Orders.PayWay = PayConfig.Id; } else if (Orders.TType == 10) { Orders.PayWay = PayConfig.Id; } else { return(false); } Entity.SaveChanges(); } return(true); }