这几年,微信非常流行,也是唯一可以和QQ抗衡的即时通,当然他们是一家子,微信除了有即时通的功能外,还有一些其他的功能,公众号就是其中之一,微信创始人甚至扬言微信可以实现大部分APP的功能,鉴于这样,最近两年很多开发者都转向了微信开发这一块,甚至有些公司也专门做微信开发的,微信公众号可以提供新闻推送,可以进行业务处理等等
本人接触微信开发也不多,只是公司有个项目用到了,但是在经过一次微信开发以后,感觉基本的使用也不难,下面是本人在开发中的一些总结,本人才疏学浅,不排除有讲得不对或者漏了的地方,多多包涵,也望能指出,互相学习,互相进步...
下面是部分笔记
注册公众平台账号
个人只能注册订阅号https://mp.weixin.qq.com
订阅号 服务号 企业号 三者能使用的功能不相同
注册的账号需要跟微信号绑定(微信号需要绑定银行卡)
注册地址:
https://mp.weixin.qq.com/cgi-bin/readtemplate?t=register/step1_tmpl&lang=zh_CN
注册需要邮箱激活
登录微信公众平台
微信公众平台登陆后,用户可以直接使用微信公众平台进行消息群发,添加微信公众号菜单等
给公众号添加测试账号
作为开发人员,可以使用普通微信号来测试功能
登陆公众平台后,在开发》开发者工具》里面可以扫描二维码添加测试账号
此过程需要扫描你微信几次
扫描测试号二维码可以给测试公众号添加测试账号
在功能》群发功能》添加文字群发,
看测试账号是否收到
不过由于上面直接公众平台群发功能是正式的功能,所以一天只能群发一条消息 测试号则比这个权限多
对微信进行接口开发
该功能允许我们调用微信的接口,进行第三方系统的对接,这样我们在微信平台上面的很多操作,就不需要在微信平台上面操作了,我们可以直接在我们自己的系统上面进行微信公众平台的一些操作,比如添加菜单,群发消息,获取用户,消息回复等等
微信|公众平台开发者文档
http://mp.weixin.qq.com/wiki/home/index.html
我们本课程就是基于微信提供的开发文档
刚才注册的公众号如果未认证测拥有的权限是不i一样的
http://mp.weixin.qq.com/wiki/13/8d4957b72037e3308a0ca1b21f25ae8d.html
具体可以查看上面的
开发之前的准备
在开发》基本配置哪里,如果首次进入,则需要同意协议
点击成为开发者后,会为开发者生产appid和appsecret
这两个是公众号和微信服务器进行交互的账号密码
服务器配置
开发者需要先开启服务器配置
填写URL token 消息加密密钥等
URL:开发者用来接收微信消息和事件的接口地址
Token:可以任意填写,用作生成签名k
该Token会和接口URL中包含的Token进行比对,从而验证安全性
EncodingAESKey由开发者手动填写或随机生成,将用作消息体加解密密钥
还可以选择消息加解密方式:明文模式(默认)、兼容模式和安全模式
上面的配置会保存立即生效,需要谨慎操作
添加服务器配置的时候 需要先开启,开启需要补全资料,比如上传头像等
微信是服务器和服务器之间的交换,所以我们需要一台服务器
(虚拟空间,VPS都可以)
搭建一个web测试站,需要注册一个域名(80端口的)
可以是子域名 比如
weixin.bamn.cn
配置域名 80端口
我还需要为填写的URL进行一些操作
如果你的接口是PHP的可以参考官网提供的
我们这里是ASP.NET:
http://weixin.bamn.cn/WeiXinTokenApi.aspx 如果是https则443端口
微信服务器那边会往我们上面的地址 进行get操作,我们接口中可以拿到微信服务器传过来的三个参数signature timestamp nonce
加密/校验(和微信服务器校验-握手)
1获取微信服务器传过来的四个参数
2 对这三个参数进行“字典序排序”
3 拼接三个字符串
4 对拼接的字符串进行sha1加密
4 成功验证 原样返回
具体可以查看WeiXinTokenApi.aspx.cs页面的代码
protected void Page_Load(object sender, EventArgs e) { if (Request.RequestType.ToLower().Equals("post")) { //接收消息 ResponseMsg(); } else { //校验接口 CheckSignature(); } Response.End(); }
检验接口
/// /// 校验方法 /// private void CheckSignature() { try { //1获取微信服务器传过来的四个参数 string signature = Request.QueryString["signature"]; string timestamp = Request.QueryString["timestamp"]; string nonce = Request.QueryString["nonce"]; string echostr = Request.QueryString["echostr"];//该字符串用来成功验证后原样返回 string token = TOKEN; string[] tmpArr = new string[] { token, timestamp, nonce };//2 对这三个参数进行“字典序排序” Array.Sort(tmpArr); string tmpStr = string.Join("", tmpArr);//3 拼接三个字符串 tmpStr = FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr, "SHA1");//4 sha1加密 tmpStr = tmpStr.ToLower(); if (tmpStr == signature) { SetCacheDateTime("Item", tmpStr + ":" + signature + " " + echostr, 3600); //4 成功验证原样返回 HttpContext.Current.Response.Write(echostr); } else { SetCacheDateTime("Item", "验证不通过", 3600); Response.Write("验证不通过");//随便返回 } } catch (Exception ex) { SetCacheDateTime("Item", ex.Message, 3600); Response.Write(ex.Message);//随便返回 }
4-3节-点击菜单跳转链接时的事件推送
4-2节-处理自定义菜单事件返回歌曲名称
4-1节-接收事件推送-BAMN.CN北盟网校
3-10节-补充说明微信接口如何获取音频 视频 图文等的内容
3-9节-接收微信号发过来的链接消息
3-8节-接收微信号的地理位置消息
3-7节-接收小视频消息
3-6节-接收微信号的视频消息
3-5节-接收微信号的语言消息-BAMN.CN北盟网校
3-4节-接收微信号发送的图片消息-BAMN.CN北盟网校
3-3节-响应微信服务器,做一个【客服】自动回复的功能
3-2节-不要在try catch里面进行response.end
3-1节-接收普通微信号发送过来的消息
2-4节-查询菜单(获取菜单的json文本,通常用于同步菜单到网站系
2-3节-删除微信菜单接口的使用
2-2节-反序列化JSON结果
2-1节-自定义菜单创建接口给公众号添加菜单
1-6节-获取微信服务器IP地址
1-5节-添加一个基类Page添加AppID和AppSecret
1-4节-Json反序列化和HttpGet封装和上节课的补充
1-3节 获取access token
1-2节-加密校验(和微信服务器校验-握手)
1-1节-开发前的一些准备注册公众号和准备域名虚拟空间等
如看视频 可以访问http://www.iqiyi.com/u/2086142358
未完待续 希望对你有帮助