服务器9大接口 #
- 用户分组接口: 通过分组接口,可以在后台为用户移动、创建和修改分组,比如把班级的同学分为男生和女生二组。
- 上传下载多媒体文件: 通过这个接口,公众号可以在需要的时候在微信服务器上传下载多媒体文件
订阅号接口 #
- 会话界面的自定义菜单
- 多客服接口,提供贴心快捷的客服服务
- 获取用户地址位置,精确提供服务
- 高级群发接口,实现更灵活的群发能力
- 用户分组接口,方便管理用户
一、域名、服务器及ngrok环境配置 #
ngrok #
内网穿透利器
localtunnel #
通过随机域名访问本地服务器
- 不运动自定义域名映射
- 映射以后如果本机服务重启,则映射会失效
$ npm install -g localtunnel
$ lt --port 9090
配置接入微信公众号 #
微信公众平台开发者文档
微信公众号
申请微信测试号
验证公众号 #
- 将token、timestamp、nonce三个参数进行字典排序
- 将三个参数字符串拼接成一个字符串进行sha1加密
- 将加密后的字符串与
signature
对比,如果相同,表示这个请求来源于微信,我们直接原样返回echostr
参数内容,接入,验证就成功了。
编写加密认证逻辑 #
var Koa = require('koa');
var sha1 = require('sha1');
var config = {
wechat:{
appID:'wx4bc04730ea7aa5ca',
appSecret:'1cbfbc33bf3af7aced8e89ea06dcdb98',
token:'zhufengpeixun'
}
}
var app = new Koa();
app.use(function* (){
var token = config.wechat.token;
var signature = this.query.signature;
var nonce = this.query.nonce;
var timestamp = this.query.timestamp;
var echostr = this.query.echostr;
var str = [token,timestamp,nonce].sort().join('');
var shaStr = sha1(str);
if(shaStr == signature){
this.body = echostr+'';
}else{
this.body = 'wrong';
}
});
app.listen(9090);
console.log('start listening at 9090');
使用QQ浏览器代理调试端口 #
下载QQ浏览器
QQ浏览器
安装微信调试插件
qqbrowser://extensions/index
微信中消息与回复的种类 #
接口说明 #
- 微信公众号接口只能接收80端口
- 微信后台配置的URL是唯一能接收到消息的地址,我们在公众号中的所有操作都是与这个URL进行交互的
- 调用微信接口的时候必须使用https协议
- 用户向公众号发送消息时,会传过来OpenID,这个OpenID是用户微信号加密之后的值,每个用户在每个公众号中的OpenID是唯一的
- 在开发阶段要注意报错的信息,以便根据报错码解决问题
- 在和微信服务器交互的时候,需要满足各个接口的规范、调用频率限制,也要注意模板消息、用户数据等敏感信息的使用规范,比如微信认证分为资质认证和名称认证两部分,只需要资质认证通过,就可以获得接口每一个接口的调用次数是有上限的。
access_token #
公众号的全局统一token,可以看做是与微信交互的一把钥匙
- access_token每2个小时自动失效,需要重新获取
- 只要更新了access_token,之前那个就自动失效了
- 可以让我们的系统每2个小时刷新一下token,这样无论何时调用接口token始终是有效的
- 为了方便调用,我们需要把token保存在唯一的一个地方,并且持久化,不要放在内存里
获取access_coken
实现自动回复 #
- 在服务器端处理POST请求并解析XML请求体
- 解析数据包,获得数据包的消息类型或事件类型
- 拼装出定义好的消息
- 包装成XML的格式
- 在5秒钟内返回客户端
上传临时素材之图片和视频 #
永久素材接口 #
用户分组 #
获取用户私密信息 #
地理位置和用户资料 #
菜单 #
二维码 #
JS-SDK #