Beispiel #1
0
        public FpdkHttpResult firstLogin(
            String ym,
            String ymbb,
            String clientHello,
            String password,
            int retryTimes)
        {
            Dictionary <String, String> para = new Dictionary <string, string>();

            para.Add("type", "CLIENT-HELLO");
            para.Add("clientHello", clientHello);
            para.Add("ymbb", ymbb);
            FpdkHttpResult fpdkHttpResult = null;

            try
            {
                fpdkHttpResult = RestClient.postJSONPCallback <FpdkHttpResult>(ym + "/SbsqWW/login.do", para);
            }
            catch (Exception e)
            {
                log.Error(e.Message, e);
                if (retryTimes >= 1)
                {
                    throw new Exception("调用服务器接口失败");
                }
                retryTimes++;
                return(firstLogin(ym, ymbb, clientHello, password, retryTimes));
            }

            if (fpdkHttpResult.key1.Equals("01"))
            {
                return(fpdkHttpResult);
            }
            else
            {
                if (retryTimes >= 1)
                {
                    throw new Exception("调用服务器接口失败");
                }
                retryTimes++;
                return(firstLogin(ym, ymbb, clientHello, password, retryTimes));
            }
        }
Beispiel #2
0
        public TaskSocketMessage getTocken(
            String ym,
            String ymbb,
            String sh,
            String password,
            String rwId,
            String ptPassword)
        {
            log.Info(String.Format("ym:{0};ymbb:{1}", ym, ymbb));
            TaskSocketMessage return_tsm = new TaskSocketMessage();

            return_tsm.type = TaskHandle.POST_TOKEN;
            return_tsm.parameters["rwid"] = rwId;

            if (ymbb == null || ymbb == "")
            {
                ymbb = "3.0.09";
            }
            String oxcSh = null;

            try
            {
                oxcSh = WebOcxAccess.openAndGetCert(password);
            }
            catch (Exception e)
            {
                log.Error(e.Message, e);
                return_tsm.parameters["code"] = CODE_OCX_ERROR;
                return_tsm.parameters["msg"]  = "控件不可用";
                return(return_tsm);
            }

            if (sh != null && !oxcSh.Equals(sh))
            {
                return_tsm.parameters["code"] = CODE_SH_ERROR;
                return_tsm.parameters["msg"]  = "税号不一致!,当前税号:" + oxcSh;
                return(return_tsm);
            }
            if (sh == null)
            {
                sh = oxcSh;
            }
            return_tsm.parameters["sh"] = sh;

            String clientHello = WebOcxAccess.clientHello();
            //String clientHello = "306E0201033055310B300906035504061302636E310D300B060355040B1E0400430041310D300B06035504081E0453174EAC3119301706035504031E104E2D56FD7A0E52A18BA48BC14E2D5FC3310D300B06035504071E0453174EAC02070201000001A087A209310702010102020402";//;= WebOcxAccess.clientHello();
            FpdkHttpResult fpdkHttpResult = null;

            try
            {
                fpdkHttpResult = firstLogin(ym, ymbb, clientHello, password, 0);
            }
            catch (Exception e)
            {
                log.Error(e.Message, e);
                return_tsm.parameters["code"] = CODE_SERVER_ERROR;
                return_tsm.parameters["msg"]  = "调用服务器失败!";
                return(return_tsm);
            }

            if (!fpdkHttpResult.key1.Equals("01"))
            {
                return_tsm.parameters["code"] = CODE_SERVER_ERROR;
                return_tsm.parameters["msg"]  = "调用服务器失败!";
                return(return_tsm);
            }

            string serverPacket = fpdkHttpResult.key2;
            string serverRandom = fpdkHttpResult.key3;

            string clientAuthCode = WebOcxAccess.ClientAuth(serverPacket);

            try
            {
                fpdkHttpResult = secondLogin(ym, ymbb, clientAuthCode, serverRandom, sh, 0, false, ptPassword);
            }
            catch (Exception e)
            {
                log.Error(e.Message, e);
                return_tsm.parameters["code"] = CODE_SERVER_ERROR;

                return_tsm.parameters["msg"] = "调用服务器失败!";
                return(return_tsm);
            }
            log.Info(String.Format("key1:{0};key2:{1}", fpdkHttpResult.key1, fpdkHttpResult.key2));
            if (fpdkHttpResult.key1.Equals("01") || fpdkHttpResult.key1.Equals("03"))
            {
                return_tsm.parameters["code"]  = CODE_SUCCESS;
                return_tsm.parameters["msg"]   = "调用服务器成功!";
                return_tsm.parameters["token"] = fpdkHttpResult.key2;
                return(return_tsm);
            }
            else if (fpdkHttpResult.key1.Equals("02"))
            {
                return_tsm.parameters["code"]  = "904-02";
                return_tsm.parameters["msg"]   = "档案信息不存在";
                return_tsm.parameters["token"] = fpdkHttpResult.key2;
                return(return_tsm);
            }
            else if (fpdkHttpResult.key1.Equals("04"))
            {
                return_tsm.parameters["code"] = "904-04";
                return_tsm.parameters["msg"]  = "平台密码不正确";
                errorPassword = true;
                return(return_tsm);
            }
            else if (fpdkHttpResult.key1.Equals("05"))
            {
                return_tsm.parameters["code"] = "904-05";
                return_tsm.parameters["msg"]  = "平台密码错误次数超过十次,请联系税务机关解锁或明天再试";
                errorPassword = true;
                return(return_tsm);
            }
            else if (fpdkHttpResult.key1.Equals("08"))
            {
                return_tsm.parameters["code"] = "904-08";
                return_tsm.parameters["msg"]  = "需要平台密码";
                errorPassword = true;
                return(return_tsm);
            }
            else if (fpdkHttpResult.key1.Equals("12"))
            {
                return_tsm.parameters["code"] = "904-12";
                return_tsm.parameters["msg"]  = "信用等级未设置";
                return(return_tsm);
            }
            else if (fpdkHttpResult.key1.Equals("13"))
            {
                return_tsm.parameters["code"] = "904-13";
                return_tsm.parameters["msg"]  = "特定企业,不能使用平台";
                return(return_tsm);
            }
            else if (fpdkHttpResult.key1.Equals("21"))
            {
                return_tsm.parameters["code"] = "904-21";
                return_tsm.parameters["msg"]  = "未启用,无权登录此平台";
                return(return_tsm);
            }
            else
            {
                return_tsm.parameters["code"] = CODE_SERVER_ERROR;
                return_tsm.parameters["msg"]  = "调用服务器失败!";
                return(return_tsm);
            }
        }
