啊鑫
8 天以前 0aa54059b26e6641196e9953490dd18616e916e3
util/XkyApiHelper.cs
@@ -1,9 +1,6 @@
using Newtonsoft.Json;
using System.Security.Cryptography;
using System.Text;
using NewPdaSqlServer.util;
using System.Security.Cryptography;
using Newtonsoft.Json;
namespace NewPdaSqlServer.util
{
@@ -23,11 +20,11 @@
            //this.appSecret = "fa7c117c02fd4967849a612963c034ca";
            //this.version = "1.0";
            //正式
            this.appKey = "edfa5f089979c94f2db47ab0b2cdc35d";
            this.operateCompanyCode = "25832037";
            this.ownerCompanyCode = "25832037";
            this.appSecret = "4e46a1b61c5a8ce2fb2a519120f59520";
            this.version = "1.0";
            appKey = "edfa5f089979c94f2db47ab0b2cdc35d";
            operateCompanyCode = "25832037";
            ownerCompanyCode = "25832037";
            appSecret = "4e46a1b61c5a8ce2fb2a519120f59520";
            version = "1.0";
        }
        public string appKey { get; set; }
@@ -41,20 +38,21 @@
namespace NewPdaSqlServer.util
{
    /// API相关参数定义的全局类
    public partial class ApiGlobal
    public class ApiGlobal
    {
        private static readonly object _lock = new object();
        private static bool _initialized = false;
        private static readonly object _lock = new();
        private static bool _initialized;
        static ApiGlobal()
        {
            Init();
        }
        public static SignConst signConst { get; set; }
        public static void Init()
        {
            if (!_initialized)
            {
                lock (_lock)
                {
                    if (!_initialized)
@@ -63,10 +61,7 @@
                        _initialized = true;
                    }
                }
            }
        }
        public static SignConst signConst { get; set; }
    }
}
@@ -78,28 +73,27 @@
    {
        public static MD5 md5 = MD5.Create();
        public static string buildCurrentSign(IDictionary<string, string> parameters, String appSecret)
        public static string buildCurrentSign(
            IDictionary<string, string> parameters, string appSecret)
        {
            try
            {
                string secret = ":" + appSecret;
                IDictionary<string, string> sortedParams = new SortedDictionary<string, string>(parameters, StringComparer.Ordinal);
                IEnumerator<KeyValuePair<string, string>> dem = sortedParams.GetEnumerator();
                StringBuilder query = new StringBuilder();
                var secret = ":" + appSecret;
                IDictionary<string, string> sortedParams =
                    new SortedDictionary<string, string>(parameters,
                        StringComparer.Ordinal);
                var dem = sortedParams.GetEnumerator();
                var query = new StringBuilder();
                while (dem.MoveNext())
                {
                    string key = dem.Current.Key;
                    string value = dem.Current.Value;
                    if (key == "sign")
                    {
                        continue;
                    }
                    var key = dem.Current.Key;
                    var value = dem.Current.Value;
                    if (key == "sign") continue;
                    if (!string.IsNullOrEmpty(key))
                    {
                        query.Append(value).Append(":");
                    }
                }
                string strvalue = query.ToString().TrimEnd(':') + secret;
                var strvalue = query.ToString().TrimEnd(':') + secret;
                return MD5Encrypt32(strvalue);
            }
            catch (Exception)
@@ -110,22 +104,20 @@
        public static string MD5Encrypt32(string text)
        {
            string pwd = "";
            var pwd = "";
            // 加密后是一个字节类型的数组,这里要注意编码UTF8/Unicode的选择 
            byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(text));
            var s = md5.ComputeHash(Encoding.UTF8.GetBytes(text));
            // 通过使用循环,将字节类型的数组转换为字符串,此字符串是常规字符格式化所得
            for (int i = 0; i < s.Length; i++)
            {
            for (var i = 0; i < s.Length; i++)
                //将得到的字符串使用十六进制类型格式。格式后的字符是小写的字母,如果使用大写(X)则格式后的字符是大写字符 
                pwd = pwd + s[i].ToString("x2");
            }
            return pwd.ToString().ToLower();
            return pwd.ToLower();
        }
        public static long GetTimestamp(DateTime d)
        {
            TimeSpan ts = d.ToUniversalTime() - new DateTime(1970, 1, 1);
            return (long)ts.TotalSeconds;     //精确到秒
            var ts = d.ToUniversalTime() - new DateTime(1970, 1, 1);
            return (long)ts.TotalSeconds; //精确到秒
        }
    }
}
@@ -136,9 +128,12 @@
    /// ApiCommonParam API请求对应的Common参数类
    public class ApiCommonParam
    {
        public ApiCommonParam() { }
        public ApiCommonParam()
        {
        }
        public ApiCommonParam(string appKey, string version, string operateCompanyCode, string ownerCompanyCode, long timestamps)
        public ApiCommonParam(string appKey, string version,
            string operateCompanyCode, string ownerCompanyCode, long timestamps)
        {
            this.appKey = appKey;
            this.version = version;
@@ -147,12 +142,13 @@
            this.timestamps = timestamps;
        }
        public string appKey { get; set; }//appKey
        public string version { get; set; }//接口版本
        public string ownerCompanyCode { get; set; }//数据所属公司编码
        public string operateCompanyCode { get; set; }//操作者所属公司编码
        public string sign { get; set; }//签名
        public long timestamps { get; set; }//请求的时间戳
        public string appKey { get; set; } //appKey
        public string version { get; set; } //接口版本
        public string ownerCompanyCode { get; set; } //数据所属公司编码
        public string operateCompanyCode { get; set; } //操作者所属公司编码
        public string sign { get; set; } //签名
        public long timestamps { get; set; } //请求的时间戳
        //public object reserver { get; set; }//扩展字段
        /// 构造对象
@@ -160,10 +156,10 @@
        {
            // 确保初始化完成
            ApiGlobal.Init();
            // 构造对象(原有逻辑保持不变)
            ApiCommonParam param = new ApiCommonParam(
                ApiGlobal.signConst.appKey,
            var param = new ApiCommonParam(
                ApiGlobal.signConst.appKey,
                ApiGlobal.signConst.version,
                ApiGlobal.signConst.operateCompanyCode,
                ApiGlobal.signConst.ownerCompanyCode,
@@ -172,9 +168,12 @@
            var jsonParam = JsonConvert.SerializeObject(param);
            //JavaScriptSerializer json = new JavaScriptSerializer();
            //string jsonParam = json.Serialize(param);
            var paramDict = JsonConvert.DeserializeObject<Dictionary<string, string>>(jsonParam);
            param.sign = SignUtils.buildCurrentSign(paramDict, ApiGlobal.signConst.appSecret);
            var paramDict =
                JsonConvert.DeserializeObject<Dictionary<string, string>>(
                    jsonParam);
            param.sign = SignUtils.buildCurrentSign(paramDict,
                ApiGlobal.signConst.appSecret);
            return param;
        }
    }
}
}