public ActionResult RechargeSubmit(RequestParam <RequestRecharge> reqst) { LoggerHelper.Info(JsonHelper.Entity2Json(reqst)); MemberLogic mLogic = new MemberLogic(); StringBuilder str = new StringBuilder(); string blankName = reqst.body.bankType; int userid = reqst.body.userId; var p = mLogic.SelectMemberByUserId(reqst.body.userId); if (p.UsrCustId.Length <= 0) { RequestParam <RequestValidate> vldParam = new RequestParam <RequestValidate>(); RequestValidate rv = new RequestValidate(); rv.userId = reqst.body.userId.ToString(); vldParam.body = rv; return(RedirectToAction("RequestRealName", "Index", new { area = "UserAuthentication", userId = reqst.body.userId.ToString() }));//未实名,跳转至实名接口 } #region 提现审核时,如果出现没有快捷卡时,禁止提现,防止用户绑定快捷卡 string openAcctIds = string.Empty; var userCardList = mLogic.SelectUserBankList(userid); var quickList = new List <MemberBankEntity>(); if (userCardList == null) { userCardList = new List <MemberBankEntity>(); } if (userCardList != null) { quickList = userCardList.Where(d => d.BindCardType == 1).ToList(); } if (quickList == null || quickList.Count == 0) //用户没有快捷卡时,有提现审核都拒绝 { foreach (var item in userCardList) { if (openAcctIds == string.Empty) { openAcctIds += "'" + item.OpenAcctId + "'"; } else { openAcctIds += "," + "'" + item.OpenAcctId + "'"; } } //if (string.IsNullOrWhiteSpace(openAcctIds)) //{ // LoggerHelper.Info("充值请求失败!未绑定银行卡,暂不能进行此操作!" + JsonHelper.Entity2Json(reqst)); // return Content("充值请求失败!未绑定银行卡,暂不能进行此操作!"); //} try { if (!string.IsNullOrWhiteSpace(openAcctIds)) { bool isExist = mLogic.SelectVUserCashBank(openAcctIds, 0); if (isExist) { LoggerHelper.Info("充值失败,提现审核中,暂不能进行其他操作" + JsonHelper.Entity2Json(reqst)); return(Content("充值审核中,暂不能进行其他操作!")); } } } catch { LoggerHelper.Error("充值数据出现异常,提现审核中,暂不能进行其他操作。SelectVUserCashBank,openAcctIds=" + openAcctIds + "===>" + JsonHelper.Entity2Json(reqst)); } } #endregion string UsrCustId = p.UsrCustId; //这个是给用户充值 在充值前得保证商户余额足够 decimal amt = reqst.body.amountOfCharge; M_QPNetSave qp = new M_QPNetSave(); M_Recharge_history rh = new M_Recharge_history(); rh.membertable_registerid = reqst.body.userId; rh.recharge_amount = Math.Round(amt, 2); rh.recharge_time = DateTime.Now; rh.account_amount = amt; rh.order_No = Settings.Instance.OrderCode; rh.recharge_condition = 0; //1表示充值成功 rh.recharge_bank = blankName; // 得接口返回; string CmdId = "NetSave"; string MerCustId = Settings.Instance.MerCustId; var ckd = Settings.Instance.SiteDomain; RechargeHistoryLogic hLogic = new RechargeHistoryLogic(); int Recid = hLogic.Add(rh); if (Recid > 0) { string MerPriv = EncryptHelper.Encrypt(reqst.body.userId + "_" + Recid, Settings.Instance.WebPass); qp.Version = "10"; qp.CmdId = CmdId; qp.MerCustId = MerCustId; qp.UsrCustId = UsrCustId; qp.OrdId = rh.order_No; qp.OrdDate = rh.recharge_time.ToString("yyyyMMdd"); qp.GateBusiId = "QP"; //快捷支付 qp.OpenBankId = blankName; qp.DcFlag = "D"; qp.TransAmt = amt.ToString("0.00"); qp.RetUrl = Settings.Instance.GetCallbackUrl("/Recharge/Index/SuQPNetSave"); qp.BgRetUrl = Settings.Instance.GetCallbackUrl("/Recharge/Index/ReQPNetSave"); qp.MerPriv = MerPriv; StringBuilder chkVal = new StringBuilder(); chkVal.Append(qp.Version); chkVal.Append(qp.CmdId); chkVal.Append(qp.MerCustId); chkVal.Append(qp.UsrCustId); chkVal.Append(qp.OrdId); chkVal.Append(qp.OrdDate); chkVal.Append(qp.GateBusiId); chkVal.Append(qp.OpenBankId); chkVal.Append(qp.DcFlag); chkVal.Append(qp.TransAmt); chkVal.Append(qp.RetUrl); chkVal.Append(qp.BgRetUrl); chkVal.Append(qp.OpenAcctId); // chkVal.Append(qp.CertId); chkVal.Append(qp.MerPriv); string chkv = chkVal.ToString(); //私钥文件的位置(这里是放在了站点的根目录下) string merKeyFile = AppDomain.CurrentDomain.BaseDirectory + Settings.Instance.MerPr; //需要指定提交字符串的长度 int len = Encoding.UTF8.GetBytes(chkv).Length; StringBuilder sbChkValue = new StringBuilder(256); //加签 int str1 = DllInterop.SignMsg(Settings.Instance.MerId, merKeyFile, chkv, len, sbChkValue); qp.ChkValue = sbChkValue.ToString(); str.Append(" <form id=\"formauto\" name=\"formauto\" action=\"" + Settings.Instance.ChinapnrUrl + "\" method=\"post\">"); str.Append("<input id=\"Version\" name=\"Version\" type=\"hidden\" value=\"" + qp.Version + "\" />"); str.Append("<input id=\"CmdId\" name=\"CmdId\" type=\"hidden\" value=\"" + qp.CmdId + "\" />"); str.Append("<input id=\"MerCustId\" name=\"MerCustId\" type=\"hidden\" value=\"" + qp.MerCustId + "\" />"); str.Append("<input id=\"UsrCustId\" name=\"UsrCustId\" type=\"hidden\" value=\"" + qp.UsrCustId + "\" />"); str.Append("<input id=\"OrdId\" name=\"OrdId\" type=\"hidden\" value=\"" + qp.OrdId + "\" />"); str.Append("<input id=\"OrdDate\" name=\"OrdDate\" type=\"hidden\" value=\"" + qp.OrdDate + "\" />"); str.Append("<input id=\"GateBusiId\" name=\"GateBusiId\" type=\"hidden\" value=\"" + qp.GateBusiId + "\" />"); str.Append("<input id=\"OpenBankId\" name=\"OpenBankId\" type=\"hidden\" value=\"" + qp.OpenBankId + "\" />"); str.Append("<input id=\"DcFlag\" name=\"DcFlag\" type=\"hidden\" value=\"" + qp.DcFlag + "\" />"); str.Append("<input id=\"TransAmt\" name=\"TransAmt\" type=\"hidden\" value=\"" + qp.TransAmt + "\" />"); str.Append("<input id=\"RetUrl\" name=\"RetUrl\" type=\"hidden\" value=\"" + qp.RetUrl + "\" />"); str.Append("<input id=\"BgRetUrl\" name=\"BgRetUrl\" type=\"hidden\" value=\"" + qp.BgRetUrl + "\" />"); // str.Append("<input id=\"CertId\" name=\"CertId\" type=\"hidden\" value=\"" + qp.CertId + "\" />"); str.Append("<input id=\"MerPriv\" name=\"MerPriv\" type=\"hidden\" value=\"" + qp.MerPriv + "\" />"); str.Append("<input id=\"ChkValue\" name=\"ChkValue\" type=\"hidden\" value=\"" + qp.ChkValue + "\" />"); str.Append(" </form>"); str.Append("<script type=\"text/javascript\">document.getElementById('formauto').submit();</script>"); LoggerHelper.Info("快捷充值提交表单:" + str.ToString()); } ViewBag.str = str.ToString(); return(View()); }
/// <summary> /// 充值 /// </summary> /// <param name="p">用户信息实体</param> /// <param name="rh">充值记录信息</param> /// <param name="blankName">充值银行 CMB CCB 等等</param> /// <param name="recid">充值记录信息ID</param> /// <param name="isQP">是否是快捷支付</param> /// <returns></returns> public static M_QPNetSave NetSave(M_member_table p, M_Recharge_history rh, string blankName = "CMB", int recid = 0, bool isQP = false) { M_QPNetSave m = new M_QPNetSave(); string MerPriv = DESEncrypt.Encrypt(p.registerid.ToString() + "_" + recid.ToString(), ConfigurationManager.AppSettings["webp"].ToString()); string cmdId = "NetSave"; string merCustId = Utils.GetMerCustID(); m.Version = "10"; m.CmdId = cmdId; m.MerCustId = merCustId; m.UsrCustId = p.UsrCustId; m.OrdId = rh.order_No; m.OrdDate = rh.recharge_time.ToString("yyyyMMdd"); if (isQP == false) { if (p.UsrCustId == Utils.GetDanbaoCustID()) { m.GateBusiId = "B2B"; //企业网银 } else { m.GateBusiId = "B2C"; } } else { m.GateBusiId = "QP"; //快捷支付 } m.OpenBankId = blankName; m.DcFlag = "D"; m.TransAmt = rh.account_amount.ToString(); m.RetUrl = Utils.GetRe_url("usercenter/SuQPNetSave"); m.BgRetUrl = Utils.GetRe_url("Thirdparty/ReQPNetSave"); m.MerPriv = MerPriv; StringBuilder chkVal = new StringBuilder(); chkVal.Append(m.Version); chkVal.Append(m.CmdId); chkVal.Append(m.MerCustId); chkVal.Append(m.UsrCustId); chkVal.Append(m.OrdId); chkVal.Append(m.OrdDate); chkVal.Append(m.GateBusiId); chkVal.Append(m.OpenBankId); chkVal.Append(m.DcFlag); chkVal.Append(m.TransAmt); chkVal.Append(m.RetUrl); chkVal.Append(m.BgRetUrl); chkVal.Append(m.OpenAcctId); chkVal.Append(m.MerPriv); string chkv = chkVal.ToString(); //私钥文件的位置(这里是放在了站点的根目录下) string merKeyFile = AppDomain.CurrentDomain.BaseDirectory + Utils.GetMerPr(); //需要指定提交字符串的长度 int len = Encoding.UTF8.GetBytes(chkv).Length; StringBuilder sbChkValue = new StringBuilder(256); //加签 int ret = DllInterop.SignMsg(Utils.GetMerId(), merKeyFile, chkv, len, sbChkValue); m.ChkValue = sbChkValue.ToString(); LogInfo.WriteLog("加签字符:" + ret.ToString() + "投标chkv字符:" + chkv); LogInfo.WriteLog("投标提交表单报文:" + FastJSON.toJOSN(m)); return(m); }