<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      微信公眾號開發C#系列-9、多公眾號集中管理

      1、概述

      通過前面8篇關于微信開發相關文章的學習,我們已經對微信常用開發有了一個比較深入的了解。前面的文章都是基于某一特定公眾號的,在現實業務中同一單位個體運營著不至一個公眾號,此時就需要對多個公眾號集中管理,隨意切換。本篇文章主要介紹多公眾號集中管理的方法、表設計、設置默認公眾號、生成指定格式的URL資源服務器、刷新Access_Token等。

      2、公眾號集中管理的方法

      我們知道操作微信公眾號時微信服務器都會返回相應的信息到我們自己的中轉服務器上,涉及多個微信公眾號管理時,我們就需要知道是那個公眾號返回的數據以及我們要操作的是那個公眾號。我們通過集中設計一個公眾號管理的界面就可以完成對多公眾號的管理,下面我們介紹具體的方法供大家參考。

      3、多公眾號管理表設計

      在進行表設計之前,我們先回憶一下我們在申請公眾號時需要填寫的必要信息,如下圖所示 。
      微信公眾號相關核心數據項

      在上圖中,我們可以看出界面上我們標記的5個數據項是必須的,分別為公眾號(OFFICIAL_ID)、應用ID(APP_ID)、應用密鑰(APP_SECRET)、服務器地址(API_URL)、令牌(TOKEN)。我們可以根據我們實際業務擴展其他的字段方便使用。公眾號管理參考表設計如下圖所示。
      微信公眾號參考表設計

      上面的表設計我們對申請各種類型公眾號所需的字段都進行了處理。要做到多公眾號管理,我們可以利用主鍵來切分公眾號,這個主鍵ID就需要放到我們公眾號接口配置信息中的URL中,如下圖所示。
      公眾號配置URL中的ID設置參考

      我們只需要在我們的微信開發服務端得到這個ID值就能知道當前操作的公眾號信息,這是多公眾號管理設計中的精髓。具體參考本文后面的生成指定格式的URL資源服務器的講解。

      4、默認公眾號設置

      默認公眾號就是當前操作的公眾號,所有涉及公眾號的操作都以默認公眾號為基礎。在上一節我們的表設計中有一個IS_DEFAULT當前操作公眾號的字段,只要設置為1就是默認公眾號。特別注意的是所有操作公眾號中只允許有一個默認公眾號,設置為一個公眾號為默認公眾號后,其他的公眾號都要取消默認公眾號的設置。
      要設置默認公眾號只需要調用我們框架提供的接口:

      RDIFrameworkService.Instance.WeixinBasicService.SetDefaultOfficialAccount(UserInfo userInfo, string id);
      

      設置好默認公眾號后,我們可以通過下面的接口得到當前操作的公眾號:

      RDIFrameworkService.Instance.WeixinBasicService.GetCurrentOfficialAccountEntity(UserInfo userInfo);
      

      代碼參考

      /// <summary>
      /// 設置當前公眾號為默認操作公眾號
      /// </summary>
      /// <param name="key">主鍵值</param>
      /// <returns></returns>
      [AjaxOnly]
      [HttpPost]
      [ManagerPermission(PermissionMode.Enforce)]
      public virtual ActionResult SetDefault(string key)
      {
          int returnValue = 0;
          try
          {
              if (!string.IsNullOrEmpty(key))
              {
                  returnValue += RDIFrameworkService.Instance.WeixinBasicService.SetDefaultOfficialAccount(ManageProvider.Provider.Current(), key);
              }
              return Content(returnValue > 0
                  ? new JsonMessage { Success = true, Data = "1", Type = ResultType.Success, Message = RDIFramework.Utilities.RDIFrameworkMessage.MSG3010 }.ToString()
                  : new JsonMessage { Success = false, Data = "0", Type = ResultType.Warning, Message = RDIFramework.Utilities.RDIFrameworkMessage.MSG3020 }.ToString());
          }
          catch (Exception ex)
          {
              return Content(new JsonMessage { Success = false, Data = "-1", Type = ResultType.Error, Message = RDIFramework.Utilities.RDIFrameworkMessage.MSG3020 + ex.Message }.ToString());
          }
      }
      

      設置默認公眾號界面

      5、生成指定格式的URL資源服務器

      在閱讀本節之前,建議參考了解一下我們的微信公眾號開發系列-2、微信公眾平臺接入指南對微信的接入有了一個比較全面的了解。接入服務器地址URL是開發者用來接收微信消息和事件的接口URL,是我們服務器的響應微信請求的地址。
      假設我們自己的服務器域名是www.rdiframework.net,準備用/WeiXin/WeChat/來接收消息,就填寫:

      http://www.rdiframework.net/WeiXin/WeChat/
      

      上面的這個地址針對一個公眾號時可以,但如果對多公眾號管理來說就不能這樣用了,我們可以指定一個ID來區分公眾號的來源:

      http://www.rdiframework.net/WeiXin/WeChat/?id=********
      

      在我們的的微信服務端接入代碼中加上對這個ID的處理即可。

      處理Get請求代碼參考如下:

      [HttpGet]
      [ActionName("Index")]
      public Task<ActionResult> Get(string signature, string timestamp, string nonce, string echostr)
      {
          string currentOfficialId = Request["id"];
          return Task.Factory.StartNew(() =>
          {
              if (string.IsNullOrEmpty(currentOfficialId))
              {
                  return "非法路徑請求!";
              }
      
              WeixinOfficialAccountEntity weixinOfficialAccountEntity = RDIFrameworkService.Instance.WeixinBasicService.GetOfficialAccountEntity(currentOfficialId);
      
              if (CheckSignature.Check(signature, timestamp, nonce, weixinOfficialAccountEntity.Token))
              {
                  return echostr; //返回隨機字符串則表示驗證通過
              }
              else
              {
                  return "failed:" + signature + "," + CheckSignature.GetSignature(timestamp, nonce, weixinOfficialAccountEntity.Token) + "。" + "如果你在瀏覽器中看到這句話,說明此地址可以被作為微信公眾賬號后臺的Url,請注意保持Token一致。";
              }
          }).ContinueWith<ActionResult>(task => Content(task.Result));
      }
      

      處理Post請求代碼參考如下:

      /// <summary>
      /// 最簡化的處理流程
      /// </summary>
      [HttpPost]
      [ActionName("Index")]
      public Task<ActionResult> Post(PostModel postModel)
      {
          string currentOfficialId = Request["id"];      
      
          return Task.Factory.StartNew<ActionResult>(() =>
          {
      
              //沒有參數,帶有id才能知道是訪問哪個公眾號
              if (string.IsNullOrEmpty(currentOfficialId))
              {
                  return new WeixinResult("非法路徑請求!");
              }
      
              WeixinOfficialAccountEntity weixinOfficialAccountEntity = RDIFrameworkService.Instance.WeixinBasicService.GetOfficialAccountEntity(currentOfficialId);
              if (!CheckSignature.Check(postModel.Signature, postModel.Timestamp, postModel.Nonce, weixinOfficialAccountEntity.Token))
              {
                  return new WeixinResult("參數錯誤!");
              }
              postModel.Token = weixinOfficialAccountEntity.Token;
              postModel.EncodingAESKey = weixinOfficialAccountEntity.OfficialKey; //根據自己后臺的設置保持一致
              postModel.AppId = weixinOfficialAccountEntity.AppId; //根據自己后臺的設置保持一致
      
              var messageHandler = new CustomMessageHandler(Request.InputStream, postModel, currentOfficialId, 10);
      
              messageHandler.Execute(); //執行微信處理過程
      
              return new FixWeixinBugWeixinResult(messageHandler);
      
          }).ContinueWith<ActionResult>(task => task.Result);
      }
      

      6、刷新Access_Token

      由于Access Token有效期只有7200秒,而每天調用獲取的次數只有2000次,所以需要將Access Token進行緩存來保證不觸發超過最大調用次數。另外在微信公眾平臺中,絕大多數高級接口都需要Access Token授權才能進行調用,開發者需要使用中控服務器統一進行緩存與更新,以避免各自刷新而混亂。
      獲得Token:我們可以直接使用Senparc.WeiXin SDK的方法。

      Senparc.Weixin.MP.CommonAPIs.CommonApi.GetToken(model.AppId, model.AppSecret).access_token;
      

      通過傳入AppId和Appsecret,微信服務器將給你一個可訪問的Token。

      雖然他幫我們封裝了,但是不用他的方法,我們也可以直接調用微信的接口方法:

      var url = string.Format("https://api.weixin.qq.com/cgi-bin/token?grant_type={0}&appid={1}&secret={2}", grant_type.AsUrlData(), appid.AsUrlData(), secret.AsUrlData());
      AccessTokenResult result = Get.GetJson<AccessTokenResult>(url);
      return result;
      

      這個接口,只有幾個參數,具體參數可以查看幫助文檔 傳送門 成功返回:

      {"access_token":"ACCESS_TOKEN","expires_in":7200}
      

      更新所有TOKEN

      7、微信公眾號管理相關界面參考

      微信主眾號管理主界面

      微信公眾號管理編輯界面

      參考文章

      微信公眾平臺技術文檔-官方

      Senparc.Weixin SDK + 官網示例源代碼

      RDIFramework.NET — 基于.NET的快速信息化系統開發框架 — 系列目錄

      RDIFramework.NET ━ .NET快速信息化系統開發框架 ━ 工作流程組件介紹

      RDIFramework.NET框架SOA解決方案(集Windows服務、WinForm形式與IIS形式發布)-分布式應用

      RDIFramework.NET代碼生成器全新V3.5版本發布-重大升級


      一路走來數個年頭,感謝RDIFramework.NET框架的支持者與使用者,大家可以通過下面的地址了解詳情。

      RDIFramework.NET官方網站:http://www.rdiframework.net/

      RDIFramework.NET官方博客:http://blog.rdiframework.net/

      同時需要說明的,以后的所有技術文章以官方網站為準,歡迎大家收藏!

      RDIFramework.NET框架由專業團隊長期打造、一直在更新、一直在升級,請放心使用!

      歡迎關注RDIFramework.net框架官方公眾微信(微信號:guosisoft),及時了解最新動態。

      掃描二維碼立即關注

      微信號:guosisoft

      posted @ 2019-04-22 13:22  .NET快速開發框架  閱讀(2337)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产亚洲欧美另类一区二区| 亚洲 日韩 国产 制服 在线| 久爱无码精品免费视频在线观看| 保康县| 国产熟女av一区二区三区| 亚洲高清成人av在线| 一区二区不卡国产精品| 亚洲色婷婷综合开心网| 国产成人精品无码播放| 免费午夜无码片在线观看影院| 东京热人妻无码一区二区av| 人人妻人人狠人人爽天天综合网| 亚洲蜜臀av乱码久久| 无码免费大香伊蕉在人线国产| 人妻精品动漫h无码| 国产超碰无码最新上传| 福利一区二区在线观看| 亚洲男同志网站| 国产91精品调教在线播放| 亚洲AV日韩AV永久无码电影| 人人妻人人爽人人澡av| 午夜福利国产区在线观看| 2021亚洲国产精品无码| 盱眙县| 国内精品久久久久影院日本| 国产成人精品亚洲午夜| 成人免费乱码大片a毛片| 麻豆一区二区三区精品视频| 天堂资源在线| 高颜值午夜福利在线观看| 欧美熟妇乱子伦XX视频| 中文字幕亚洲精品人妻| 亚洲精品不卡av在线播放| 中文字幕av一区二区| 亚洲热妇无码av在线播放| 日韩免费码中文在线观看| 日韩高清不卡一区二区三区| 喷潮出白浆视频在线观看| 庄河市| 免费看视频的网站| 国产无遮挡真人免费视频|