示例#1
0
        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());
        }
示例#2
0
        /// <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);
        }