public ActionResult PlatformToUserMoney(string UsrCustId = "", decimal money = 0) { string keypassword = ConfigurationManager.AppSettings["RechargePassWord"].ToString(); string password = DNTRequest.GetFormString("pssword"); if (string.IsNullOrEmpty(UsrCustId)) { return(Content(StringAlert.Alert("客户号不可以为空!"), "text/html")); } if (money <= 0) { return(Content(StringAlert.Alert("转账金额错误!"), "text/html")); } if (String.IsNullOrEmpty(password)) { return(Content(StringAlert.Alert("密码不能为空!"), "text/html")); } if (keypassword != password) { return(Content(StringAlert.Alert("充值密码不正确"), "text/html")); } M_Transfer m = new M_Transfer(); m.Version = "10"; m.CmdId = "Transfer"; m.OrdId = Utils.Createcode(); m.OutCustId = Utils.GetMerCustID(); m.OutAcctId = "MDT000001"; m.TransAmt = money.ToString("0.00"); m.InCustId = Utils.CheckSQLHtml(UsrCustId); m.BgRetUrl = Utils.GetRe_url("admin/Thirdparty/BgToUserTransfer"); StringBuilder chkVal = new StringBuilder(); chkVal.Append(m.Version); chkVal.Append(m.CmdId); chkVal.Append(m.OrdId); chkVal.Append(m.OutCustId); chkVal.Append(m.OutAcctId); chkVal.Append(m.TransAmt); chkVal.Append(m.InCustId); chkVal.Append(m.RetUrl); chkVal.Append(m.BgRetUrl); chkVal.Append(m.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); LogInfo.WriteLog("加签字符:" + str.ToString()); m.ChkValue = sbChkValue.ToString(); LogInfo.WriteLog("提交信息:" + FastJSON.toJOSN(m)); LogInfo.WriteLog("ChkValue:" + m.ChkValue); string _resultStr = ""; using (var client = new WebClient()) { var values = new NameValueCollection(); values.Add("Version", m.Version); values.Add("CmdId", m.CmdId); values.Add("OrdId", m.OrdId); values.Add("OutCustId", m.OutCustId); values.Add("OutAcctId", m.OutAcctId); values.Add("TransAmt", m.TransAmt); values.Add("InCustId", m.InCustId); values.Add("InAcctId", m.InAcctId); values.Add("RetUrl", m.RetUrl); values.Add("BgRetUrl", m.BgRetUrl); values.Add("MerPriv", m.MerPriv); values.Add("ChkValue", m.ChkValue); string url = Utils.GetChinapnrUrl(); //同步发送form表单请求 byte[] result = client.UploadValues(url, "POST", values); var retStr = Encoding.UTF8.GetString(result); // Response.Write(retStr); LogInfo.WriteLog("自动扣款转账(商户用)返回报文" + retStr); ReTransfer reg = new ReTransfer(); var retloan = (ReTransfer)FastJSON.ToObject(retStr, reg); StringBuilder builder = new StringBuilder(); builder.Append(retloan.CmdId); builder.Append(retloan.RespCode); builder.Append(retloan.OrdId); builder.Append(retloan.OutCustId); builder.Append(retloan.OutAcctId); builder.Append(retloan.TransAmt); builder.Append(retloan.InCustId); builder.Append(retloan.InAcctId); builder.Append(retloan.RetUrl); builder.Append(retloan.BgRetUrl); builder.Append(retloan.MerPriv); var msg = builder.ToString(); LogInfo.WriteLog("返回参数:" + msg); //验签 string pgPubkFile = AppDomain.CurrentDomain.BaseDirectory + Utils.GetPgPubk(); int ret = DllInterop.VeriSignMsg(pgPubkFile, msg, msg.Length, retloan.ChkValue); LogInfo.WriteLog("验签ret:" + ret.ToString()); if (ret == 0) { if (retloan.RespCode == "000") { //_resultStr = retloan.RespCode.ToString() + " <br> " + HttpUtility.UrlDecode(retloan.RespDesc) + "<br>转账成功"; #region 流水信息 string sql = "SELECT registerid,username,mobile from hx_member_table where UsrCustId='" + retloan.InCustId + "'"; System.Data.DataTable dt = DbHelperSQL.GET_DataTable_List(sql); if (dt.Rows.Count > 0) { B_usercenter ors = new B_usercenter(); decimal di = ors.GetUsridAvailable_balance(int.Parse(dt.Rows[0]["registerid"].ToString())); // di = di + decimal.Parse(hua.Amt.ToString()); 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("" + int.Parse(dt.Rows[0]["registerid"].ToString()) + "," + decimal.Parse(retloan.TransAmt) + ",0,'" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "'," + (di + decimal.Parse(retloan.TransAmt)) + "," + (int)Enum.Parse(typeof(EnumTypesFinance), EnumTypesFinance.平台向用户划账.ToString()) + ",'" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "',0,'" + "平台向用户划账" + "')"); DbHelperSQL.RunSql(strSql.ToString()); strSql.Clear(); } #endregion _resultStr = "<br>转账成功"; } else { _resultStr = HttpUtility.UrlDecode(retloan.RespDesc); } } } ViewBag.str = _resultStr; return(View()); }
/// <summary> /// 12月份元旦活动转账专用 获取活动信息 短信通知部分需要更改 /// </summary> /// <param name="mc"></param> /// <param name="TrAMT"></param> /// <param name="TransAmt"></param> public void YuandaiToUserTransfer(M_CashAwards mc, decimal TrAMT, decimal TransAmt) { M_Transfer m = new M_Transfer(); m.Version = "10"; m.CmdId = "Transfer"; // m.OrdId = Utils.Createcode(); m.OrdId = mc.OrdId.ToString(); m.OutCustId = Utils.GetMerCustID(); m.OutAcctId = "MDT000001"; m.TransAmt = mc.Amounts.ToString("0.00"); m.InCustId = mc.UsrCustId; m.BgRetUrl = Utils.GetRe_url("Thirdparty/ToUserTransfer.aspx"); m.MerPriv = mc.proid.ToString(); StringBuilder chkVal = new StringBuilder(); chkVal.Append(m.Version); chkVal.Append(m.CmdId); chkVal.Append(m.OrdId); chkVal.Append(m.OutCustId); chkVal.Append(m.OutAcctId); chkVal.Append(m.TransAmt); chkVal.Append(m.InCustId); chkVal.Append(m.RetUrl); chkVal.Append(m.BgRetUrl); chkVal.Append(m.MerPriv); string chkv = chkVal.ToString(); LogInfo.WriteLog("12月份元旦活动平台向用户活动转账加签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); LogInfo.WriteLog("12月份元旦活动平台向用户活动转账加签字符:" + str.ToString()); m.ChkValue = sbChkValue.ToString(); LogInfo.WriteLog("12月份元旦活动平台向用户活动转账提交信息:" + FastJSON.toJOSN(m)); LogInfo.WriteLog("ChkValue:" + m.ChkValue); using (var client = new WebClient()) { var values = new NameValueCollection(); values.Add("Version", m.Version); values.Add("CmdId", m.CmdId); values.Add("OrdId", m.OrdId); values.Add("OutCustId", m.OutCustId); values.Add("OutAcctId", m.OutAcctId); values.Add("TransAmt", m.TransAmt); values.Add("InCustId", m.InCustId); values.Add("InAcctId", m.InAcctId); values.Add("RetUrl", m.RetUrl); values.Add("BgRetUrl", m.BgRetUrl); values.Add("MerPriv", m.MerPriv); values.Add("ChkValue", m.ChkValue); string url = Utils.GetChinapnrUrl(); //同步发送form表单请求 byte[] result = client.UploadValues(url, "POST", values); var retStr = Encoding.UTF8.GetString(result); // Response.Write(retStr); LogInfo.WriteLog("12月份元旦活动自动扣款转账(商户用)返回报文" + retStr); ReTransfer reg = new ReTransfer(); var retloan = (ReTransfer)FastJSON.ToObject(retStr, reg); StringBuilder builder = new StringBuilder(); builder.Append(retloan.CmdId); builder.Append(retloan.RespCode); builder.Append(retloan.OrdId); builder.Append(retloan.OutCustId); builder.Append(retloan.OutAcctId); builder.Append(retloan.TransAmt); builder.Append(retloan.InCustId); builder.Append(retloan.InAcctId); builder.Append(HttpUtility.UrlDecode(retloan.RetUrl)); builder.Append(HttpUtility.UrlDecode(retloan.BgRetUrl)); builder.Append(retloan.MerPriv); var msg = builder.ToString(); LogInfo.WriteLog("12月份元旦活动平台向用户活动转账返回参数:" + msg); //验签 string pgPubkFile = AppDomain.CurrentDomain.BaseDirectory + Utils.GetPgPubk(); int ret = DllInterop.VeriSignMsg(pgPubkFile, msg, msg.Length, retloan.ChkValue); LogInfo.WriteLog("12月份元旦活动平台向用户活动转账验签ret:" + ret.ToString()); if (ret == 0) { if (retloan.RespCode == "000") { /* * string sql = "update hx_CashAwards set OrdIdstate=3 where OrdIdstate=1 and OrdId=" + retloan.OrdId + " and proid =" + retloan.MerPriv; * DbHelperSQL.RunSql(sql); * LogInfo.WriteLog("平台向用户活动转账验签更新"+ sql); */ // Response.Write(retloan.RespCode + " <br> "); B_usercenter BUC = new B_usercenter(); int dint = BUC.UpateAwa(retloan); LogInfo.WriteLog("12月份元旦活动事务执行返回:" + dint.ToString()); if (dint > 0) { B_member_table dmt = new B_member_table(); string sql = "SELECT registerid,username,mobile from hx_member_table where UsrCustId='" + retloan.InCustId + "'"; DataTable dt = DbHelperSQL.GET_DataTable_List(sql); if (dt.Rows.Count > 0) { //活动奖历 M_Activity_schedule ma = new M_Activity_schedule(); B_Activity_schedule ba = new B_Activity_schedule(); B_bonus_account bb = new B_bonus_account(); M_bonus_account mb = new M_bonus_account(); M_bonus_account_water mbaw = new M_bonus_account_water(); B_bonus_account_water bbaw = new B_bonus_account_water(); DateTime dte = DateTime.Now; // ma = ba.GetModel(16); //测试平台 ma = ba.GetModel(15); //获取奖励对象 mb.activity_schedule_id = ma.activity_schedule_id; mb.membertable_registerid = int.Parse(dt.Rows[0]["registerid"].ToString()); mb.activity_schedule_name = ma.activity_schedule_name; mb.amount_of_reward = decimal.Parse(retloan.TransAmt); mb.use_lower_limit = ma.use_lower_limit; mb.reward = ma.reward; mb.start_date = dte; mb.end_date = dte; mb.entry_time = dte; mb.reward_state = 3; int bbid = bb.Add(mb); if (bbid > 0) //奖励记录成功后插入明细记录 { mbaw.bonus_account_id = bbid; mbaw.membertable_registerid = mb.membertable_registerid; mbaw.income = mb.amount_of_reward; mbaw.expenditure = 0.00M; mbaw.time_of_occurrence = mb.entry_time; // mbaw. mbaw.award_description = "已汇入个人账户"; mbaw.water_type = 0; bbaw.Add(mbaw); //短信通知 #region MyRegion //短信通知 string contxt = Utils.GetMSMEmailContext(20, 1); // 获取注册成功邮件内容 StringBuilder sbsms = new StringBuilder(contxt); sbsms = sbsms.Replace("#USERANEM#", dt.Rows[0]["username"].ToString()); sbsms = sbsms.Replace("#MONEY#", TrAMT.ToString("0.00")); sbsms = sbsms.Replace("#AMTM#", TransAmt.ToString("0.00")); string mobile = dt.Rows[0]["mobile"].ToString(); M_td_SMS_record psms = new M_td_SMS_record(); B_td_SMS_record osms = new B_td_SMS_record(); int smstype = (int)Enum.Parse(typeof(EnumSMSType), EnumSMSType.活动奖励.ToString()); psms.phone_number = mobile; psms.sendtime = DateTime.Now; psms.senduserid = int.Parse(dt.Rows[0]["registerid"].ToString()); psms.smstype = smstype; psms.smscontext = sbsms.ToString(); psms.orderid = SendSMS.Send_SMS(mobile, sbsms.ToString()); psms.vcode = ""; osms.Add(psms); #endregion } #region MyRegion 系统消息 DateTime dti = DateTime.Now; M_td_System_message pm = new M_td_System_message(); pm.MReg = int.Parse(dt.Rows[0]["registerid"].ToString()); pm.Mstate = 0; pm.MTitle = "投资成功现金奖励"; pm.MContext = "尊敬的用户" + dt.Rows[0]["username"].ToString() + ":您好!恭喜您成功投资了项目,现金奖励 " + retloan.TransAmt + "元。如有问题可咨询创利投的客服!"; pm.PubTime = dti; B_usercenter.AddMessage(pm); #endregion } LogInfo.WriteLog("12月份元旦活动 平台向用户活动转账验签更新成功,需要写入消息"); } } else { //Response.Write(HttpUtility.UrlDecode(retloan.)); } } } }
/// <summary> /// 自动扣款转账(商户用)接口 商户向用户转帐 /// </summary> /// <param name="UsrCustId">客户号</param> /// <param name="TranAMT">转账金额</param> /// <param name="ReturnUrl">汇付返回主动通知页面如:admin/Thirdparty/BgToUserTransfer</param> /// <returns></returns> public ReTransfer ToUserTransfer(string UsrCustId, decimal TranAMT, string OrdId, string UserAct, string ReturnUrl) { M_Transfer m = new M_Transfer(); ReTransfer retloan = new ReTransfer(); m.Version = "10"; m.CmdId = "Transfer"; m.OrdId = OrdId; m.OutCustId = Utils.GetMerCustID(); m.OutAcctId = "MDT000001"; m.TransAmt = TranAMT.ToString("0.00"); m.InCustId = UsrCustId; m.BgRetUrl = Utils.GetRe_url(ReturnUrl); m.MerPriv = UserAct; StringBuilder chkVal = new StringBuilder(); chkVal.Append(m.Version); chkVal.Append(m.CmdId); chkVal.Append(m.OrdId); chkVal.Append(m.OutCustId); chkVal.Append(m.OutAcctId); chkVal.Append(m.TransAmt); chkVal.Append(m.InCustId); chkVal.Append(m.RetUrl); chkVal.Append(m.BgRetUrl); chkVal.Append(m.MerPriv); string chkv = chkVal.ToString(); string log = "商户向用户转账加签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); log += "<br>加签字符:" + str.ToString(); m.ChkValue = sbChkValue.ToString(); log += "<br>提交信息:" + FastJSON.toJOSN(m); log += "<br>ChkValue:" + m.ChkValue; using (var client = new WebClient()) { var values = new NameValueCollection(); values.Add("Version", m.Version); values.Add("CmdId", m.CmdId); values.Add("OrdId", m.OrdId); values.Add("OutCustId", m.OutCustId); values.Add("OutAcctId", m.OutAcctId); values.Add("TransAmt", m.TransAmt); values.Add("InCustId", m.InCustId); values.Add("InAcctId", m.InAcctId); values.Add("RetUrl", m.RetUrl); values.Add("BgRetUrl", m.BgRetUrl); values.Add("MerPriv", m.MerPriv); values.Add("ChkValue", m.ChkValue); string url = Utils.GetChinapnrUrl(); //同步发送form表单请求 byte[] result = client.UploadValues(url, "POST", values); var retStr = Encoding.UTF8.GetString(result); // Response.Write(retStr); log += "<br>自动扣款转账(商户用)返回报文:" + retStr; ReTransfer reg = new ReTransfer(); retloan = (ReTransfer)FastJSON.ToObject(retStr, reg); StringBuilder builder = new StringBuilder(); builder.Append(retloan.CmdId); builder.Append(retloan.RespCode); builder.Append(retloan.OrdId); builder.Append(retloan.OutCustId); builder.Append(retloan.OutAcctId); builder.Append(retloan.TransAmt); builder.Append(retloan.InCustId); builder.Append(retloan.InAcctId); builder.Append(retloan.RetUrl); builder.Append(retloan.BgRetUrl); builder.Append(retloan.MerPriv); var msg = builder.ToString(); log += "<br>商户向用户转账返回参数:" + msg; //验签 string pgPubkFile = AppDomain.CurrentDomain.BaseDirectory + Utils.GetPgPubk(); int ret = DllInterop.VeriSignMsg(pgPubkFile, msg, msg.Length, retloan.ChkValue); log += "<br>商户向用户转账验签ret:" + ret.ToString(); if (ret == 0) { if (retloan.RespCode == "000") { } else { retloan = null; } } } LogInfo.WriteLog(log); return(retloan); }
/// <summary> /// 汇付主动通知页面 /// </summary> /// <returns></returns> public ActionResult CashBgCallback() { string str1 = ""; ReCash m = new ReCash(); m.CmdId = DNTRequest.GetString("CmdId"); m.RespCode = DNTRequest.GetString("RespCode"); m.RespDesc = HttpUtility.UrlDecode(DNTRequest.GetString("RespDesc")); m.MerCustId = DNTRequest.GetString("MerCustId"); m.OrdId = DNTRequest.GetString("OrdId"); m.UsrCustId = DNTRequest.GetString("UsrCustId"); m.TransAmt = DNTRequest.GetString("TransAmt"); m.OpenAcctId = DNTRequest.GetString("OpenAcctId"); m.OpenBankId = DNTRequest.GetString("OpenBankId"); m.FeeAmt = DNTRequest.GetString("FeeAmt"); m.FeeCustId = DNTRequest.GetString("FeeCustId"); m.FeeAcctId = DNTRequest.GetString("FeeAcctId"); m.ServFee = DNTRequest.GetString("ServFee"); m.ServFeeAcctId = DNTRequest.GetString("ServFeeAcctId"); m.RetUrl = HttpUtility.UrlDecode(DNTRequest.GetString("RetUrl")); m.BgRetUrl = HttpUtility.UrlDecode(DNTRequest.GetString("BgRetUrl")); m.MerPriv = DNTRequest.GetString("MerPriv"); m.RespExt = HttpUtility.UrlDecode(DNTRequest.GetString("RespExt")); m.ChkValue = DNTRequest.GetString("ChkValue"); m.RealTransAmt = DNTRequest.GetString("RealTransAmt"); LoggerHelper.Info("后台取现返回报文:" + JsonHelper.Entity2Json(m)); //验签 StringBuilder chkVal = new StringBuilder(); chkVal.Append(m.CmdId); chkVal.Append(m.RespCode); chkVal.Append(m.MerCustId); chkVal.Append(m.OrdId); chkVal.Append(m.UsrCustId); chkVal.Append(m.TransAmt); chkVal.Append(m.OpenAcctId); chkVal.Append(m.OpenBankId); chkVal.Append(m.FeeAmt); chkVal.Append(m.FeeCustId); chkVal.Append(m.FeeAcctId); chkVal.Append(m.ServFee); chkVal.Append(m.ServFeeAcctId); chkVal.Append(m.RetUrl); chkVal.Append(m.BgRetUrl); chkVal.Append(m.MerPriv); chkVal.Append(m.RespExt); string msg = chkVal.ToString(); //私钥文件的位置(这里是放在了站点的根目录下) string merKeyFile = AppDomain.CurrentDomain.BaseDirectory + Settings.Instance.PgPubk; //需要指定提交字符串的长度 int len = Encoding.UTF8.GetBytes(msg).Length; StringBuilder sbChkValue = new StringBuilder(256); int ret = DllInterop.VeriSignMsg(merKeyFile, msg, msg.Length, m.ChkValue); // LoggerHelper.Info("验签返回参数:" + ret.ToString()); StringBuilder str = new StringBuilder(); if (ret == 0) { //提现成功后,得多事务处理账户金额,流水及冻结金额等 if (m.RespCode == "000") { string cachename = m.OrdId + "Cash" + m.UsrCustId; if (Settings.Instance.GeTThirdCache(cachename) == 0) { Settings.Instance.SetThirdCache(cachename); B_usercenter BUC = new B_usercenter(); M_ReqExt mr = new M_ReqExt(); mr = FastJSON.ToObject <M_ReqExt>(m.RespExt.Replace("[", "").Replace("]", "")); int CashOp = BUC.CashTran(m.OpenAcctId, m.OpenBankId, m.OrdId, m.RealTransAmt, m.UsrCustId, m.FeeAmt, mr.FeeObjFlag, mr.CashChl); if (CashOp > 0) { string sql = "select registerid,username,mobile,UsrCustId,available_balance from hx_member_table where UsrCustId='" + m.UsrCustId + "'"; LoggerHelper.Info("后台审请取现成功短信sql:" + sql); DataTable dt = DbHelper.Query(sql).Tables[0]; if (dt.Rows.Count > 0) { //短信通知 //尊敬的#USERANEM#,您已成功提现#MONEY#元,账户余额#MONEY1#.请注意查收!【创利投】 MemberLogic _logic = new MemberLogic(); var ebt = _logic.GetSmsEmailEntity(1, 12); // 获取内容 string contxt = ebt.SEContext; StringBuilder sbsms = new StringBuilder(contxt); sbsms = sbsms.Replace("#USERANEM#", dt.Rows[0]["username"].ToString()); sbsms = sbsms.Replace("#MONEY#", m.TransAmt); decimal amt = decimal.Parse(dt.Rows[0]["available_balance"].ToString()) - decimal.Parse(m.TransAmt); sbsms = sbsms.Replace("#MONEY1#", amt.ToString()); string mobile = dt.Rows[0]["mobile"].ToString(); M_td_SMS_record psms = new M_td_SMS_record(); B_td_SMS_record osms = new B_td_SMS_record(); int smstype = (int)Enum.Parse(typeof(EnumSMSType), EnumSMSType.取现成功.ToString()); psms.phone_number = mobile; psms.sendtime = DateTime.Now; psms.senduserid = int.Parse(dt.Rows[0]["registerid"].ToString()); psms.smstype = smstype; psms.smscontext = sbsms.ToString(); psms.orderid = SendSMS.Send(mobile, sbsms.ToString()); psms.vcode = ""; osms.Add(psms); DateTime dti = DateTime.Now; M_td_System_message pm = new M_td_System_message(); pm.MReg = int.Parse(dt.Rows[0]["registerid"].ToString()); pm.Mstate = 0; pm.MTitle = "投现成功"; pm.MContext = sbsms.ToString(); pm.PubTime = dti; pm.Mtype = 3; B_usercenter.AddMessage(pm); //即时提现,提现金额小于等于20万自动审核,高于20万人工审核 string cashChl = Enum.GetName(typeof(EnumCommon.E_hx_td_UserCash.EnumCashChl), (int)EnumCommon.E_hx_td_UserCash.EnumCashChl.IMMEDIATE); if (mr.CashChl == cashChl && decimal.Parse(m.TransAmt) <= 200000) { string retUrl = Settings.Instance.ImagesDomain + "/admin/UserCash/RePostCashProcessing"; string bgRetUrl = Settings.Instance.ImagesDomain + "/admin/Thirdparty/BgCashProcessing"; BusinessLogicHelper.AutoCheckCash(m.UsrCustId, retUrl, bgRetUrl); } } } } str1 = "RECV_ORD_ID_" + m.OrdId; } } return(Content(str1)); }
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="OrdId"></param> /// <param name="OrdDate">格式为 YYYYMMDD,例如:20130307</param> /// <param name="QueryTransType"></param> /// <returns></returns> public bool checktrans(string OrdId, string OrdDate, string QueryTransType = "TENDER") { bool t = false; M_QueryTransStat m = new M_QueryTransStat(); m.Version = "10"; m.CmdId = "QueryTransStat"; m.MerCustId = Utils.GetMerCustID(); m.OrdId = OrdId; m.OrdDate = OrdDate; m.QueryTransType = QueryTransType; StringBuilder chkVal = new StringBuilder(); chkVal.Append(m.Version); chkVal.Append(m.CmdId); chkVal.Append(m.MerCustId); chkVal.Append(m.OrdId); chkVal.Append(m.OrdDate); chkVal.Append(m.QueryTransType); string chkv = chkVal.ToString(); LogInfo.WriteLog("行为:" + QueryTransType + "加签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); LogInfo.WriteLog("行为:" + QueryTransType + "加签字符:" + str.ToString()); m.ChkValue = sbChkValue.ToString(); LogInfo.WriteLog("行为:" + QueryTransType + "提交信息:" + FastJSON.toJOSN(m)); LogInfo.WriteLog("行为:" + QueryTransType + "ChkValue:" + m.ChkValue); using (var client = new WebClient()) { var values = new NameValueCollection(); values.Add("Version", m.Version); values.Add("CmdId", m.CmdId); values.Add("MerCustId", m.MerCustId); values.Add("OrdId", m.OrdId); values.Add("OrdDate", m.OrdDate); values.Add("QueryTransType", m.QueryTransType); values.Add("ChkValue", m.ChkValue); string url = Utils.GetChinapnrUrl(); //同步发送form表单请求 byte[] result = client.UploadValues(url, "POST", values); var retStr = Encoding.UTF8.GetString(result); // Response.Write(retStr); LogInfo.WriteLog("行为:" + QueryTransType + "交易状态返回报文" + retStr); ReQueryTransStat reg = new ReQueryTransStat(); var retloan = (ReQueryTransStat)FastJSON.ToObject(retStr, reg); StringBuilder builder = new StringBuilder(); builder.Append(retloan.CmdId); builder.Append(retloan.RespCode); builder.Append(retloan.MerCustId); builder.Append(retloan.OrdId); builder.Append(retloan.OrdDate); builder.Append(retloan.QueryTransType); builder.Append(retloan.TransStat); var msg = builder.ToString(); LogInfo.WriteLog("行为:" + QueryTransType + "返回参数:" + msg); //验签 string pgPubkFile = AppDomain.CurrentDomain.BaseDirectory + Utils.GetPgPubk(); int ret = DllInterop.VeriSignMsg(pgPubkFile, msg, msg.Length, retloan.ChkValue); LogInfo.WriteLog("行为:" + QueryTransType + "验签ret:" + ret.ToString()); if (ret == 0) { if (retloan.RespCode == "000") { if (QueryTransType == "TENDER") //投标查询结果 { /*投标 * N--成功 * C-失败 */ if (retloan.TransStat == "N") { t = true; } } else if (QueryTransType == "REPAYMENT" || QueryTransType == "LOANS")//还款 { /*放款,还款 * I--初始 * P--部分成功 */ if (retloan.TransStat == "P") { t = true; } } else if (QueryTransType == "CASH") //取现 { /*S--成功 * F--失败 * H--经办 * R--拒绝 */ if (retloan.TransStat == "S") { t = true; } } else if (QueryTransType == "FREEZE")//冻结解冻交易查询 { /*F – 冻结 * U – 已解冻 */ if (retloan.TransStat == "U") { t = true; } } } else { t = false; } } } return(t); }
/// <summary> /// 更新用户第三方余额 /// </summary> /// <param name="usrid"></param> /// <returns></returns> public ReQueryBalanceBg Querybalance(int usrid) { M_QueryBalanceBg mbg = new M_QueryBalanceBg(); ReQueryBalanceBg retloan = new ReQueryBalanceBg(); hx_member_table mt = ef.hx_member_table.Where(p => p.registerid == usrid).FirstOrDefault(); string UsrCustId = ""; if (mt != null) { UsrCustId = mt.UsrCustId; } if (UsrCustId != null && UsrCustId != "") { if (UsrCustId.Length > 0) { mbg.Version = "10"; mbg.CmdId = "QueryBalanceBg"; mbg.MerCustId = Utils.GetMerCustID(); mbg.UsrCustId = UsrCustId; StringBuilder chkVal = new StringBuilder(); chkVal.Append(mbg.Version); chkVal.Append(mbg.CmdId); chkVal.Append(mbg.MerCustId); chkVal.Append(mbg.UsrCustId); string chkv = chkVal.ToString(); string log = "更新用户第三方余额"; log += "<br>加签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); LogInfo.WriteLog("加签字符:" + str.ToString()); mbg.ChkValue = sbChkValue.ToString(); log += "<br>提交信息:" + FastJSON.toJOSN(mbg); log += "<br>ChkValue:" + mbg.ChkValue; using (var client = new WebClient()) { var values = new NameValueCollection(); values.Add("Version", mbg.Version); values.Add("CmdId", mbg.CmdId); values.Add("MerCustId", mbg.MerCustId); values.Add("UsrCustId", mbg.UsrCustId); values.Add("ChkValue", mbg.ChkValue); string url = Utils.GetChinapnrUrl(); //同步发送form表单请求 byte[] result = client.UploadValues(url, "POST", values); var retStr = Encoding.UTF8.GetString(result); // Response.Write(retStr); LogInfo.WriteLog(retStr); ReQueryBalanceBg reg = new ReQueryBalanceBg(); retloan = (ReQueryBalanceBg)FastJSON.ToObject(retStr, reg); StringBuilder builder = new StringBuilder(); builder.Append(retloan.CmdId); builder.Append(retloan.RespCode); //builder.Append(retloan.RespDesc); builder.Append(retloan.MerCustId); builder.Append(retloan.UsrCustId); builder.Append(retloan.AvlBal); builder.Append(retloan.AcctBal); builder.Append(retloan.FrzBal); // builder.Append(retloan.ChkValue); var msg = builder.ToString(); log += "<br>返回参数:" + msg; //验签 string pgPubkFile = AppDomain.CurrentDomain.BaseDirectory + Utils.GetPgPubk(); int ret = DllInterop.VeriSignMsg(pgPubkFile, msg, msg.Length, retloan.ChkValue); log += "<br>验签ret:" + ret.ToString(); if (ret == 0) { if (retloan.RespCode == "000") { B_usercenter bu = new B_usercenter(); bu.DataSync(retloan, UsrCustId, 1); // Response.Write("账户余额: " + retloan.AcctBal + "<br>"); // Response.Write("可用余额: " + retloan.AvlBal + "<br>"); // Response.Write("冻结余额: " + retloan.FrzBal + "<br>"); // AvlBal.Value = retloan.AvlBal; // FrzBal.Value = retloan.FrzBal; // string sql = "update hx_member_table set available_balance=" + decimal.Parse(retloan.AvlBal) + " ,frozen_sum=" + decimal.Parse(retloan.FrzBal) + " where UsrCustId='" + UsrCustId + "'"; // DbHelperSQL.RunSql(sql); } else { // Response.Write(HttpUtility.UrlDecode(retloan.RespDesc)); } } } LogInfo.WriteLog(log); } } return(retloan); }
/// <summary> /// 平台向用户转账 /// </summary> /// <param name="money">金额</param> /// <param name="UsrCustId">客户号</param> /// <returns></returns> public static ReTransfer platformToUserMoney(decimal money, string usrCustId) { M_Transfer m = new M_Transfer(); m.Version = "10"; m.CmdId = "Transfer"; m.OrdId = Utils.Createcode(); m.OutCustId = Utils.GetMerCustID(); m.OutAcctId = "MDT000001"; m.TransAmt = money.ToString("0.00"); m.InCustId = Utils.CheckSQLHtml(usrCustId); m.BgRetUrl = Utils.GetRe_url("admin/Thirdparty/BgToUserTransfer"); StringBuilder chkVal = new StringBuilder(); chkVal.Append(m.Version); chkVal.Append(m.CmdId); chkVal.Append(m.OrdId); chkVal.Append(m.OutCustId); chkVal.Append(m.OutAcctId); chkVal.Append(m.TransAmt); chkVal.Append(m.InCustId); chkVal.Append(m.RetUrl); chkVal.Append(m.BgRetUrl); chkVal.Append(m.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); LogInfo.WriteLog("加签字符:" + str.ToString()); m.ChkValue = sbChkValue.ToString(); LogInfo.WriteLog("提交信息:" + FastJSON.toJOSN(m)); LogInfo.WriteLog("ChkValue:" + m.ChkValue); using (var client = new WebClient()) { var values = new NameValueCollection(); values.Add("Version", m.Version); values.Add("CmdId", m.CmdId); values.Add("OrdId", m.OrdId); values.Add("OutCustId", m.OutCustId); values.Add("OutAcctId", m.OutAcctId); values.Add("TransAmt", m.TransAmt); values.Add("InCustId", m.InCustId); values.Add("InAcctId", m.InAcctId); values.Add("RetUrl", m.RetUrl); values.Add("BgRetUrl", m.BgRetUrl); values.Add("MerPriv", m.MerPriv); values.Add("ChkValue", m.ChkValue); string url = Utils.GetChinapnrUrl(); //同步发送form表单请求 byte[] result = client.UploadValues(url, "POST", values); var retStr = Encoding.UTF8.GetString(result); // Response.Write(retStr); LogInfo.WriteLog("自动扣款转账(商户用)返回报文" + retStr); ReTransfer reg = new ReTransfer(); var retloan = (ReTransfer)FastJSON.ToObject(retStr, reg); StringBuilder builder = new StringBuilder(); builder.Append(retloan.CmdId); builder.Append(retloan.RespCode); builder.Append(retloan.OrdId); builder.Append(retloan.OutCustId); builder.Append(retloan.OutAcctId); builder.Append(retloan.TransAmt); builder.Append(retloan.InCustId); builder.Append(retloan.InAcctId); builder.Append(retloan.RetUrl); builder.Append(retloan.BgRetUrl); builder.Append(retloan.MerPriv); var msg = builder.ToString(); LogInfo.WriteLog("返回参数:" + msg); //验签 string pgPubkFile = AppDomain.CurrentDomain.BaseDirectory + Utils.GetPgPubk(); int ret = DllInterop.VeriSignMsg(pgPubkFile, msg, msg.Length, retloan.ChkValue); LogInfo.WriteLog("验签ret:" + ret.ToString()); if (ret == 0) { return(retloan); } } return(null); }
/// <summary> /// 根据用户客户号获取用户资金信息 ---待重构 /// </summary> /// <param name="UsrCustId">用户汇付客户号</param> /// <returns>ReQueryBalanceBg 汇付帐户余额实体对象</returns> public static ReQueryBalanceBg QueryBalance(string usrCustId) { if (usrCustId != null && usrCustId.Length > 0) { string strLog = ""; M_QueryBalanceBg m = new M_QueryBalanceBg(); m.Version = "10"; m.CmdId = "QueryBalanceBg"; m.MerCustId = Utils.GetMerCustID(); m.UsrCustId = usrCustId; StringBuilder chkVal = new StringBuilder(); chkVal.Append(m.Version); chkVal.Append(m.CmdId); chkVal.Append(m.MerCustId); chkVal.Append(m.UsrCustId); string chkv = chkVal.ToString(); strLog = "后台余额同步:加签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); strLog += ";加签字符:" + str.ToString(); m.ChkValue = sbChkValue.ToString(); strLog += ";提交信息:" + FastJSON.toJOSN(m); strLog += ";ChkValue:" + m.ChkValue; using (var client = new WebClient()) { var values = new NameValueCollection(); values.Add("Version", m.Version); values.Add("CmdId", m.CmdId); values.Add("MerCustId", m.MerCustId); values.Add("UsrCustId", m.UsrCustId); values.Add("ChkValue", m.ChkValue); string url = Utils.GetChinapnrUrl(); //同步发送form表单请求 byte[] result = client.UploadValues(url, "POST", values); var retStr = Encoding.UTF8.GetString(result); // Response.Write(retStr); LogInfo.WriteLog(retStr); ReQueryBalanceBg reg = new ReQueryBalanceBg(); var retloan = (ReQueryBalanceBg)FastJSON.ToObject(retStr, reg); StringBuilder builder = new StringBuilder(); builder.Append(retloan.CmdId); builder.Append(retloan.RespCode); //builder.Append(retloan.RespDesc); builder.Append(retloan.MerCustId); builder.Append(retloan.UsrCustId); builder.Append(retloan.AvlBal); builder.Append(retloan.AcctBal); builder.Append(retloan.FrzBal); // builder.Append(retloan.ChkValue); var msg = builder.ToString(); strLog += ";返回参数:" + msg; //验签 string pgPubkFile = AppDomain.CurrentDomain.BaseDirectory + Utils.GetPgPubk(); int ret = DllInterop.VeriSignMsg(pgPubkFile, msg, msg.Length, retloan.ChkValue); strLog += ";验签ret:" + ret.ToString(); LogInfo.WriteLog(strLog); if (ret == 0) { return(retloan); } } } return(null); }
//TODO 3.0接口还款 public static ReRepayment Repayment3(M_Repayment mr) { mr.Version = "30"; mr.CmdId = "Repayment"; mr.MerCustId = Utils.GetMerCustID(); mr.BgRetUrl = Utils.GetRe_url("admin/Thirdparty/Su_Repayment"); StringBuilder chkVal = new StringBuilder(); chkVal.Append(mr.Version); chkVal.Append(mr.CmdId); chkVal.Append(mr.MerCustId); chkVal.Append(mr.ProId); chkVal.Append(mr.OrdId); chkVal.Append(mr.OrdDate); chkVal.Append(mr.OutCustId); chkVal.Append(mr.SubOrdId); chkVal.Append(mr.SubOrdDate); chkVal.Append(mr.OutAcctId); //chkVal.Append(mr.TransAmt); chkVal.Append(mr.PrincipalAmt); chkVal.Append(mr.InterestAmt); chkVal.Append(mr.Fee); chkVal.Append(mr.InCustId); chkVal.Append(mr.InAcctId); chkVal.Append(mr.DivDetails); chkVal.Append(mr.FeeObjFlag); chkVal.Append(mr.DzObject); chkVal.Append(mr.BgRetUrl); chkVal.Append(mr.MerPriv); chkVal.Append(mr.ReqExt); string chkv = Utils.MD5(chkVal.ToString()); LogInfo.WriteLog("还款:" + 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); LogInfo.WriteLog(str.ToString()); mr.ChkValue = sbChkValue.ToString(); LogInfo.WriteLog("还款提交信息:" + FastJSON.toJOSN(mr)); LogInfo.WriteLog("还款ChkValue:" + mr.ChkValue); using (var client = new WebClient()) { var values = new NameValueCollection(); values.Add("Version", mr.Version); values.Add("CmdId", mr.CmdId); values.Add("MerCustId", mr.MerCustId); values.Add("ProId", mr.ProId); values.Add("OrdId", mr.OrdId); values.Add("OrdDate", mr.OrdDate); values.Add("OutCustId", mr.OutCustId); values.Add("SubOrdId", mr.SubOrdId); values.Add("SubOrdDate", mr.SubOrdDate); values.Add("OutAcctId", mr.OutAcctId); //values.Add("TransAmt", MR.TransAmt); values.Add("PrincipalAmt", mr.PrincipalAmt); values.Add("InterestAmt", mr.InterestAmt); values.Add("Fee", mr.Fee); values.Add("InCustId", mr.InCustId); values.Add("InAcctId", mr.InAcctId); values.Add("DivDetails", mr.DivDetails); values.Add("FeeObjFlag", mr.FeeObjFlag); values.Add("DzObject", mr.DzObject); values.Add("BgRetUrl", mr.BgRetUrl); values.Add("MerPriv", mr.MerPriv); values.Add("ReqExt", mr.ReqExt); values.Add("ChkValue", mr.ChkValue); string url = Utils.GetChinapnrUrl(); //同步发送form表单请求 var _result = client.UploadValues(url, "POST", values); var retStr = Encoding.UTF8.GetString(_result); LogInfo.WriteLog("还款同步form表单请求" + retStr); ReRepayment Rere = new ReRepayment(); var re = (ReRepayment)FastJSON.ToObject(retStr, Rere); LogInfo.WriteLog("还款返回报文:" + FastJSON.toJOSN(re)); StringBuilder builder = new StringBuilder(); builder.Append(re.CmdId); builder.Append(re.RespCode); builder.Append(re.MerCustId); builder.Append(re.ProId); builder.Append(re.OrdId); builder.Append(re.OrdDate); builder.Append(re.OutCustId); builder.Append(re.SubOrdId); builder.Append(re.SubOrdDate); builder.Append(re.OutAcctId); builder.Append(re.PrincipalAmt); builder.Append(re.InterestAmt); //builder.Append(Re.TransAmt); builder.Append(re.Fee); builder.Append(re.InCustId); builder.Append(re.InAcctId); builder.Append(re.FeeObjFlag); builder.Append(re.DzObject); builder.Append(HttpUtility.UrlDecode(re.BgRetUrl)); builder.Append(HttpUtility.UrlDecode(re.MerPriv)); builder.Append(HttpUtility.UrlDecode(re.RespExt)); // builder.Append(Re.ChkValue); var msg = Utils.MD5(builder.ToString()); re.TransAmt = re.PrincipalAmt + re.InterestAmt; 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) { return(re); } } return(null); }