コード例 #1
0
ファイル: RechargeController.cs プロジェクト: DarkMoon4CN/CLT
        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());
        }
コード例 #2
0
ファイル: WebActivityPlan.cs プロジェクト: mkbiltek2019/CLT
        /// <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.));
                    }
                }
            }
        }
コード例 #3
0
ファイル: Transfer.cs プロジェクト: mkbiltek2019/CLT
        /// <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);
        }
コード例 #4
0
        /// <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));
        }
コード例 #5
0
ファイル: UserCashController.cs プロジェクト: DarkMoon4CN/CLT
        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"));
        }
コード例 #6
0
        /// <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);
        }
コード例 #7
0
ファイル: UserInfoData.cs プロジェクト: mkbiltek2019/CLT
        /// <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);
        }
コード例 #8
0
        /// <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);
        }
コード例 #9
0
 /// <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);
 }
コード例 #10
0
        //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);
        }