服务器9大接口 #

  1. 用户分组接口: 通过分组接口,可以在后台为用户移动、创建和修改分组,比如把班级的同学分为男生和女生二组。
  2. 上传下载多媒体文件: 通过这个接口,公众号可以在需要的时候在微信服务器上传下载多媒体文件

订阅号接口 #

  1. 会话界面的自定义菜单
  2. 多客服接口,提供贴心快捷的客服服务
  3. 获取用户地址位置,精确提供服务
  4. 高级群发接口,实现更灵活的群发能力
  5. 用户分组接口,方便管理用户

一、域名、服务器及ngrok环境配置 #

ngrok #

内网穿透利器

localtunnel #

通过随机域名访问本地服务器

$ npm install -g localtunnel
$ lt --port 9090

配置接入微信公众号 #

微信公众平台开发者文档 微信公众号 申请微信测试号

验证公众号 #

  1. 将token、timestamp、nonce三个参数进行字典排序
  2. 将三个参数字符串拼接成一个字符串进行sha1加密
  3. 将加密后的字符串与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浏览器代理调试端口 #

  1. 下载QQ浏览器 QQ浏览器

  2. 安装微信调试插件

    qqbrowser://extensions/index
    

微信中消息与回复的种类 #

接口说明 #

access_token #

公众号的全局统一token,可以看做是与微信交互的一把钥匙

获取access_coken

实现自动回复 #

  1. 在服务器端处理POST请求并解析XML请求体
  2. 解析数据包,获得数据包的消息类型或事件类型
  3. 拼装出定义好的消息
  4. 包装成XML的格式
  5. 在5秒钟内返回客户端

上传临时素材之图片和视频 #

永久素材接口 #

用户分组 #

获取用户私密信息 #

地理位置和用户资料 #

菜单 #

二维码 #

JS-SDK #