/// <summary>
        /// 根据默认参数输入参数获取结果
        /// </summary>
        /// <param name="def"></param>
        /// <param name="entry"></param>
        /// <returns></returns>
        public static OutputParametes GetInputParametes(DefaultParametes def, EntryParametes entry)
        {
            string          url        = HttpRequestTool.GetUrl(def, entry);
            string          responsStr = HttpRequestTool.CreateHttpRequest(url);
            OutputParametes inp        = HttpRequestTool.GetOutputParametes(responsStr);

            return(inp);
        }
 public ActionResult Step3()
 {
     try
     {
         LogHelper.WriteInfo("Step3");
         string imgUrl   = string.Empty;
         string authCode = string.Empty;
         string phone    = Session["Phone"].ToString();
         if (Session["AuthCode"] != null)
         {
             authCode = Session["AuthCode"].ToString();
         }
         else if (HttpContext.Request.Form["txtAuthCode"] != null && HttpContext.Request.Form["txtAuthCode"] != "")
         {
             authCode = HttpContext.Request.Form["txtAuthCode"];
         }
         else
         {
             Step2();
         }
         DefaultParametes def   = HttpRequestTool.GetDefaultParametes(1, 4);
         EntryParametes   entry = new EntryParametes()
         {
             authCode = authCode,
             phone    = phone
         };
         OutputParametes   inp        = HttpRequestTool.GetInputParametes(def, entry);
         HttpRequestResult httpResult = HttpRequestTool.CheckInputParametes(inp, 3);
         if (httpResult.state == 0)         //成功
         {
             return(View("Success"));
         }
         else if (httpResult.state == 1)   //下一步
         {
             Session.Add("AuthCode", authCode);
             return(View("Step4"));
         }
         else                             //异常
         {
             ViewBag.Message = httpResult.context;
             return(View("Step3"));
         }
     }
     catch (Exception e)
     {
         LogHelper.WriteError(e.Message, e);
         return(View("Step3"));
     }
 }
        public ActionResult Step4()
        {
            try
            {
                LogHelper.WriteInfo("Step4");
                string imgUrl      = string.Empty;
                string smsCode     = HttpContext.Request.Form["txtSMSCode"];
                object authCodeObj = Session["AuthCode"];
                string authCode    = authCodeObj != null?authCodeObj.ToString() : "";

                if (smsCode == null || smsCode == "")
                {
                    Step3();
                    return(View("Step4"));
                }

                string           phone = Session["Phone"].ToString();
                DefaultParametes def   = HttpRequestTool.GetDefaultParametes(1, 5);
                EntryParametes   entry = new EntryParametes()
                {
                    smsCode  = smsCode,
                    authCode = authCode,
                    phone    = phone
                };
                OutputParametes   inp        = HttpRequestTool.GetInputParametes(def, entry);
                HttpRequestResult httpResult = HttpRequestTool.CheckInputParametes(inp, 4);
                if (httpResult.state == 0)        //成功
                {
                    return(View("Success"));
                }
                else                              //异常
                {
                    ViewBag.Message = httpResult.context;
                    return(View("Step4"));
                }
            }
            catch (Exception e)
            {
                LogHelper.WriteError(e.Message, e);
                return(View("Step4"));
            }
        }
 public ActionResult Step1()
 {
     try
     {
         LogHelper.WriteInfo("Step1");
         string phone = HttpContext.Request["txtPhone"];
         if (phone == null) //第二步返回
         {
             phone = Session["Phone"].ToString();
         }
         string           imgUrl = string.Empty;
         DefaultParametes def    = HttpRequestTool.GetDefaultParametes(1, 1);
         EntryParametes   entry  = new EntryParametes()
         {
             index = "1",
             phone = phone
         };
         OutputParametes   inp        = HttpRequestTool.GetInputParametes(def, entry);
         HttpRequestResult httpResult = HttpRequestTool.CheckInputParametes(inp);
         if (httpResult.state == 0)          //成功
         {
             return(View("Success"));
         }
         else if (httpResult.state == 1)     //失败
         {
             imgUrl = HttpRequestTool.CreateHttpRequest(httpResult.context, 2);
             Session.Add("Phone", phone);
             return(View("Step2", (object)imgUrl));
         }
         else                                //异常
         {
             ViewBag.Message = httpResult.context;
             return(View("Index"));
         }
     }
     catch (Exception e)
     {
         LogHelper.WriteError(e.Message, e);
         return(View("Index"));
     }
 }
 /// <summary>
 /// 获取手机账单信息
 /// </summary>
 /// <param name="phone">手机号</param>
 /// <returns></returns>
 public string GetMobileBill(string phone)
 {
     try
     {
         LogHelper.WriteInfo("GetMobileBill");
         DefaultParametes def   = HttpRequestTool.GetDefaultParametes(1, 6);
         EntryParametes   entry = new EntryParametes();
         entry.loginName = phone;
         string          url        = HttpRequestTool.GetUrl(def, entry);
         string          responsStr = HttpRequestTool.CreateHttpRequest(url);
         OutputParametes inp        = HttpRequestTool.GetOutputParametes(responsStr);
         if (inp != null && inp.phoneList != null && inp.phoneList.Count > 0)
         {
             _baseDAL.SavePhoneList(inp.phoneList[0]);
         }
         return(responsStr);
     }
     catch (Exception e)
     {
         LogHelper.WriteError(e.Message, e);
         return("");
     }
 }
 public ActionResult Step2()
 {
     try
     {
         LogHelper.WriteInfo("Step2");
         string imgUrl   = string.Empty;
         string password = string.Empty;
         string phone    = Session["Phone"].ToString();
         string authCode = HttpContext.Request.Form["txtAuthCode"];
         if (Session["Password"] != null)   //如Session不为空 则为第三步返回
         {
             password = Session["Password"].ToString();
         }
         else if (HttpContext.Request.Form["txtPassword"] != null && HttpContext.Request.Form["txtPassword"] != "") //第二步正常点击下一步
         {
             password = HttpContext.Request.Form["txtPassword"];
         }
         else  //第二步重新获取验证码
         {
             Step1();
             return(View("Step2"));
         }
         DefaultParametes def   = HttpRequestTool.GetDefaultParametes(1, 2);
         EntryParametes   entry = new EntryParametes()
         {
             password = password,
             authCode = authCode,
             phone    = phone
         };
         OutputParametes   inp        = HttpRequestTool.GetInputParametes(def, entry);
         HttpRequestResult httpResult = HttpRequestTool.CheckInputParametes(inp, 2);
         if (httpResult.state == 0)            //成功
         {
             return(View("Success"));
         }
         else if (httpResult.state == 2)      //需图片验证码
         {
             def   = HttpRequestTool.GetDefaultParametes(1, 3);
             entry = new EntryParametes()
             {
                 index = "3",
                 phone = phone
             };
             inp        = HttpRequestTool.GetInputParametes(def, entry);
             httpResult = HttpRequestTool.CheckInputParametes(inp);
             if (httpResult.state == 1)     //下一步
             {
                 Session.Add("Password", password);
                 Session.Add("AuthCode", authCode);
                 imgUrl = HttpRequestTool.CreateHttpRequest(httpResult.context, 2);
                 return(View("Step3", (object)imgUrl));
             }
             else                           //异常
             {
                 ViewBag.Message = httpResult.context;
                 return(View("Step2"));
             }
         }
         else if (httpResult.state == 3)  //需短信验证码
         {
             Session.Add("AuthCode", authCode);
             return(View("Step4"));
         }
         else                           //异常
         {
             ViewBag.Message = httpResult.context;
             return(View("Step2"));
         }
     }
     catch (Exception e)
     {
         LogHelper.WriteError(e.Message, e);
         return(View("Step2"));
     }
 }
        /// <summary>
        /// 判断输出结果并返回状态(0、成功1、下一步2、需图片验证码3、需短信验证码)
        ///(1)当errorcode!=0表示错误,不再进行后面的判断,错误代码参考接口请求错误码;
        ///(2)当errorcode=0表示正确:
        ///      a,当success=false,表示响应失败
        ///      b,当success=true,表示响应成功
        ///      i,当status!=1,表示失败,errorMsg表示错误消息,imgUrl不为空,显示验证码地址,
        ///         如果为空,则需要重新执行第一步获取验证码地址
        ///      ii,当status=1,表示成功,
        ///  1. 当result=true时,表示没有下一步,此步登陆成功。
        ///  2. 当result=false时,表示还有下一步(比如动态密码或者图片验证码,
        ///     例如上海电信需要二次图片验证码)
        ///	     <1>.当imgUrl="getImg", 则执行第(3)步获取图片验证码
        ///      <2>. 当imgUrl!="getImg", 执行第(4)步发送动态口令
        /// </summary>
        /// <param name="inp">输出参数</param>
        /// <param name="step">当前步骤</param>
        /// <returns></returns>
        public static HttpRequestResult CheckInputParametes(OutputParametes inp, int step = 1)
        {
            HttpRequestResult result = new HttpRequestResult();

            result.state = -1;
            if (inp.errorCode == "0")
            {
                if (inp.success == "True")
                {
                    if (inp.result == "True" && step == 2)
                    {
                        result.state = 0;
                        return(result);
                    }
                    if (inp.status == "1")
                    {
                        if (step == 1 || step == 3)
                        {
                            result.state   = 1;
                            result.context = inp.imgUrl;
                        }
                        else if (step == 2)
                        {
                            if (inp.imgUrl == "getImg")
                            {
                                result.state = 2;
                            }
                            else
                            {
                                result.state = 3;
                            }
                        }
                        else
                        {
                            if (inp.imgUrl == "")
                            {
                                result.state = 0;
                            }
                            else
                            {
                                result.state   = 1;
                                result.context = inp.imgUrl;
                            }
                        }
                    }
                    else
                    {
                        result.state   = -1;
                        result.context = inp.errorMsg;
                    }
                }
                else
                {
                    result.state   = -1;
                    result.context = inp.errorMsg;
                }
            }
            else
            {
                result.state = -1;
                switch (inp.errorCode)
                {
                    #region 系统级错误
                case "10001":
                    result.context = "appId为空";
                    break;

                case "10002":
                    result.context = "timeunit为空";
                    break;

                case "10003":
                    result.context = "timeunit过期";
                    break;

                case "10004":
                    result.context = "timeunit属于未来时间,无效";
                    break;

                case "10005":
                    result.context = "token生成错误";
                    break;

                case "10006":
                    result.context = "appId对应的appkey不存在";
                    break;

                case "10007":
                    result.context = "该接口不存在或其他访问异常";
                    break;

                case "10008":
                    result.context = "userId为空";
                    break;

                case "10009":
                    result.context = "userId不正确";
                    break;

                case "10010":
                    result.context = "页面过期,请刷新页面重试";
                    break;

                case "10011":
                    result.context = "userId长度超过45个字符";
                    break;
                    #endregion

                    #region 用户级错误
                case "20004":
                    result.context = "手机号码为空";
                    break;

                case "20006":
                    result.context = "手机服务密码为空";
                    break;

                case "20007":
                    result.context = "手机号码位数不正确";
                    break;

                case "20008":
                    result.context = "手机号码格式不正确";
                    break;
                    #endregion

                default:
                    break;
                }
            }
            return(result);
        }