微信測試號使用筆記:接口配置信息驗證

一、前提條件,要有一臺服務器

請填寫接口配置信息,此信息需要你有自己的服務器資源,填寫的URL需要正確響應微信發送的Token驗證,請閱讀消息接口使用指南

二、C#代碼示例

但是上面鏈接中的代碼是PHP示例代碼,因此我整理了一份C#版的,親測能用。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WXtoken
{
    public partial class index : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            //驗證token
            string poststring = string.Empty;
            string token = "aabbcc";   //驗證token,隨意填寫  
            if (string.IsNullOrEmpty(token))
            {
                return;
            }
            string echostr = HttpContext.Current.Request.QueryString["echostr"];
            string signature = HttpContext.Current.Request.QueryString["signature"];
            string timestamp = HttpContext.Current.Request.QueryString["timestamp"];
            string nonce = HttpContext.Current.Request.QueryString["nonce"];
            if (checkSignature(token, signature, timestamp, nonce, nonce))
            {
                HttpContext.Current.Response.Write(echostr);
                HttpContext.Current.Response.End();
            }
        }
        #region 微信接口對接驗證代碼
        public bool checkSignature(string token, string signature, string timestamp, string nonce, string echostr)
        {
            List<string> list = new List<string>();
            list.Add(token);
            list.Add(timestamp);
            list.Add(nonce);
            list.Sort();

            string res = string.Join("", list.ToArray());
            Byte[] dataToHash = Encoding.ASCII.GetBytes(res);
            byte[] hashvalue = ((HashAlgorithm)CryptoConfig.CreateFromName("SHA1")).ComputeHash(dataToHash);
            StringBuilder sb = new StringBuilder();
            foreach (byte b in hashvalue)
            {
                sb.Append(b.ToString("x2"));
            }

            if (signature == sb.ToString())
                return true;
            else
                return false;
        }
        #endregion
    }
}

三、配置失敗原因整理:

  • 端口錯誤,必須是80或者443端口
  • 參數錯誤,建議從官方文檔複製參數到項目中(我就是有兩個字母寫反了,尷尬)
  • 地址或者Token錯誤

四、文章下載:

點擊下載MarkDown壓縮包

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章