首次接受這個項目,看了微信的API,雲裡霧裡,經過幾經測試,理清思路
開發者自個申請,微信API給出四個參數:
下面我解釋下
signature 是微信加密簽名 即:微信服務器將 timetamp nonce token(你提交的)使用SHA1加密後 會使用GET方式發送給你。
timestamp是騰訊服務器發送的一個時間戳
nonce是騰訊服務器發送的一個隨機數
成功申請的關鍵是在下面,上面的幾個參數只是 微信提供 用戶請求--->你自己的網站 的一個驗證方式。
echostr就是 騰訊服務器發送的一個隨機字符串 這個需要你在自己網站接受後 使用輸出流 Respons.Write(echostr);
記住最好在輸出完畢終止流 Response.End(); 然後就可以成功申請了。
參數 | 描述 |
signature
微信加密簽名
timestamp
時間戳
nonce
隨機數
echostr
隨機字符串
- private void Valid()
- {
- string echoStr = Request.QueryString["echoStr"].ToString();
- if (CheckSignature())
- {
- if (!string.IsNullOrEmpty(echoStr))
- {
- Response.Write(echoStr);
- Response.End();
- }
- }
- }
- private bool CheckSignature()
- {
- string signature = Request.QueryString["signature"].ToString();
- string timestamp = Request.QueryString["timestamp"].ToString();
- string nonce = Request.QueryString["nonce"].ToString();
- string[] ArrTmp = { Token, timestamp, nonce };
- Array.Sort(ArrTmp); //字典排序
- string tmpStr = string.Join("", ArrTmp);
- tmpStr = FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr, "SHA1");
- tmpStr = tmpStr.ToLower();
- if (tmpStr == signature)
- {
- return true;
- }
- else
- {
- return false;
- }
- }