日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Web API实现微信公众平台开发-接收数据Post

發布時間:2023/12/4 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Web API实现微信公众平台开发-接收数据Post 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

介紹

當普通微信用戶向公眾賬號發消息時,微信服務器將POST消息的XML數據包到開發者填寫的URL上。在微信用戶和公眾號產生交互的過程中,用戶的某些操作會使得微信服務器通過事件推送的形式通知到開發者在開發者中心處設置的服務器地址,從而開發者可以獲取到該信息。其中,某些事件推送在發生后,是允許開發者回復用戶的,某些則不允許。

代碼實現

1、接收參數。

var postModel = GetPostModel(request);

2、驗證簽名。

if (!CheckSignature.Check(postModel.Signature, postModel.Timestamp, postModel.Nonce, Token)){return new HttpResponseMessage{Content = new StringContent("參數錯誤!")};}

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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。