public static int SendUATicket(string UAProvinceID,string SPID,string ticket, string CustID, string URL, HttpContext SpecificContext, string SPDataCacheName, string ExtendField,string TransactionID, out string ErrMsg, out string newExtendField) { int result = -20005; //byte[] privateKeyFile; //byte[] publicKeyFile; //string privateKeyPassword = ""; //string UserName = ""; string ticketXML = ""; newExtendField = ""; ErrMsg = ""; MBOSSClass.BilByCompilingResult bcr = new MBOSSClass.BilByCompilingResult(); //SPInfoManager spInfo = new SPInfoManager(); MBOSSClass mbss = new MBOSSClass(); try { //Object SPData = spInfo.GetSPData(SpecificContext, SPDataCacheName); //publicKeyFile = spInfo.GetCAInfo("35111111", 0, SPData, out UserName, out privateKeyPassword); //privateKeyFile = spInfo.GetCAInfo("35111111", 1, SPData, out UserName, out privateKeyPassword); result = mbss.SendUATicket(UAProvinceID,SPID, ticket, URL, SpecificContext, SPDataCacheName, TransactionID, out bcr, out ticketXML, out ErrMsg); } catch (Exception err) { result = -20006; ErrMsg = err.Message; } finally { #region WriteLog StringBuilder msg = new StringBuilder(); msg.Append("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\r\n\r\n"); msg.Append(" CAP02001票据解读接口 " + DateTime.Now.ToString("u") + "\r\n"); msg.Append(";ticket - " + ticket); msg.Append(";SpecificContext - " + SpecificContext); msg.Append(";SPDataCacheName - " + SPDataCacheName + "\r\n"); msg.Append(";ExtendField - " + ExtendField); msg.Append("\r\n"); msg.Append("处理结果 - " + result); msg.Append("UATicketXML - " + ticketXML); msg.Append("; 错误描述 - " + ErrMsg); msg.Append("; ExtendField - " + newExtendField + "\r\n"); msg.Append("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\r\n"); BTUCenterInterfaceLog.CenterForBizTourLog("SendUATicket", msg); #endregion } return result; }
protected void QueryAssertionByTicket() { MBOSSClass mboss = new MBOSSClass(); StringBuilder strLog = new StringBuilder(); string xml = ""; int Result = -19999; string ErrMsg = String.Empty; string UAProvinceID = "35"; string SPID = UAProvinceID + "999991"; string CustID = "", RealName = "", NickName = "", UserName = "", OutID = "", UserAccount = "", CustType = "", ProvinceID = "", AuthenName = "", AuthenType = ""; string AssertionAddress = String.Empty; string SSOAddress = String.Empty; string SecretKey = String.Empty; try { //获取到集团断言查询地址,这里要注意个问题,取地址是从数据库中去,测试库上的地址已经改为新的断言地址,在正式库上是否要改? Result = mboss.GetMBOSSAddress(this.Context, SPID, out AssertionAddress, out SSOAddress, out ErrMsg); if (Result != 0) { strLog.Append("没有获取到集团断言查询地址;\r\n"); //SendJF(); 没有获取到集团断言查询地址 return; } PageUtility.SetCookie(AssertionAddress, "AssertionAddress", this.Page); PageUtility.SetCookie(SSOAddress, "SSOAddress", this.Page); //35000 20130808 5146985330 string TransactionID = "35000" + DateTime.Now.ToString("yyyyMMdd") + Convert.ToString(LongRandom(1000000000, 9999999999, new Random())); //获取流水号 //密钥 Result = mboss.GetMBOSSSecretKey(this.Context, SPID, out SecretKey, out ErrMsg); if (Result != 0) { strLog.Append("没有获取到密钥;\r\n"); //没有获取到密钥; return; } //断言 MBOSSClass.BilByCompilingResult bil = new MBOSSClass.BilByCompilingResult(); //查询断言并解析 Result = mboss.SendUATicket(UAProvinceID, SPID, UATicket, AssertionAddress, this.Context, "SPCAData", TransactionID, out bil, out xml, out ErrMsg); AuthenType = bil.AccountType; AuthenName = bil.AccountID; strLog.AppendFormat("断言查询返回的报文:{0}\r\n",xml); if (Result != 0) { //Response.Redirect("../ErrorInfo.aspx?Result=-19999&ErrorInfo=请从网厅登陆1&FunctionName=请从网厅登陆1", true); Response.Redirect("../ErrorInfo.aspx?Result=-19999&ErrorInfo=断言解析错误!", true); return; } //用户入库是否存在,没有则新增,有则update string dealType = String.Empty; int type = 0; string areaid = String.Empty; Result = BTForBusinessSystemInterfaceRules.MUserAuthV2(SPID, UAProvinceID, bil.AccountID, bil.AccountType, bil.AccountInfos, Context, out ErrMsg, out CustID, out UserAccount, out CustType, out OutID, out ProvinceID, out RealName, out UserName, out NickName, out dealType, out type, out areaid); if (Result != 0) { Response.Redirect("../ErrorInfo.aspx?Result=" + Result + "&ErrorInfo=" + ErrMsg + "&FunctionName=请从网厅登陆4", true); return; } //如果客户信息不全,则去crm查询一把 这里要注意的是,必须根据集团返回的断言中的UAID 当成省码传给枢纽 string TestStr = String.Empty; Result = CrmSSO.UserAuthCrm1(bil.ProvinceID, bil.AccountInfos[0].areaid, bil.AccountType, bil.AccountID, UAProvinceID, "", "0", UAProvinceID + "999991", this.Context, out RealName, out UserName, out NickName, out OutID, out CustType, out CustID, out ErrMsg, out TestStr); if (Result != 0) { Response.Redirect("../ErrorInfo.aspx?Result=" + Result + "&ErrorInfo=" + ErrMsg + "&FunctionName=请从网厅登陆5", true); return; } strLog.Append(Result + "==" + UAProvinceID + "=UAProvinceID;" + bil.AccountType + " =bil.AccountType;" + bil.AccountID + "=bil.AccountID;" + "" + "" + RealName + "=RealName;" + UserName + "=UserName;" + NickName + "=NickName;" + OutID + "=OutID;" + CustType + "=CustType;" + CustID + "=CustID1;" + ErrMsg + "=ErrMsg\r\n"); if (dealType == "0") //通知积分系统 CIP2BizRules.InsertCustInfoNotify(CustID, "2", System.Configuration.ConfigurationManager.AppSettings["ScoreBesttoneSPID"], "", "0", out ErrMsg); //生成ticket Result = CIPTicketManager.insertCIPTicket(TransactionID, SPID, CustID, RealName, NickName, UserName, OutID, "", AuthenName, AuthenType, out ErrMsg); Response.Redirect(ReturnUrl + "?Ticket=" + TransactionID); } catch (Exception e) { strLog.AppendFormat(e.Message); } finally { try { CommonBizRules.WriteDataCustAuthenLog(SPID, CustID, ProvinceID, AuthenType, AuthenName, "2", Result, ErrMsg); } catch { } } }
protected void ssoFunc() { string QH = System.Configuration.ConfigurationManager.AppSettings["HQList"]; //上海,广州处理 string UAOUTID = System.Configuration.ConfigurationManager.AppSettings["UAOUTIDLIst"]; string UAProvinceID =Request.Cookies["UAProvinceID"].Value.ToString(); //是否是SSO的省 if (QH.IndexOf(UAProvinceID) < 0 && UAOUTID.IndexOf(UAProvinceID) < 0) { Response.Redirect("../ErrorInfo.aspx?Result=-19999&ErrorInfo=未开通单点登录&FunctionName=请从 http://jf.ct10000.com 直接登入集团积分商城", true); return; } MBOSSClass mboss = new MBOSSClass(); string AssertionAddress = Request.Cookies["AssertionAddress"].Value.ToString(); //获取断言查询地址 string TransactionID = Request.Cookies["TransactionID"].Value.ToString(); //获取流水号 string xml=""; int result = -19999; string ErrMsg = ""; string SPID = UAProvinceID + "999991"; string CustID = "", RealName = "",NickName = "",UserName = "",OutID = "",UserAccount = "",CustType = "",ProvinceID = "" ,AuthenName = "",AuthenType = ""; try { SPInfoManager spInfo = new SPInfoManager(); Object SPData = spInfo.GetSPData(this.Context, "SPData"); //密钥 string key = spInfo.GetPropertyBySPID(SPID, "SecretKey", SPData); //断言 MBOSSClass.BilByCompilingResult bil = new MBOSSClass.BilByCompilingResult(); //查询断言并解析 result = mboss.SendUATicket(UAProvinceID,SPID, UATicket, AssertionAddress, this.Context, "SPCAData",TransactionID, out bil, out xml, out ErrMsg); AuthenType = bil.AccountType; AuthenName = bil.AccountID; if (result != 0) { Response.Redirect("../ErrorInfo.aspx?Result=-19999&ErrorInfo=请从网厅登陆1&FunctionName=请从网厅登陆1", true); return; } //用户入库是否存在 int type=0; string p = bil.AccountID; string dealType = ""; string areaid = ""; string jtUAProvinceID = ""; log("UAProvinceID:集团ua:" + UAProvinceID ); if ("35".Equals(UAProvinceID)) { if (!"".Equals(bil.ProvinceID)) jtUAProvinceID = bil.ProvinceID; else jtUAProvinceID = UAProvinceID; result = 0; type = 1; } else { result = BTForBusinessSystemInterfaceRules.MUserAuthV2(SPID, UAProvinceID, bil.AccountID, bil.AccountType, bil.AccountInfos, Context, out ErrMsg, out CustID, out UserAccount, out CustType, out OutID, out ProvinceID, out RealName, out UserName, out NickName, out dealType, out type, out areaid); log(bil.ProvinceID+"-!35-BTForBusinessSystemInterfaceRules.MUserAuthV2:" + result + "-bil.ProvinceID=" + bil.ProvinceID + "-UAProvinceID=" + UAProvinceID + "-areaid=" + areaid + "-custid=" + CustID + "-OutID=" + OutID + "-ErrMsg=" + ErrMsg); } string CustID1 = CustID; string RealName1=""; string UserName1=""; string NickName1=""; string CustType1=""; log("MUserAuthV2:" + result + ";CustID=" + CustID + " @----@" + ErrMsg + "==" + type); if (result!=0) { Response.Redirect("../ErrorInfo.aspx?Result=-19999&ErrorInfo="+ErrMsg+"&FunctionName=请从网厅登陆2", true); return; } //模式3情况下,获取证件号和类型 string TestStr = ""; if (type == 1 ) { string OutID1 = ""; if (QH.IndexOf(UAProvinceID) >= 0) { if (bil.AccountType == "9" || bil.AccountType == "10" || bil.AccountType == "11") { if (areaid != "") { bil.AccountID = areaid + "-" + bil.AccountID; } } } else if (UAOUTID.IndexOf(UAProvinceID) >= 0) { bil.AccountID = OutID; bil.AccountType = "99"; RealName = bil.AccountID; } else { if (bil.AccountType == "9" || bil.AccountType == "10" || bil.AccountType == "11") { string phone = ""; areaid = BTForBusinessSystemInterfaceRules.PhoneToArea(UAProvinceID, bil.AccountID, out phone); if (areaid != "") { bil.AccountID = areaid +"-"+ phone; } } } int result1 = -1234; if ("35".Equals(UAProvinceID)) { log("CrmSSO.UserAuthCrm1:provinceid=" + bil.ProvinceID + ";areacode:" + bil.AccountInfos[0].areaid + ";accountid:" + bil.AudienceID + "|TestStr=" + TestStr); result1 = CrmSSO.UserAuthCrm1(bil.ProvinceID, bil.AccountInfos[0].areaid, bil.AccountType, bil.AccountID, p, "", "0", UAProvinceID + "999991", this.Context, out RealName1, out UserName1, out NickName1, out OutID1, out CustType1, out CustID1, out ErrMsg, out TestStr); } else { result1 = CrmSSO.UserAuthCrm(UAProvinceID, bil.AccountType, bil.AccountID, p, "", "0", UAProvinceID + "999991", this.Context, out RealName1, out UserName1, out NickName1, out OutID1, out CustType1, out CustID1, out ErrMsg, out TestStr); } if (result1 == 0) { OutID = OutID1; CustID = CustID1; CustType = CustType1; } else { Response.Redirect("../ErrorInfo.aspx?Result="+result1+"&ErrorInfo=" + ErrMsg + "&FunctionName=请从网厅登陆5", true); return; } UserName = RealName1; NickName = RealName1; log(result1 + "==" + UAProvinceID + "=UAProvinceID;" + bil.AccountType + " =bil.AccountType;" + bil.AccountID + "=bil.AccountID;" + "" + "" + RealName + "=RealName;" + UserName + "=UserName;" + NickName + "=NickName;" + OutID + "=OutID;" + CustType + "=CustType;" + CustID + "=CustID1;" + ErrMsg + "=ErrMsg"); } if (dealType == "0" ) //通知积分系统 CIP2BizRules.InsertCustInfoNotify(CustID, "2", System.Configuration.ConfigurationManager.AppSettings["ScoreBesttoneSPID"], "", "0", out ErrMsg); //生成cookie UserToken UT = new UserToken(); string UserTokenValue = UT.GenerateUserToken(CustID, RealName, UserName, NickName, OutID, CustType,AuthenName,AuthenType,key, out ErrMsg); string CookieName = System.Configuration.ConfigurationManager.AppSettings["CookieName"]; PageUtility.SetCookie(UserTokenValue, CookieName, this.Page); //生成ticket result = CIPTicketManager.insertCIPTicket(TransactionID, SPID, CustID, RealName, NickName, UserName, OutID, "", AuthenName, AuthenType, out ErrMsg); log("insertCIPTicket:" + ErrMsg + result); if (result != 0) { Response.Redirect("../ErrorInfo.aspx?Result=-19999&ErrorInfo=请从网厅登陆3&FunctionName=请从网厅登陆3", true); return; } string Url = Request.Cookies["ReturnURL"].Value.ToString(); // System.Configuration.ConfigurationManager.AppSettings["SSOReturnURL"]; ; PageUtility.ExpireCookie("ReturnURL", this.Page); PageUtility.ExpireCookie("SPID", this.Page); PageUtility.ExpireCookie("UAProvinceID", this.Page); PageUtility.ExpireCookie("TransactionID", this.Page); Response.Redirect(Url + "?Ticket=" + TransactionID); } catch (System.Exception ex) { ErrMsg=ex.Message; } finally { try { CommonBizRules.WriteDataCustAuthenLog(SPID, CustID, ProvinceID, AuthenType, AuthenName,"2", result, ErrMsg); } catch { } } }