登陆文档说明

请求参数
参数名 备注 参数类型 说明 是否必填
password 加密签名 String companyId,realName,staffCode,timeStamp,signkey(加密密钥),按这些参数的数值升序排序后,拼接到一个字符串,然后再进行sha1加密后得到
staffCode 员工编号(userName,staffCode其中一个必填) String 客户系统的员工ID
timeStamp 时间戳 String 当前时间(yyyyMMddHHmmssffff),例如:20161210102239901
realName 真实姓名 String 使用工号登录时,必须传入; 作用是美亚系统不存在对应工号时用于创建新旅客账号
passwordType 密码方式 String 0- 员工工号单点登录
companyId 公司编号 String 美亚系统的公司ID

.net(c#)示例

        var staffCode = "123456";
        var timeStamp = DateTime.Now.ToString("yyyyMMddHHmmssffff");
        var companyId = "s123456";
        var signkey = "4f3f29eb05ee4cda81528647e91608d4";
        var realName = "张三";
        //排序
        string[] infos = new string[] { companyId, staffCode, realName, timeStamp, signkey };
        Array.Sort(infos);
        //拼接
        var input = string.Join("", infos);
        StringBuilder sb = new StringBuilder();
        //加密
        byte[] bytes = Encoding.ASCII.GetBytes(input);
        SHA1 sha1 = new SHA1CryptoServiceProvider();
        byte[] result = sha1.ComputeHash(bytes);
        foreach (byte b in result)
        sb.AppendFormat("{0:x2}", b);
        //加密结果
        var password = sb.ToString();
    

.net(c#)示例2 (utf-8,不用排序)

        var staffCode = "123456";
        var timeStamp = DateTime.Now.ToString("yyyyMMddHHmmssffff");
        var companyId = "s123456";
        var signkey = "4f3f29eb05ee4cda81528647e91608d4";
        var realName = "张三";
        //拼接顺序 companyId, staffCode, realName, timeStamp, key
        string[] infos = new string[] { companyId, staffCode, realName, timeStamp, signkey };
         //拼接
        var input = string.Join("", infos);
        StringBuilder sb = new StringBuilder();
        //加密
        byte[] bytes = Encoding.UTF8.GetBytes(input);
        SHA1 sha1 = new SHA1CryptoServiceProvider();
        byte[] result = sha1.ComputeHash(bytes);
        foreach (byte b in result)
        sb.AppendFormat("{0:x2}", b);
        //加密结果
        var password = sb.ToString();
    

Java示例

        //导入以下包
        import java.io.UnsupportedEncodingException;
        import java.security.MessageDigest;
        import java.security.NoSuchAlgorithmException;
        import java.text.SimpleDateFormat;
        import java.util.Arrays;
        import java.util.Date;

        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSSS");//如果加SSSS报错,或换成4位随机数
        String staffCode = "123456";
        String timeStamp = sdf.format(new Date());
        String companyId = "s123456";
        String signkey = "4f3f29eb05ee4cda81528647e91608d4";
        String realName = "张三";
        //排序
        String[] infos = {companyId, realName, staffCode, timeStamp, signkey};
        Arrays.sort(infos, String.CASE_INSENSITIVE_ORDER);
        //拼接
        String input = String.format("%s%s%s%s%s", infos);
        String password = "";
        //开始加密
        char[] hexDigits = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
        try {
            MessageDigest mdTemp = MessageDigest.getInstance("SHA1");
            mdTemp.update(input.getBytes("ISO-8859-1"));

            byte[] md = mdTemp.digest();
            int j = md.length;
            char[] buf = new char[j * 2];
            int k = 0;
            for (int i = 0; i < j; i++) {
                byte byte0 = md[i];
                buf[k++] = hexDigits[byte0 >>> 4 & 0xf];
                buf[k++] = hexDigits[byte0 & 0xf];
            }
            //加密结果
            password = new String(buf);
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
    

Java示例2 (utf-8,不用排序)

        //导入以下包
        import java.io.UnsupportedEncodingException;
        import java.security.MessageDigest;
        import java.security.NoSuchAlgorithmException;
        import java.text.SimpleDateFormat;
        import java.util.Arrays;
        import java.util.Date;

        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSSS");//如果加SSSS报错,或换成4位随机数
        String staffCode = "123456";
        String timeStamp = sdf.format(new Date());
        String companyId = "s123456";
        String signkey = "4f3f29eb05ee4cda81528647e91608d4";
        String realName = "张三";
        //拼接顺序 companyId, staffCode, realName, timeStamp, signkey
        String[] infos = {companyId,  staffCode,realName, timeStamp, signkey};
        //拼接
        String input = String.format("%s%s%s%s%s", infos);
        String password = "";
        //开始加密
        char[] hexDigits = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
        try {
            MessageDigest mdTemp = MessageDigest.getInstance("SHA1");
            mdTemp.update(input.getBytes("utf-8"));

            byte[] md = mdTemp.digest();
            int j = md.length;
            char[] buf = new char[j * 2];
            int k = 0;
            for (int i = 0; i < j; i++) {
                byte byte0 = md[i];
                buf[k++] = hexDigits[byte0 >>> 4 & 0xf];
                buf[k++] = hexDigits[byte0 & 0xf];
            }
            //加密结果
            password = new String(buf);
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
    

python示例

        # 示例使用的为 python 3.6
        # 导入以下包    
        import sys
        import datetime
        import hashlib

        company_id = "" # 美亚提供的 公司编号
        staff_code = "" # 员工工号
        real_name = "" # 员工姓名
        time_stamp = datetime.datetime.now().strftime('%Y%m%d%H%M%S%f')
        sign_key="" # 美亚提供的 key
        arrs = [company_id, staff_code, real_name, time_stamp, sign_key]
        # 排序
        arrs.sort(key = str.lower)
        data = ''.join(arrs)
        # 开始加密
        sha = hashlib.sha1()
        data = data.encode("utf-8")
        sha.update(data)
        # 加密结果
        password= sha.hexdigest()
        print(password)