public ActionResult PostCashProcessing(V_UserCash_Bank model) { Response.BufferOutput = true; StringBuilder strz = new StringBuilder(); int state = 0; M_CashAudit mc = new M_CashAudit(); string retUrl = Utils.GetRe_url("admin/UserCash/RePostCashProcessing"); string bgRetUrl = Utils.GetRe_url("admin/Thirdparty/BgCashProcessing"); bool res = BusinessLogicHelper.postCashHelper(model, ref state, ref mc, retUrl, bgRetUrl); if (!res && state == 0) { return(Content(StringAlert.Alert("取现强制未通过!", "/admin/UserCash/CashProcessing?UserCashId=" + model.UserCashId))); } if (res) { strz.Append(" <form id=\"formauto\" name=\"formauto\" action=\"" + Utils.GetChinapnrUrl() + "\" method=\"post\">"); strz.Append("<input id=\"Version\" name=\"Version\" type=\"hidden\" value=\"" + mc.Version + "\" />"); strz.Append("<input id=\"CmdId\" name=\"CmdId\" type=\"hidden\" value=\"" + mc.CmdId + "\" />"); strz.Append("<input id=\"MerCustId\" name=\"MerCustId\" type=\"hidden\" value=\"" + mc.MerCustId + "\" />"); strz.Append("<input id=\"OrdId\" name=\"OrdId\" type=\"hidden\" value=\"" + mc.OrdId + "\" />"); strz.Append("<input id=\"UsrCustId\" name=\"UsrCustId\" type=\"hidden\" value=\"" + mc.UsrCustId + "\" />"); strz.Append("<input id=\"TransAmt\" name=\"TransAmt\" type=\"hidden\" value=\"" + mc.TransAmt + "\" />"); strz.Append("<input id=\"AuditFlag\" name=\"AuditFlag\" type=\"hidden\" value=\"" + mc.AuditFlag + "\" />"); strz.Append("<input id=\"RetUrl\" name=\"RetUrl\" type=\"hidden\" value=\"" + mc.RetUrl + "\" />"); strz.Append("<input id=\"BgRetUrl\" name=\"BgRetUrl\" type=\"hidden\" value=\"" + mc.BgRetUrl + "\" />"); strz.Append("<input id=\"MerPriv\" name=\"MerPriv\" type=\"hidden\" value=\"" + mc.MerPriv + "\" />"); strz.Append("<input id=\"ChkValue\" name=\"ChkValue\" type=\"hidden\" value=\"" + mc.ChkValue + "\" />"); strz.Append(" </form>"); strz.Append("<script type=\"text/javascript\">document.getElementById('formauto').submit();</script>"); LogInfo.WriteLog("提交参数表单:" + strz.ToString()); } ViewBag.state = state; ViewBag.strz = strz; return(View()); }
/// <summary> /// 提现自动审核 /// </summary> /// <param name="UsrCustId"></param> /// <param name="retUrl"></param> /// <param name="bgRetUrl"></param> public static void AutoCheckCash(string UsrCustId, string retUrl, string bgRetUrl) { chuangtouEntities ef = new chuangtouEntities(); var user = ef.hx_member_table.Where(c => c.UsrCustId == UsrCustId).FirstOrDefault(); if (user == null) { LogInfo.WriteLog("用户提现,自动审核异常:用户不存在!UsrCustID为:" + UsrCustId); return; } var userCash = ef.hx_td_UserCash.Where(c => c.registerid == user.registerid && (c.OrdIdState == 0 || c.OrdIdState == 1)).OrderByDescending(c => c.UserCashId).FirstOrDefault(); if (userCash == null) { LogInfo.WriteLog("用户提现,自动审核异常:用户提现记录不存在!registerid为:" + user.registerid); return; } var model = ef.V_UserCash_Bank.Where(p => p.UserCashId == userCash.UserCashId).SingleOrDefault(); if (model == null) { LogInfo.WriteLog("用户提现,自动审核异常:用户提现记录不存在!UserCashId为:" + userCash.UserCashId); return; } V_UserCash_Bank vub = new V_UserCash_Bank() { available_balance = model.available_balance, OrdIdState = 1,//model.OrdIdState,//审核通过 UsrCustId = model.UsrCustId, BankName = model.BankName, FeeAmt = model.FeeAmt, FeeObjFlag = model.FeeObjFlag, mobile = model.mobile, OpenAcctId = model.OpenAcctId, OpenBankId = model.OpenBankId, OperTime = model.OperTime, OrdId = model.OrdId, OrdIdTime = model.OrdIdTime, realname = model.realname, Reason = model.Reason, registerid = model.registerid, Remarks = model.Remarks, TransAmt = model.TransAmt, TransState = model.TransState, UserCashId = model.UserCashId, useridentity = model.useridentity, username = model.username, usertypes = model.usertypes }; StringBuilder strz = new StringBuilder(); int state = 0; M_CashAudit mc = new M_CashAudit(); //string retUrl = Utils.GetRe_url("admin/UserCash/RePostCashProcessing"); //string bgRetUrl = Utils.GetRe_url("admin/Thirdparty/BgCashProcessing"); bool postRes = postCashHelper(vub, ref state, ref mc, retUrl, bgRetUrl); if (!postRes && state == 0) { //return Content(StringAlert.Alert("取现强制未通过!", "/admin/UserCash/CashProcessing?UserCashId=" + model.UserCashId)); } else if (postRes) { string url = Utils.GetChinapnrUrl(); StringBuilder strBuilder = new StringBuilder(); strBuilder.AppendFormat("Version={0}", mc.Version); strBuilder.AppendFormat("&CmdId={0}", mc.CmdId); strBuilder.AppendFormat("&MerCustId={0}", mc.MerCustId); strBuilder.AppendFormat("&OrdId={0}", mc.OrdId); strBuilder.AppendFormat("&UsrCustId={0}", mc.UsrCustId); strBuilder.AppendFormat("&TransAmt={0}", mc.TransAmt); strBuilder.AppendFormat("&AuditFlag={0}", mc.AuditFlag); strBuilder.AppendFormat("&RetUrl={0}", mc.RetUrl); strBuilder.AppendFormat("&BgRetUrl={0}", mc.BgRetUrl); strBuilder.AppendFormat("&MerPriv={0}", mc.MerPriv); strBuilder.AppendFormat("&ChkValue={0}", mc.ChkValue); string html = Http.Post(url, strBuilder.ToString()); Dictionary <string, string> resdic = new Dictionary <string, string>(); string reg = "<input name=.*/>"; Regex regex = new Regex(reg); var macs = regex.Matches(html); foreach (Match mac in macs) { string[] input = mac.Value.Replace("'", "\"").Split('\"'); resdic.Add(input[1], input[7]); } ReCashAudit m = new ReCashAudit() { AuditFlag = resdic["AuditFlag"], BgRetUrl = resdic["BgRetUrl"], MerCustId = resdic["MerCustId"], ChkValue = resdic["ChkValue"], CmdId = resdic["CmdId"], FeeAcctId = resdic["FeeAcctId"], FeeAmt = resdic["FeeAmt"], FeeCustId = resdic["FeeCustId"], MerPriv = resdic["MerPriv"], OpenAcctId = resdic["OpenAcctId"], OpenBankId = resdic["OpenBankId"], OrdId = resdic["OrdId"], RespCode = resdic["RespCode"], RespDesc = resdic["RespDesc"], RetUrl = resdic["RetUrl"], TransAmt = resdic["TransAmt"], UsrCustId = resdic["UsrCustId"] }; LogInfo.WriteLog("自动审核审核数据回调:" + JsonConvert.SerializeObject(m)); RePostCashHelper(m); } }
public ActionResult CashProcessingMore(string str) { string json = ""; if (string.IsNullOrEmpty(str)) { json = @"{""ret"":0,""msg"":""参数错误""}"; } string strCount = ""; string bid = str; string[] s = bid.Split(new char[] { ',' }); string sqllist = ""; for (int i = 0; i < s.Length; i++) { sqllist = sqllist + "'" + s[i] + "',"; } if (sqllist.Contains(",")) { bid = Utils.ClearLastChar(sqllist); } int orstate = 1; sqllist = " select registerid,UserCashId,OrdId,OrdIdState,TransAmt,BankName,OpenBankId,OpenAcctId,UsrCustId,realname,Reason,Remarks,available_balance from V_UserCash_Bank "; sqllist += " where UserCashId in (" + bid + ")"; DataTable dt = DbHelperSQL.GET_DataTable_List(sqllist); int succ = 0, lost = 0; for (int i = 0; i < dt.Rows.Count; i++) { M_CashAudit mc = new M_CashAudit(); mc.Version = "10"; mc.CmdId = "CashAudit"; mc.MerCustId = Utils.GetMerCustID(); mc.OrdId = dt.Rows[i]["OrdId"].ToString(); mc.UsrCustId = dt.Rows[i]["UsrCustId"].ToString(); mc.TransAmt = dt.Rows[i]["TransAmt"].ToString(); //判定用户在审核期间内把卡号 移除或取消绑定 或 绑定 状态等于0 string bindCardSql = " SELECT * FROM hx_UsrBindCardC WHERE UsrCustId='{0}' AND OpenAcctId='{1}' "; bindCardSql = string.Format(bindCardSql, dt.Rows[i]["UsrCustId"].ToString(), dt.Rows[i]["OpenAcctId"].ToString()); DataTable bcDt = DbHelperSQL.GET_DataTable_List(bindCardSql); if (bcDt == null || bcDt.Rows.Count == 0) { orstate = 4; } if (orstate == 4) { mc.AuditFlag = "R"; } else { mc.AuditFlag = "S"; } // mc.BgRetUrl = ""; mc.BgRetUrl = Utils.GetRe_url("admin/Thirdparty/BgCashProcessing"); mc.MerPriv = "chuanglitou"; StringBuilder chkVal = new StringBuilder(); chkVal.Append(mc.Version); chkVal.Append(mc.CmdId); chkVal.Append(mc.MerCustId); chkVal.Append(mc.OrdId); chkVal.Append(mc.UsrCustId); chkVal.Append(mc.TransAmt); chkVal.Append(mc.AuditFlag); // chkVal.Append(mc.RetUrl); chkVal.Append(mc.BgRetUrl); chkVal.Append(mc.MerPriv); string chkv = chkVal.ToString(); LogInfo.WriteLog("批量取现审核chkv字符:" + chkv); //私钥文件的位置(这里是放在了站点的根目录下) string merKeyFile = AppDomain.CurrentDomain.BaseDirectory + Utils.GetMerPr(); //需要指定提交字符串的长度 int len = Encoding.UTF8.GetBytes(chkv).Length; StringBuilder sbChkValue = new StringBuilder(256); //加签 int strer = DllInterop.SignMsg(Utils.GetMerId(), merKeyFile, chkv, len, sbChkValue); mc.ChkValue = sbChkValue.ToString(); LogInfo.WriteLog("批量取现审核提交信息:" + FastJSON.toJOSN(mc)); using (var client = new WebClient()) { var values = new NameValueCollection(); values.Add("Version", mc.Version); values.Add("CmdId", mc.CmdId); values.Add("MerCustId", mc.MerCustId); values.Add("OrdId", mc.OrdId); values.Add("UsrCustId", mc.UsrCustId); values.Add("TransAmt", mc.TransAmt); values.Add("AuditFlag", mc.AuditFlag); values.Add("BgRetUrl", mc.BgRetUrl); values.Add("MerPriv", mc.MerPriv); values.Add("ChkValue", mc.ChkValue); string url = Utils.GetChinapnrUrl(); //同步发送form表单请求 byte[] result = client.UploadValues(url, "POST", values); var retStr = Encoding.UTF8.GetString(result); // Response.Write(retStr); // LogInfo.WriteLog("批量取现审同步form表单请求" + retStr); ReCashAudit ReCa = new ReCashAudit(); var Re = (ReCashAudit)FastJSON.ToObject(retStr, ReCa); LogInfo.WriteLog("批量取现审返回报文:" + FastJSON.toJOSN(Re)); StringBuilder builder = new StringBuilder(); builder.Append(Re.CmdId); builder.Append(Re.RespCode); builder.Append(Re.MerCustId); builder.Append(Re.OrdId); builder.Append(Re.UsrCustId); builder.Append(Re.TransAmt); builder.Append(Re.OpenAcctId); builder.Append(Re.OpenBankId); builder.Append(Re.AuditFlag); builder.Append(HttpUtility.UrlDecode(Re.BgRetUrl)); builder.Append(Re.MerPriv); var msg = builder.ToString(); LogInfo.WriteLog("批量取现审验签文明:" + msg); //验签 string pgPubkFile = AppDomain.CurrentDomain.BaseDirectory + Utils.GetPgPubk(); int ret = DllInterop.VeriSignMsg(pgPubkFile, msg, msg.Length, Re.ChkValue); LogInfo.WriteLog("批量取现审验签 ret= " + ret.ToString()); if (ret == 0) { //更新数据库 string sql = ""; if (orstate == 1) { sql = "update hx_td_UserCash set Remarks='' where UserCashId=" + dt.Rows[i]["UserCashId"].ToString(); DbHelperSQL.RunSql(sql); } else if (orstate == 3) { sql = "update hx_td_UserCash set Remarks='',OrdIdState=3 ,OperTime='" + DateTime.Now.ToString() + "' where UserCashId=" + dt.Rows[i]["UserCashId"].ToString(); DbHelperSQL.RunSql(sql); } else if (orstate == 4) { // sql = "update hx_td_UserCash set Remarks='" + Utils.CheckSQLHtml(model.Remarks) + "', Reason='" + Utils.CheckSQLHtml(model.Reason) + "',OrdIdState=4 ,OperTime='" + DateTime.Now.ToString() + "' where UserCashId=" + UserCashId.ToString(); // sql += ";update hx_member_table set available_balance=available_balance+" + dt.Rows[0]["TransAmt"].ToString() + ",frozen_sum=frozen_sum-" + dt.Rows[0]["TransAmt"].ToString() + " where registerid=" + dt.Rows[0]["registerid"].ToString(); // DbHelperSQL.RunSql(sql); // return Content(StringAlert.Alert("取现未通过,金额已退还!", "/admin/UserCash/CashProcessing?UserCashId=" + model.UserCashId)); } if (Re.RespCode == "000" || Re.RespCode == "999" || Re.RespCode == "406") { string cachename = Re.OrdId + "Cash" + Re.UsrCustId + Re.TransAmt.ToString(); if (Utils.GeTThirdCache(cachename) == 0) { Utils.SetThirdCache(cachename); //提现成功后,得多事务处理账户金额,流水等 B_usercenter BUC = new B_usercenter(); M_Capital_account_water aw = new M_Capital_account_water(); if (BUC.Su_CashProcessing(Re, aw) > 0) { strCount += Re.OrdId + " 取款审核成功<br /> "; LogInfo.WriteLog("后台取款审核成功:" + str); succ = succ + 1; } else { lost = lost + 1; strCount += Re.OrdId + " 取款审核失败<br /> "; LogInfo.WriteLog("后台取款审核事误操作失败"); } } } else { lost = lost + 1; strCount += Re.OrdId + " 取款审核失败 (" + Re.RespCode + ")<br /> "; LogInfo.WriteLog("后台提现失败" + Re.RespCode); } } else { // Response.Write(Re.UsrCustId + "取款审核验签失败 原因: " + Re.RespDesc + " <br>"); } } } json = @"{""ret"":1,""msg"":""<div style='margin: 9px;line-height:20px;'>批量复核操作成功 RR</div>"" }"; string sfd = succ.ToString() + "笔成功, " + lost.ToString() + "失败<br />" + strCount + " "; json = json.Replace("RR", sfd); return(Content(json, "text/json")); }
/// <summary> /// 后台审核逻辑 /// </summary> /// <param name="model"></param> /// <param name="state"></param> /// <param name="mc"></param> /// <param name="RetUrl"></param> /// <param name="BgRetUrl"></param> /// <returns></returns> public static bool postCashHelper(V_UserCash_Bank model, ref int state, ref M_CashAudit mc, string RetUrl, string BgRetUrl) { int UserCashId = model.UserCashId; int orstate = int.Parse(model.OrdIdState.ToString()); string sql = " select registerid,OrdId,OrdIdState,TransAmt,BankName,OpenBankId,OpenAcctId,UsrCustId,realname,Reason,Remarks,available_balance from V_UserCash_Bank where UserCashId=" + UserCashId.ToString(); DataTable dt = DbHelperSQL.GET_DataTable_List(sql); bool isExistCard = true; state = 0; if (dt != null && dt.Rows.Count > 0) { if (orstate == 5)//强制审核不通过,用于处理异常情况 { sql = "update hx_td_UserCash set Remarks='" + Utils.CheckSQLHtml(model.Remarks) + "', Reason='" + Utils.CheckSQLHtml(model.Reason) + "',OrdIdState=4 ,OperTime='" + DateTime.Now.ToString() + "' where UserCashId=" + UserCashId.ToString(); DbHelperSQL.RunSql(sql); return(false); //Content(StringAlert.Alert("取现强制未通过!", "/admin/UserCash/CashProcessing?UserCashId=" + model.UserCashId)); } //判定用户在审核期间内把卡号 移除或取消绑定 或 绑定 状态等于0 string bindCardSql = " SELECT * FROM hx_UsrBindCardC WHERE UsrCustId='{0}' AND OpenAcctId='{1}' "; bindCardSql = string.Format(bindCardSql, dt.Rows[0]["UsrCustId"].ToString(), model.OpenAcctId); DataTable bcDt = DbHelperSQL.GET_DataTable_List(bindCardSql); if (bcDt == null || bcDt.Rows.Count == 0) { orstate = 4; isExistCard = false; } if (orstate == 1 || orstate == 4) { //审核接口 state = 1; mc = new M_CashAudit(); mc.Version = "10"; mc.CmdId = "CashAudit"; mc.MerCustId = Utils.GetMerCustID(); mc.OrdId = dt.Rows[0]["OrdId"].ToString(); mc.UsrCustId = dt.Rows[0]["UsrCustId"].ToString(); mc.TransAmt = dt.Rows[0]["TransAmt"].ToString(); if (orstate == 4) { mc.AuditFlag = "R"; } else { mc.AuditFlag = "S"; } // mc.RetUrl = "http://localhost:17745/admin/UserCash/RePostCashProcessing"; // mc.BgRetUrl = Utils.GetRe_url("111admin/Thirdparty/BgCashProcessing"); mc.RetUrl = RetUrl; //Utils.GetRe_url("admin/UserCash/RePostCashProcessing"); mc.BgRetUrl = BgRetUrl; // Utils.GetRe_url("admin/Thirdparty/BgCashProcessing"); mc.MerPriv = "chuanglitou"; StringBuilder chkVal = new StringBuilder(); chkVal.Append(mc.Version); chkVal.Append(mc.CmdId); chkVal.Append(mc.MerCustId); chkVal.Append(mc.OrdId); chkVal.Append(mc.UsrCustId); chkVal.Append(mc.TransAmt); chkVal.Append(mc.AuditFlag); chkVal.Append(mc.RetUrl); chkVal.Append(mc.BgRetUrl); chkVal.Append(mc.MerPriv); string chkv = chkVal.ToString(); LogInfo.WriteLog("取现审核chkv字符:" + chkv); //私钥文件的位置(这里是放在了站点的根目录下) string merKeyFile = AppDomain.CurrentDomain.BaseDirectory + Utils.GetMerPr(); //需要指定提交字符串的长度 int len = Encoding.UTF8.GetBytes(chkv).Length; StringBuilder sbChkValue = new StringBuilder(256); //加签 int str = DllInterop.SignMsg(Utils.GetMerId(), merKeyFile, chkv, len, sbChkValue); mc.ChkValue = sbChkValue.ToString(); if (str == 0) { //更新数据库 string sql1 = ""; if (orstate == 1) { sql = "update hx_td_UserCash set Remarks='" + Utils.CheckSQLHtml(model.Remarks) + "' where UserCashId=" + UserCashId.ToString(); DbHelperSQL.RunSql(sql); } else if (orstate == 3) { sql = "update hx_td_UserCash set Remarks='" + Utils.CheckSQLHtml(model.Remarks) + "',OrdIdState=3 ,OperTime='" + DateTime.Now.ToString() + "' where UserCashId=" + UserCashId.ToString(); DbHelperSQL.RunSql(sql); } else if (orstate == 4) { if (!isExistCard) { List <string> strList = new List <string>(); StringBuilder strSql = new StringBuilder(); strSql.Append("insert into hx_Capital_account_water("); strSql.Append("membertable_registerid,income,expenditure,time_of_occurrence,account_balance,types_Finance,createtime,keyid,remarks)"); strSql.Append(" values ("); strSql.Append("" + Convert.ToInt32(dt.Rows[0]["registerid"].ToString()) + "," + Convert.ToDecimal("0") + "," + Convert.ToDecimal("0") + ",'" + DateTime.Now.ToString() + "'," + (Convert.ToDecimal(dt.Rows[0]["available_balance"])) + "," + (int)EnumTypesFinance.提现卡不存在 + ",'" + DateTime.Now.ToString() + "','0','提现未通过')"); strList.Add(strSql.ToString()); var i = DbHelperSQL.ExecuteSqlTran(strList); strSql.Clear(); } } return(true); } } else { // return Content(StringAlert.Alert("验签失败!", "/admin/UserCash/CashProcessing?UserCashId=" + model.UserCashId)); } } return(false); }