100 lines
2.8 KiB
C#
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();
|
|
}
|
|
}
|
|
}
|