2021年2月9日星期二

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

介绍

当普通微信用户向公众账号发消息时,微信服务器将POST消息的

代码实现

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  request.Content.ReadAsStringAsync().Result;    string domain = BqoolWebSite.WebSiteMapping[BqoolWebSiteType.BigCRMWebService][CommonSetting.GetEnvironmentMode()];    string url = domain + "/api/WeChat/Process";    var data = new Process= "WeChat",     UpdateUser = "WeChat",     Date = DateTime.UtcNow.ToUnixTimestamp(),     Action = BaseRequestParam.ActionType.Add,     = "WeChat Process");    var result = HttpTools.EncryptPost<Process(url, data);    _nLogger.Info($"WeChat Process");    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过程是很简单的,主要的是自己业务逻辑的处理。









原文转载:http://www.shaoqun.com/a/540610.html

跨境电商:https://www.ikjzd.com/

mail.ru:https://www.ikjzd.com/w/2232

zappos.com:https://www.ikjzd.com/w/330


介绍当普通微信用户向公众账号发消息时,微信服务器将POST消息的代码实现1、接收参数。varpostModel=GetPostModel(request);2、验证签名。if(!CheckSignature.Check(postModel.Signature,postModel.Timestamp,postModel.Nonce,Token)){returnnewHttpResponseMessa
邮乐:邮乐
etsy:etsy
报告解读| 2020旺季营销报告解析:报告解读| 2020旺季营销报告解析
321电商早报0325丨亚马逊将推出视频广告功能:321电商早报0325丨亚马逊将推出视频广告功能
口述:成为美女上司的性玩偶我苦不堪言上司性玩偶美女:口述:成为美女上司的性玩偶我苦不堪言上司性玩偶美女

没有评论:

发表评论