Ejemplo n.º 1
0
 /// <summary>
 /// 微信服务器验证
 /// </summary>
 /// <param name="signature">微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。</param>
 /// <param name="timestamp">时间戳</param>
 /// <param name="nonce">随机数</param>
 /// <returns></returns>
 public bool Verify(string signature, string timestamp, string nonce)
 {
     if (signature.length() == 40)
     {
         string value;
         if (string.Compare(nonce, timestamp, StringComparison.Ordinal) >= 0)
         {
             string other = nonce;
             nonce     = timestamp;
             timestamp = other;
         }
         if (string.Compare(timestamp, token, StringComparison.Ordinal) >= 0)
         {
             value = timestamp;
             if (string.Compare(nonce, token, StringComparison.Ordinal) >= 0)
             {
                 timestamp = nonce;
                 nonce     = token;
             }
             else
             {
                 timestamp = token;
             }
         }
         else
         {
             value = token;
         }
         if (SHA.Sha1(AutoCSer.Extension.String_Weixin.ConcatBytes(nonce, timestamp, value)).checkLowerHexNotNull(signature))
         {
             return(true);
         }
     }
     AutoCSer.Log.Pub.Log.add(Log.LogType.Debug | Log.LogType.Info, "微信服务器验证错误 signature[" + signature + @"] timestamp[" + timestamp + "] nonce[" + nonce + "] token[" + token + "]");
     return(false);
 }
Ejemplo n.º 2
0
 /// <summary>
 /// 获取签名
 /// </summary>
 /// <param name="values"></param>
 /// <returns></returns>
 private static string getSignature(string[] values)
 {
     Array.Sort(values, string.CompareOrdinal);
     return(SHA.Sha1(Extensions.StringExtensionWeixin.ConcatBytes(values)).toLowerHex());
 }