虽然公众号都做好了,但是我还是有些懵逼。所以必须要抽出时间好好阅读一下微信开发文档。
我先总结一个知识要点把。微信公众号分为订阅号和服务号,以后可能还会有小程序的开发,目前先不考虑这个。订阅号和服务号的差别在于服务号能掉的接口多一些,对比如下:
详细:https://www.zhihu.com/question/21289814 知乎大神的归纳十分到位。
基本上认证的订阅号和未认证的服务号功能差不多。认证每年需要300元钱,但也可防止微信号被其他人占用,所以企业的公众号还是很有必要认证的。
申请:http://kf.qq.com/menu/5143_1.html
认证:http://kf.qq.com/faq/120911VrYVrA130620u2iA7n.html
下面讲哪些情况需要开发者模式:
1. 语音识别
2. 生成带参的二维码
3. 用户地理位置(签到)
4. 用户基本信息(论坛)
5. 用户分组
6. 上传下载文件
详细:https://www.zhihu.com/question/20956354 知乎大神的归纳十分到位。
开发者模式:
拥有同一接口,任何交互行为都先走这个接口。接口的作用大体分为两类:
一、验证消息是否来自微信:
加密/校验流程如下:
- 将token、timestamp、nonce三个参数进行字典序排序
- 将三个参数字符串拼接成一个字符串进行sha1加密
- 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
此项请求方式为get.
字典序:Arrays.sort(arr);
Sha1加密:网上一大堆。http://www.cnblogs.com/lhw1025/p/5876660.html
二、回复消息
微信发送的消息类型是XML,所以我们需要把XML转成JSON,并从中获取所需要的
参数 描述
ToUserName 开发者微信号
FromUserName 发送方帐号(一个OpenID)
CreateTime 消息创建时间 (整型)
MsgType text
Content 文本消息内容(收到的)
MsgId 消息id,64位整型
然后再把回复的内容修改,ToUserName和FromUserName互换,组成JSON再转成XML为msg,
最后输出:
PrintWriter out = response.getWriter();
out.print(msg);
三、获取用户信息
仔细阅读开发者文档,仔细阅读开发者文档,仔细阅读开发者文档,重要的事情说三遍:https://mp.weixin.qq.com/wiki/4/9ac2e7b1f1d22e9e57260f6553822520.html
url=”https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect”
具体请求看文档,这里写思路。 - 通过openid是否为空或null判断是否已授权,如若不为空则授权并:
验证当前access_token是否可用,若不可用,刷新access_token,
将用户信息放入session中。 - 若openid为空则表示需要进行授权操作,首先用state判断是否来自微信请求,若state为空或null则重写url,并重定向。
- 若来自微信请求,则判断code是否为空,若code为空则用户不同意授权操作,可进行返回操作,酌情处理。
- 若code有值则同意授权操作,先用code换取access_token,openid, 通过openid拉取用户信息
四、模板消息
1、模板消息调用时主要需要模板ID和模板中各参数的赋值内容;
2、模板中参数内容必须以".DATA"结尾,否则视为保留字;
3、模板保留符号"{{ }}"。
首先,在公众号平台配置模板,并获取模板template_id。
url为模板消息的详情,
json的格式要与公众号平台上配置的一致。
处理各种消息,最重要的是写2个方法,XML>JSON,JSON>XML,还有通过URL类读取XML信息的方法。
热门评论
while(){
System.out.println("Very Good ,Thank You Very Much.....");
}