/// <summary> /// /// </summary> /// <param name="SPID"></param> /// <param name="CustID"></param> /// <param name="Phone"></param> /// <param name="CheckPhoneCode"></param> /// <param name="wt"></param> /// <returns></returns> public String OpenBesttoneAccount(String SPID, String CustID, String Phone, String IDCard, String RealName, String ContactTel, String Email, String Sex, String AuthenCode, String wt) { //返回参数 String ErrMsg = String.Empty; Int32 Result = ErrorDefinition.CIP_IError_Result_UnknowError_Code; StringBuilder ResponseMsg = new StringBuilder(); if (CommonUtility.IsEmpty(SPID)) { // 返回错误信息 ResponseMsg.Length = 0; if ("json".Equals(wt)) { ResponseMsg.Append("{"); ResponseMsg.AppendFormat("\"errcode\":\"{0}\",", "995"); ResponseMsg.AppendFormat("\"errmsg\":\"{0}\"", "SPID不能为空!"); ResponseMsg.Append("}"); } else { ResponseMsg.Append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); ResponseMsg.Append("<PayPlatRequestParameter>"); ResponseMsg.Append("<PARAMETERS>"); ResponseMsg.AppendFormat("<ErrCode>{0}</ErrCode>", "995"); ResponseMsg.AppendFormat("<ErrMsg>{0}</ErrMsg>", "SPID不能为空!"); ResponseMsg.Append("</PARAMETERS>"); ResponseMsg.Append("</PayPlatRequestParameter>"); } return(ResponseMsg.ToString()); } if (CommonUtility.IsEmpty(CustID)) { // 返回错误信息 ResponseMsg.Length = 0; if ("json".Equals(wt)) { ResponseMsg.Append("{"); ResponseMsg.AppendFormat("\"errcode\":\"{0}\",", "996"); ResponseMsg.AppendFormat("\"errmsg\":\"{0}\"", "CustID不能为空!"); ResponseMsg.Append("}"); } else { ResponseMsg.Append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); ResponseMsg.Append("<PayPlatRequestParameter>"); ResponseMsg.Append("<PARAMETERS>"); ResponseMsg.AppendFormat("<ErrCode>{0}</ErrCode>", "996"); ResponseMsg.AppendFormat("<ErrMsg>{0}</ErrMsg>", "CustID不能为空!"); ResponseMsg.Append("</PARAMETERS>"); ResponseMsg.Append("</PayPlatRequestParameter>"); } return(ResponseMsg.ToString()); } if (CommonUtility.IsEmpty(Phone)) { // 返回错误信息 ResponseMsg.Length = 0; if ("json".Equals(wt)) { ResponseMsg.Append("{"); ResponseMsg.AppendFormat("\"errcode\":\"{0}\",", "997"); ResponseMsg.AppendFormat("\"errmsg\":\"{0}\"", "Phone不能为空!"); ResponseMsg.Append("}"); } else { ResponseMsg.Append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); ResponseMsg.Append("<PayPlatRequestParameter>"); ResponseMsg.Append("<PARAMETERS>"); ResponseMsg.AppendFormat("<ErrCode>{0}</ErrCode>", "997"); ResponseMsg.AppendFormat("<ErrMsg>{0}</ErrMsg>", "Phone不能为空!"); ResponseMsg.Append("</PARAMETERS>"); ResponseMsg.Append("</PayPlatRequestParameter>"); } return(ResponseMsg.ToString()); } if (CommonUtility.IsEmpty(IDCard)) { // 返回错误信息 ResponseMsg.Length = 0; if ("json".Equals(wt)) { ResponseMsg.Append("{"); ResponseMsg.AppendFormat("\"errcode\":\"{0}\",", "998"); ResponseMsg.AppendFormat("\"errmsg\":\"{0}\"", "IDCard不能为空!"); ResponseMsg.Append("}"); } else { ResponseMsg.Append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); ResponseMsg.Append("<PayPlatRequestParameter>"); ResponseMsg.Append("<PARAMETERS>"); ResponseMsg.AppendFormat("<ErrCode>{0}</ErrCode>", "998"); ResponseMsg.AppendFormat("<ErrMsg>{0}</ErrMsg>", "IDCard不能为空!"); ResponseMsg.Append("</PARAMETERS>"); ResponseMsg.Append("</PayPlatRequestParameter>"); } return(ResponseMsg.ToString()); } if (CommonUtility.IsEmpty(RealName)) { // 返回错误信息 ResponseMsg.Length = 0; if ("json".Equals(wt)) { ResponseMsg.Append("{"); ResponseMsg.AppendFormat("\"errcode\":\"{0}\",", "999"); ResponseMsg.AppendFormat("\"errmsg\":\"{0}\"", "RealName不能为空!"); ResponseMsg.Append("}"); } else { ResponseMsg.Append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); ResponseMsg.Append("<PayPlatRequestParameter>"); ResponseMsg.Append("<PARAMETERS>"); ResponseMsg.AppendFormat("<ErrCode>{0}</ErrCode>", "999"); ResponseMsg.AppendFormat("<ErrMsg>{0}</ErrMsg>", "RealName不能为空!"); ResponseMsg.Append("</PARAMETERS>"); ResponseMsg.Append("</PayPlatRequestParameter>"); } return(ResponseMsg.ToString()); } //验证码校验 Result = PhoneBO.SelSendSMSMassage(CustID, Phone, AuthenCode, out ErrMsg); if (Result != 0) { // 验证码未校验通过 return ResponseMsg.Length = 0; if ("json".Equals(wt)) { ResponseMsg.Append("{"); ResponseMsg.AppendFormat("\"errcode\":\"{0}\",", "1000"); ResponseMsg.AppendFormat("\"errmsg\":\"{0}\"", ErrMsg); ResponseMsg.Append("}"); } else { ResponseMsg.Append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); ResponseMsg.Append("<PayPlatRequestParameter>"); ResponseMsg.Append("<PARAMETERS>"); ResponseMsg.AppendFormat("<ErrCode>{0}</ErrCode>", "1000"); ResponseMsg.AppendFormat("<ErrMsg>{0}</ErrMsg>", ErrMsg); ResponseMsg.Append("</PARAMETERS>"); ResponseMsg.Append("</PayPlatRequestParameter>"); } return(ResponseMsg.ToString()); } else { String t_custid = PhoneBO.IsAuthenPhone(Phone, SPID, out ErrMsg); // t_custid 可以为空,但不能是别人的custid,可以为空是说明此客户无认证电话 if (!String.IsNullOrEmpty(t_custid)) { if (CustID != t_custid) { //是别人的手机号,不能用来开户 return ResponseMsg.Length = 0; if ("json".Equals(wt)) { ResponseMsg.Append("{"); ResponseMsg.AppendFormat("\"errcode\":\"{0}\",", "1000"); ResponseMsg.AppendFormat("\"errmsg\":\"{0}\"", Phone + "(" + CustID + ")是别人的手机号(" + t_custid + "),不能用来开户!"); ResponseMsg.Append("}"); } else { ResponseMsg.Append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); ResponseMsg.Append("<PayPlatRequestParameter>"); ResponseMsg.Append("<PARAMETERS>"); ResponseMsg.AppendFormat("<ErrCode>{0}</ErrCode>", "1000"); ResponseMsg.AppendFormat("<ErrMsg>{0}</ErrMsg>", "是别人的手机号,不能用来开户!"); ResponseMsg.Append("</PARAMETERS>"); ResponseMsg.Append("</PayPlatRequestParameter>"); } return(ResponseMsg.ToString()); } } if (!CommonUtility.CheckIDCard(IDCard)) { //身份证不合法! return ResponseMsg.Length = 0; if ("json".Equals(wt)) { ResponseMsg.Append("{"); ResponseMsg.AppendFormat("\"errcode\":\"{0}\",", "1001"); ResponseMsg.AppendFormat("\"errmsg\":\"{0}\"", "身份证不合法!"); ResponseMsg.Append("}"); } else { ResponseMsg.Append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); ResponseMsg.Append("<PayPlatRequestParameter>"); ResponseMsg.Append("<PARAMETERS>"); ResponseMsg.AppendFormat("<ErrCode>{0}</ErrCode>", "1001"); ResponseMsg.AppendFormat("<ErrMsg>{0}</ErrMsg>", "身份证不合法!"); ResponseMsg.Append("</PARAMETERS>"); ResponseMsg.Append("</PayPlatRequestParameter>"); } return(ResponseMsg.ToString()); } try { String TransactionID = CreateTransactionID(); BesttoneAccountDAO _besttoneAccount_dao = new BesttoneAccountDAO(); //strLog.AppendFormat("select * from besttoneaccount where custid={0}\r\n", CustID); BesttoneAccount besttoneAccountEntity = _besttoneAccount_dao.QueryByCustID(CustID); AccountItem ai = new AccountItem(); String QueryBAResponseCode = ""; if (besttoneAccountEntity == null) // 未绑定 { //去翼支付查 int QueryBesttoneAccountResult = QueryBesttoneAccount(Phone, out ai, out QueryBAResponseCode, out ErrMsg); //if (QueryBesttoneAccountResult == 0) //{ if ("200010".Equals(QueryBAResponseCode)) // 未开户 { UserRegistry.BeforeCreateBesttoneAccount(SPID, TransactionID, CustID, Phone, out ErrMsg); //日志 RegisterBesttoneAccount(Phone, RealName, ContactTel, Email, Sex, "1", IDCard, TransactionID, out ErrMsg); UserRegistry.CreateBesttoneAccount(SPID, CustID, Phone, out ErrMsg); //建立绑定关系 UserRegistry.AfterCreateBesttoneAccount(SPID, TransactionID, CustID, Phone, out ErrMsg); //日志 UserRegistry.WriteBackBestToneAccountToCustInfo(SPID, CustID, RealName, IDCard, out ErrMsg); ResponseMsg.Length = 0; if ("json".Equals(wt)) { ResponseMsg.Append("{"); ResponseMsg.AppendFormat("\"errcode\":\"{0}\",", "0"); ResponseMsg.AppendFormat("\"errmsg\":\"{0}\"", "开户成功,绑定成功!"); ResponseMsg.Append("}"); } else { ResponseMsg.Append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); ResponseMsg.Append("<PayPlatRequestParameter>"); ResponseMsg.Append("<PARAMETERS>"); ResponseMsg.AppendFormat("<ErrCode>{0}</ErrCode>", "0"); ResponseMsg.AppendFormat("<ErrMsg>{0}</ErrMsg>", "开户成功,绑定成功!"); ResponseMsg.Append("</PARAMETERS>"); ResponseMsg.Append("</PayPlatRequestParameter>"); } return(ResponseMsg.ToString()); } else { //可能在开过户 if ("000000".Equals(QueryBAResponseCode)) { //绑定操作 UserRegistry.CreateBesttoneAccount(SPID, CustID, Phone, out ErrMsg); UserRegistry.OnlyBindingBesttoneAccount(SPID, TransactionID, CustID, Phone, out ErrMsg); ResponseMsg.Length = 0; if ("json".Equals(wt)) { ResponseMsg.Append("{"); ResponseMsg.AppendFormat("\"errcode\":\"{0}\",", "0"); ResponseMsg.AppendFormat("\"errmsg\":\"{0}\"", "仅仅绑定成功!"); ResponseMsg.Append("}"); } else { ResponseMsg.Append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); ResponseMsg.Append("<PayPlatRequestParameter>"); ResponseMsg.Append("<PARAMETERS>"); ResponseMsg.AppendFormat("<ErrCode>{0}</ErrCode>", "0"); ResponseMsg.AppendFormat("<ErrMsg>{0}</ErrMsg>", "仅仅绑定成功!"); ResponseMsg.Append("</PARAMETERS>"); ResponseMsg.Append("</PayPlatRequestParameter>"); } return(ResponseMsg.ToString()); } else { //账户状态可能存在异常 return ResponseMsg.Length = 0; if ("json".Equals(wt)) { ResponseMsg.Append("{"); ResponseMsg.AppendFormat("\"errcode\":\"{0}\",", "1002"); ResponseMsg.AppendFormat("\"errmsg\":\"{0}\"", "账户状态可能存在异常!"); ResponseMsg.Append("}"); } else { ResponseMsg.Append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); ResponseMsg.Append("<PayPlatRequestParameter>"); ResponseMsg.Append("<PARAMETERS>"); ResponseMsg.AppendFormat("<ErrCode>{0}</ErrCode>", "1002"); ResponseMsg.AppendFormat("<ErrMsg>{0}</ErrMsg>", "账户状态可能存在异常!"); ResponseMsg.Append("</PARAMETERS>"); ResponseMsg.Append("</PayPlatRequestParameter>"); } return(ResponseMsg.ToString()); } } //} //else //{ ////账户查询过程中发生异常 return //ResponseMsg.Length = 0; //if ("json".Equals(wt)) //{ // ResponseMsg.Append("{"); // ResponseMsg.AppendFormat("\"errcode\":\"{0}\",", "1003"); // ResponseMsg.AppendFormat("\"errmsg\":\"{0}\"", "账户查询过程中发生异常!"); // ResponseMsg.Append("}"); //} //else //{ // ResponseMsg.Append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); // ResponseMsg.Append("<PayPlatRequestParameter>"); // ResponseMsg.Append("<PARAMETERS>"); // ResponseMsg.AppendFormat("<ErrCode>{0}</ErrCode>", "1003"); // ResponseMsg.AppendFormat("<ErrMsg>{0}</ErrMsg>", "账户查询过程中发生异常!"); // ResponseMsg.Append("</PARAMETERS>"); // ResponseMsg.Append("</PayPlatRequestParameter>"); //} //return ResponseMsg.ToString(); //} } else { //该手机号码已经开过户,账户所绑定的custid不管是不是自己的,都不允许再开户 ResponseMsg.Length = 0; if ("json".Equals(wt)) { ResponseMsg.Append("{"); ResponseMsg.AppendFormat("\"errcode\":\"{0}\",", "1004"); ResponseMsg.AppendFormat("\"errmsg\":\"{0}\"", "该手机号码已经开过户!"); ResponseMsg.Append("}"); } else { ResponseMsg.Append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); ResponseMsg.Append("<PayPlatRequestParameter>"); ResponseMsg.Append("<PARAMETERS>"); ResponseMsg.AppendFormat("<ErrCode>{0}</ErrCode>", "1004"); ResponseMsg.AppendFormat("<ErrMsg>{0}</ErrMsg>", "该手机号码已经开过户!"); ResponseMsg.Append("</PARAMETERS>"); ResponseMsg.Append("</PayPlatRequestParameter>"); } return(ResponseMsg.ToString()); } } catch (Exception ecp) { ResponseMsg.Length = 0; if ("json".Equals(wt)) { ResponseMsg.Append("{"); ResponseMsg.AppendFormat("\"errcode\":\"{0}\",", "1005"); ResponseMsg.AppendFormat("\"errmsg\":\"{0}\"", ecp.ToString()); ResponseMsg.Append("}"); } else { ResponseMsg.Append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); ResponseMsg.Append("<PayPlatRequestParameter>"); ResponseMsg.Append("<PARAMETERS>"); ResponseMsg.AppendFormat("<ErrCode>{0}</ErrCode>", "1005"); ResponseMsg.AppendFormat("<ErrMsg>{0}</ErrMsg>", ecp.ToString()); ResponseMsg.Append("</PARAMETERS>"); ResponseMsg.Append("</PayPlatRequestParameter>"); } return(ResponseMsg.ToString()); } } // 开户的前置条件 //1.必须先登录(说明是合法号百客户,有CUSTID) //2.手机验证码校验 (如果是接口,仅校验手机验证码,如果是页面,则需校验页面验证码?) //3.检查手机号码是否是别人的登录账号 (登录后获得的custid和custphone 的custid比对) //4.验证身份证号是否合法 //5.检查手机号码是否是别人的支付账户 (是否已经存在绑定关系,如果是,是否是绑定在自己的custid下) //6.去翼支付检查该手机号码是否开过户(直接调翼支付账户查询) //开户 //IF 校验码未通过 // 重定向到错误页面(如果是接口,则返回错误提示) //ELSE // IF 根据PHONE 获得的CUSTID不是 登录CUSTID // 非法开户,重定向到错误页面 (如果是接口,则返回错误提示) -- // ELSE // IF PHONE 存在于账户绑定关系 // IF 账户对应的CUSTID 与登录后获得的CUSTID 不匹配 -- 说明该手机号码已经被别的客户开成账户了 // 该手机号码已经被别的客户开成账户了,重定向到错误页面,如果是接口,则返回错误提示信息 // ELSE // 该手机已经开过户,不需要再开户 // END // ELSE // IF 翼支付没能能查到该手机的账户信息 --说明的确未开户 // 验证身份证号是否合法 // 开户 (调用翼支付开户接口) // 插入绑定关系表 // END // END // END //END return(ResponseMsg.ToString()); }