Web API实现微信公众平台开发-接收数据Post
生活随笔
收集整理的這篇文章主要介紹了
Web API实现微信公众平台开发-接收数据Post
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
介紹
當普通微信用戶向公眾賬號發消息時,微信服務器將POST消息的XML數據包到開發者填寫的URL上。在微信用戶和公眾號產生交互的過程中,用戶的某些操作會使得微信服務器通過事件推送的形式通知到開發者在開發者中心處設置的服務器地址,從而開發者可以獲取到該信息。其中,某些事件推送在發生后,是允許開發者回復用戶的,某些則不允許。
代碼實現
1、接收參數。
2、驗證簽名。
3、數據處理。
[HttpPost][ActionName("CallBack")]public HttpResponseMessage HandleMsgFromWeChat(HttpRequestMessage request){try{var postModel = GetPostModel(request);if (!CheckSignature.Check(postModel.Signature, postModel.Timestamp, postModel.Nonce, Token)){return new HttpResponseMessage{Content = new StringContent("參數錯誤!")};}string xmlContent = request.Content.ReadAsStringAsync().Result;string domain = BqoolWebSite.WebSiteMapping[BqoolWebSiteType.BigCRMWebService][CommonSetting.GetEnvironmentMode()];string url = domain + "/api/WeChat/ProcessXml";var data = new ProcessXmlParam(){Account = "WeChat",UpdateUser = "WeChat",Date = DateTime.UtcNow.ToUnixTimestamp(),Action = BaseRequestParam.ActionType.Add,xml = xmlContent};_nLogger.Info($"WeChat ProcessXml Call BigCRM Web - Url : {url}, data : {data.ToJsonString()}");var result = HttpTools.EncryptPost<ProcessXmlParam, ApiResult>(url, data);_nLogger.Info($"WeChat ProcessXml Call BigCRM Web Result - Url : {url}, result : {result.ToJsonString()}");if (result.Success && result.Data != null){return new HttpResponseMessage{Content = new StringContent(result.Data.ToString())};}return new HttpResponseMessage{Content = new StringContent("錯誤!")};}catch (Exception ex){_nLogger.Error(ex);return new HttpResponseMessage{Content = new StringContent("")};}}/// <summary>/// 驗簽參數/// </summary>/// <param name="content"></param>/// <returns></returns>private PostModel GetPostModel(HttpRequestMessage content){string signature = (from kvp in content.GetQueryNameValuePairs()where kvp.Key == "signature"select kvp.Value).FirstOrDefault();string timestamp = (from kvp in content.GetQueryNameValuePairs()where kvp.Key == "timestamp"select kvp.Value).FirstOrDefault();string nonce = (from kvp in content.GetQueryNameValuePairs()where kvp.Key == "nonce"select kvp.Value).FirstOrDefault();return new PostModel(){Signature = signature,Timestamp = timestamp,Nonce = nonce};}總結
其實整個api過程是很簡單的,主要的是自己業務邏輯的處理。
總結
以上是生活随笔為你收集整理的Web API实现微信公众平台开发-接收数据Post的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: .NET工资低?那肯定是你打开的方式不正
- 下一篇: 再记一次 应用服务器 CPU 暴高事故分