亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ASP.NET?MVC開發接入微信公共平臺的方法

發布時間:2022-04-29 15:49:33 來源:億速云 閱讀:141 作者:iii 欄目:開發技術

這篇文章主要講解了“ASP.NET MVC開發接入微信公共平臺的方法”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“ASP.NET MVC開發接入微信公共平臺的方法”吧!

申請微信公共賬號

既然要接入微信公共平臺,微信公共號是必須的(當然如果只是測試的話也可以申請微信公共平臺接口測試賬號),來這里微信公共平臺 申請微信公共號(注:申請微信公共號不能用已綁定微信的郵箱),微信公共平臺有自己的官方文檔,官方文檔有不少資料,可以多看看,開發者模式默認是關閉的,需要配置并啟用,如下圖:

ASP.NET?MVC開發接入微信公共平臺的方法

URL即你的網站處理微信模塊,必須是HTTP://開頭的網站,筆者自己之前接入幾天一直失敗,最終發現是因為自己網站加密了用的是HTTPS,這個需要注意HTTPS網站是不可以的,Token是不會驗證成功的,Token是自定義的不少于3個字符,EncodingAESKey會在加密消息時用到。

編寫網站邏輯

編寫微信接口測試代碼,創建控制器,在控制器中編寫代碼,編寫一個Action 方法用于微信服務器檢驗,Token是否配置成功或者接入成功。既然使用MVC,本人比較懶,懶得用Request.QueryStrings["echostr"] 這樣的方法來一個一個獲取參數,于是創建了一個Model,用來讓微信服務器請求時參數自動適配到Model的相應屬性,便于訪問,便于寫代碼,在微信公共平臺的官方文檔中可以看到用到的參數

ASP.NET?MVC開發接入微信公共平臺的方法

于是創建一個這樣的Model

ASP.NET?MVC開發接入微信公共平臺的方法

 public class WeChatRequestModel
    {
    public string signature { get; set; }
    public string timestamp { get; set; }
    public string nonce { get; set; }
    public string echostr { get; set; }
    }

接著看官方文檔,接下來開始在控制器中編寫代碼,開始驗證

ASP.NET?MVC開發接入微信公共平臺的方法

根據校驗流程開始編寫代碼,也可參考官方給出PHP代碼編寫相應的 .NET 代碼

下面給出我的示例代碼,在接入沒成功之前參考許多別人的代碼,不一定是最好的,你也可以參考一些別人的代碼(這里說明一下,驗證signature是否正確是從安全方面考慮的,你也可以將GET請求中的echostr參數直接輸出,建議還是驗證一下,畢竟安全更重要一些)

ASP.NET?MVC開發接入微信公共平臺的方法

用來讓微信服務器訪問的Action 方法代碼

ASP.NET?MVC開發接入微信公共平臺的方法

配置微信公共平臺上的信息

配置接入服務器,圖中的參數都必須配置,Token要與網站代碼中的Token保持一致,EncodingAESKey直接隨機生成就可以,當然自己寫也是可以的,只要你愿意,消息加解密方式,建議開發測試階段選擇明文模式以及兼容模式,正式上線使用后選擇安全模式。最后第一項也是最重要的一項,URL,再次強調必須是HTTP網站,HTTPS是驗證不成功的,如果是HTTPS能改成HTTP的話要改成HTTP,Url寫成剛才我們編寫的用于訪問的驗證的Action的Url地址,即要訪問這個控制器時請求的URL地址,如: http://www.example.com/Home/Valid/

ASP.NET?MVC開發接入微信公共平臺的方法

 public class HomeController :Controller
       {
          /// <summary>
          /// 定義Token,與微信公共平臺上的Token保持一致
          /// </summary>
          private const string Token = "StupidMe";
  
           /// <summary>
           /// 驗證簽名,檢驗是否是從微信服務器上發出的請求
           /// </summary>
           /// <param name="model">請求參數模型 Model</param>
           /// <returns>是否驗證通過</returns>
           private bool CheckSignature(Model.FormatModel.WeChatRequestModel model)
           {
               string signature, timestamp, nonce, tempStr;
               //獲取請求來的參數
               signature = model.signature;
               timestamp = model.timestamp;
               nonce = model.nonce;
               //創建數組,將 Token, timestamp, nonce 三個參數加入數組
              string[] array = { Token, timestamp, nonce };
              //進行排序
               Array.Sort(array);
               //拼接為一個字符串
               tempStr = String.Join("", array);
               //對字符串進行 SHA1加密
               tempStr = FormsAuthentication.HashPasswordForStoringInConfigFile(tempStr, "SHA1").ToLower();
               //判斷signature 是否正確
               if (tempStr.Equals(signature))
              {
                   return true;
               }
               else
               {
                   return false;
               }
           }
  
   
           public void Valid(Model.FormatModel.WeChatRequestModel model)
           {
               //獲取請求來的 echostr 參數
               string echoStr = model.echostr;
              //通過驗證
               if (CheckSignature(model))
               {
                  if (!string.IsNullOrEmpty(echoStr))
                  {
                      //將隨機生成的 echostr 參數 原樣輸出
                       Response.Write(echoStr);
                       //截止輸出流
                       Response.End();
                   }
               }
           }
       }

感謝各位的閱讀,以上就是“ASP.NET MVC開發接入微信公共平臺的方法”的內容了,經過本文的學習后,相信大家對ASP.NET MVC開發接入微信公共平臺的方法這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

天气| 靖江市| 楚雄市| 益阳市| 鲁山县| 分宜县| 响水县| 南平市| 兴和县| 曲松县| 巴林左旗| 咸阳市| 盐山县| 仁化县| 山东| 远安县| 柞水县| 平谷区| 河南省| 琼海市| 咸丰县| 营山县| 盐亭县| 大悟县| 石阡县| 普宁市| 江西省| 顺平县| 纳雍县| 项城市| 杭锦旗| 丰原市| 万宁市| 山阴县| 都匀市| 五常市| 剑河县| 通道| 永丰县| 中宁县| 通榆县|