在下目前已经无力吐槽签名算法这事了,现在贴上自己写的代码。希望可以节省各位同学的实际开发以及阅读开发文档的时间。
当然主要的还是阅读官方开发文档的时间,反正在下不再想看见那些东西。
PS:对于本人写的代码,请尽管在评论里喷,谁知道我会不会回呢。
首先,.NET开发的同学可以使用 SortedDictionary
////// 获取Dictionary /// public SortedDictionaryDataDictionary { get; }
其他方法:
///
MD5签名:
////// 生成签名,详见签名生成算法 /// ///签名, sign字段不参加签名 public string Sign() { //转url格式 var str = ToUrl();
//在string后加入API KEY str += "&key=" + _wxPayConfig.KEY;
//MD5加密 var md5 = MD5.Create(); var bs = md5.ComputeHash(str.ToBytes(Encoding.UTF8)); var sb = new StringBuilder(); foreach (byte b in bs) { sb.Append(b.ToString("x2")); }
//所有字符转为大写 return sb.ToString().ToUpper(); }
SHA1签名:
public string Sha1Sign() { //转url格式 var str = ToUrl();
//sha1加密 var sha1 = SHA1.Create(); var bs = sha1.ComputeHash(str.ToBytes(Encoding.UTF8)); var sb = new StringBuilder(); foreach (var b in bs) { sb.AppendFormat("{0:x2}", b); }
//所有字符转为大写 return sb.ToString().ToLower(); }