2025-03-28 09:49:56 +08:00

100 lines
2.8 KiB
C#

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<string, string> paraFilter(Dictionary<string, string> map)
{
Dictionary<string, string> result = new Dictionary<string, string>();
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<string, string> map)
{
List<string> keys = new List<string>(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<string, string> map)
{
Dictionary<string, string> 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();
}
}
}