Beispiel #3
0
        public FpdkHttpResult secondLogin(
            String ym,
            String ymbb,
            String clientAuthCode,
            String serverRandom,
            String sh,
            int retryTimes,
            bool withPtPassword,
            String ptPassword)
        {
            Dictionary <String, String> para = new Dictionary <string, string>();

            para.Add("type", "CLIENT-AUTH");
            para.Add("clientAuthCode", clientAuthCode);
            para.Add("serverRandom", serverRandom);
            if (withPtPassword)
            {
                para.Add("password", ptPassword);
            }
            para.Add("ymbb", ymbb);
            para.Add("cert", sh);
            FpdkHttpResult fpdkHttpResult = null;

            try
            {
                fpdkHttpResult = RestClient.postJSONPCallback <FpdkHttpResult>(ym + "/SbsqWW/login.do", para);
            }
            catch (Exception e)
            {
                log.Error(e.Message, e);
                if (retryTimes >= 1)
                {
                    throw new Exception("调用服务器接口失败");
                }
                retryTimes++;
                return(secondLogin(ym, ymbb, clientAuthCode, serverRandom, sh, retryTimes, withPtPassword, ptPassword));
            }


            if (fpdkHttpResult.key1.Equals("01") ||
                fpdkHttpResult.key1.Equals("02") ||
                fpdkHttpResult.key1.Equals("03") ||
                fpdkHttpResult.key1.Equals("04") ||
                fpdkHttpResult.key1.Equals("05") ||
                fpdkHttpResult.key1.Equals("12") ||
                fpdkHttpResult.key1.Equals("13") ||
                fpdkHttpResult.key1.Equals("21")
                )
            {
                return(fpdkHttpResult);
            }
            else if (fpdkHttpResult.key1.Equals("08"))//错误码是08,使用平台密码再次登录
            {
                if (ptPassword != null && !"".Equals(ptPassword))
                {
                    return(secondLogin(ym, ymbb, clientAuthCode, serverRandom, sh, retryTimes, true, ptPassword));//使用平台密码
                }
                else
                {
                    return(fpdkHttpResult);
                }
            }
            else
            {
                if (retryTimes >= 1)
                {
                    throw new Exception("调用服务器接口失败");
                }
                retryTimes++;
                return(secondLogin(ym, ymbb, clientAuthCode, serverRandom, sh, retryTimes, withPtPassword, ptPassword));
            }
        }