微信公众号入门学习1_使用C#,ASP.NET APIController如何公众号
前言: ?本文是以微信公众号中的订阅号(个人)来进行简单介绍,本人也是刚刚开始学习,有不足之处,欢迎批评指正。 先粘贴2个帮助链接: 入门指引:http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1472017492_58YV5&token=&lang=zh_CN 微信开发介绍-源代码分享:http://www.cnblogs.com/pmars/p/3680615.html ? 1-去微信公众平台申请属于你的订阅号。 ?https://mp.weixin.qq.com/ 基本信息如下: 2-点击菜单:开发--基本配置: 3-点击修改配置: 为了方便入手:URL必填,Token自己起名,EncodingAESKey随机生成即可,最后一个使用明文方式。 ?URL:自己代码后生成的可以在外网访问的接口地址,可以使用一般处理程序或者MVC中API控制器等。下面将会介绍服务器代码写法; Token:用于验证服务器消息是否来自微信服务器; EncodingAESKey:消息加密钥匙,如果第四个选项使用明文方式,不需理会,咱们随机生成即可。 4-准备微信服务器接入代码服务器接口: 将API项目发布后,COPY到外网可以访问的服务器中,并部署到IIS上。 一版路径如下:http://服务器域名(必须80端口)/站点名/GzhTest/Check 这一步可参考文章: 入门指引:http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1472017492_58YV5&token=&lang=zh_CN 微信开发介绍-源代码分享:http://www.cnblogs.com/pmars/p/3680615.html public static HttpResponseMessage GetReturn(string message) { return new HttpResponseMessage { Content = new StringContent(message,Encoding.UTF8,"text/html") }; } /// <summary> /// 公众号接入测试 </summary> <param name="signature">微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。</param> <param name="timestamp">时间戳<param name="nonce">随机数<param name="echostr">随机字符串<returns>开发者通过检验signature对请求进行校验(下面有校验方式)。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。</returns> [HttpGet] [Route(Check)] public HttpResponseMessage Check(string signature,string timestamp,1)">string nonce,1)"> echostr) { var myToken = ConfigurationManager.AppSettings[myToken]; var list = new [] { myToken,timestamp,nonce }; Array.Sort(list); var sortStr = string.Join("",list); var sha1Str = FormsAuthentication.HashPasswordForStoringInConfigFile(sortStr,1)">SHA1).ToLower(); if (sha1Str == signature && !string.IsNullOrEmpty(echostr)) //根据微信的验证规则做判断 return GetReturn(echostr); return GetReturn(error); } ? 5-接入微信服务器: 将上面接口地址放入URL中,即可,最后提交确认。 ? ? 点击提交按钮。若提示”token验证失败”,请认真检查代码或网络链接等。 ?若token验证成功,会自动返回基本配置的主页面,点击启动按钮 6-备注:本人遇到过token验证失败,我的原因是因为接口直接返回要求的随机字符串,但是这里使用API,似乎必须是HttpResponseMessage , 如果是一般处理程序,使用: HttpContext.Current.Response.Write(echoString);
HttpContext.Current.Response.End();
? ? ? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |