using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Web; namespace PayService { class Utils { public static Dictionary paraFilter(Dictionary map) { Dictionary result = new Dictionary(); if (map == null || map.Count() <= 0) { return result; } foreach (string key in map.Keys) { string value = map[key]; if (key.Equals("sign", StringComparison.CurrentCultureIgnoreCase) || (key.Length >= 8 && key.Substring(0, 8).Equals("reserved", StringComparison.CurrentCultureIgnoreCase))) { continue; } result.Add(key, value); } return result; } public static string createLinkstring(Dictionary map) { List keys = new List(map.Keys); keys.Sort(); string prestr = ""; for (int i = 0; i < keys.Count; i++) { string key = keys[i]; string value = map[key]; if (i == keys.Count - 1) { //拼接时,不包括最后一个&字符 prestr = prestr + key + "=" + value; } else { prestr = prestr + key + "=" + value + "&"; } } return prestr; } public static string getSign(Dictionary map) { Dictionary mapNew = paraFilter(map); string preSignStr = createLinkstring(mapNew); Console.WriteLine("==============================待签名字符串==============================\r\n" + preSignStr); string sign = Sign.sign(preSignStr, Const.privateKey); sign = sign.Replace("\r\n", ""); Console.WriteLine("==============================签名字符串==============================\r\n" + sign); return sign; } public static string UrlEncode(string temp, Encoding encoding) { StringBuilder stringBuilder = new StringBuilder(); for (int i = 0; i < temp.Length; i++) { string t = temp[i].ToString(); string k = HttpUtility.UrlEncode(t, encoding); if (t == k) { stringBuilder.Append(t); } else { stringBuilder.Append(k.ToUpper()); } } return stringBuilder.ToString(); } } }