[原创]C#植入友商网在线服务并实现同步用户注册接口(三)
作者:C/S框架网  发布日期:2011/06/12 18:57:02
  [原创]C#植入友商网在线服务并实现同步用户注册接口(三)

[原创]C#植入友商网在线服务并实现同步用户注册接口(三)



《从友商网数据库检查用户是否存在》


我们在注册页面输入新用户名系统会自动检查该名称是否已经注册,流程是这样的:
1.首先检查自己的数据库,如果已经存在直接提示用户,如果不存在执行第2步.
2.检查友商网的数据库.

第一个检测非常容易写个sql就能解决,关键是第2步如果实现查找友商网的数据库呢?


先看接口说明书:

联邦登录接口地址

接口举例:

http://agent.youshang.com/federation/commonservice/servicePortal.do? partnerId=1021& cipherCode=value&iv=value

该接口同步用户的信息,并且可以绑定到同一个合作伙伴下的公司。
必须有的参数包括partnerId,所以用户必须首先注册成为合作伙伴,否则服务会无法正常运行。
http传送的数据必须包含cipherCode,iv,否则服务会无法正常运行。

xml中类型是<type>userLogin</type>

默认算法是AES,不带明文。

接口参数:

序号

参数名

名称

备注

备注

1.           

userAccount

登录名

登录名

必填

2.           

time

系统当前时间

此请求发起的时间,目前定为发起时间的20分钟内有效, 超时请求将被视为非法。January 1, 1970 UTCcoordinated universal time)开始计数的毫秒数,注意正确设置系统时间。

必填




xml中类型是<type>userLogin</type> 说明只需要修改type就行



   //将type设为userLogin

  private string getLoginXML(string userAccount)

        {

            string xml =

               "<?xml version=\"1.0\" encoding = \"utf-8\"?>" +

               "    <request>" +

               "        <type>userLogin</type>" +

               "        <data>" +

               "            <attr name=\"userAccount\">{0}</attr>" +

               "            <attr name=\"time\">{1}</attr>" +

               "        </data>" +

               "    </request>";

 

            string utc = DateTimeToUTC(DateTime.Now).ToString();

            //  utc = utc.Substring(0, utc.IndexOf("."));

            string ret = string.Format(xml, userAccount, utc);

            return ret;

        }


接口说明书指定系统时间为UTC,需要写个函数转换

  //WINDOWS时间转UTC时间

        private long DateTimeToUTC(DateTime vDate)

        {

            TimeZone tz = TimeZone.CurrentTimeZone;

            vDate = vDate.ToUniversalTime();

            DateTime dtZone = new DateTime(1970, 1, 1, 0, 0, 0, 0);

            TimeSpan ts = vDate.Subtract(dtZone);

            return (long)ts.TotalMilliseconds;

        }




检查用户是否存在的代码



        /// <summary>

        ///友商网检查用户登录接口

        /// </summary>

        /// <param name="userAccount"></param>

        /// <returns></returns>

        public bool Exists(string userAccount)

        {

            try

            {

                string url = "http://agent.youshang.com/federation/commonservice/servicePortal.do"; //友商网接口

 

                string urlParam = "partnerId={0}&cipherCode={1}&iv={2}"; //接口的URL参数

 

                string iv = AES_Crypto.GetIv(16); //生成iv代码

                string xmlLogin = this.getLoginXML(userAccount); //TUser对象转换为xml文件

 

                //AES加密用户XML数据

                string cipherCode = AES_Crypto.AESEncrypt(xmlLogin, _aesKey, iv);

 

                cipherCode = HttpUtility.UrlEncode(cipherCode);//HTML ENCODE

                iv = HttpUtility.UrlEncode(iv);//HTML ENCODE

 

                urlParam = string.Format(urlParam, _partnerID, cipherCode, iv);

                string response = this.HttpPost(url, urlParam); //提交数据....   

 

                return response.Trim().Length > 0;

            }

            catch //如友商网不存在该用户,会抛出服务器内部错误

            {

                //在这里接收到异常视该用户不存在

                return false;

            }

        }




C/S框架网|原创精神.创造价值.打造精品


扫一扫加作者微信
C/S框架网作者微信 C/S框架网|原创作品.质量保障.竭诚为您服务

上一篇 下一篇