导航
导航
文章目录
  1. 微信号的功能和分类
    1. 订阅号和服务号的差别
  2. 接入微信公众号
    1. 配置微信公众号
    2. 验证公众号
  3. 公众号消息类型
  4. 开发前注意事项
  5. access_token
  6. 微信中如何引入网页
  7. SDK与公众号的区别

nodejs微信公众号开发笔记

这篇文章只是一个学习笔记的形式,所以前后没有太强的逻辑性。

微信号的功能和分类

微信公众平台的账号主要分为企业号,订阅号和服务号,企业号现在改名为企业微信,同时微信新出了一种叫小程序的开放功能。

企业号不太适合个人小型的开发,为企业或者组织提供移动应用入口,帮助企业建立与员工、上下游供应商及企业应用间的连接。订阅号比较适合于个人和小团队,主要用于信息传播,帮助管理用户以及和用户互动。比如撰写文章,咨询传播,消息定制能。服务号适用于企业和组织,提供更强大的业务服务于用户管理能力。比如支付,智能接口等。认证之后的微信公众号会开放更多的接口和功能。

订阅号和服务号的差别

  1. 订阅号和服务号在微信中出现的位置不同;
  2. 单月发送的消息数量不同,订阅号一天可以发送一条,服务号一个月最多四条;
  3. 订阅号没有9大接口和支付功能。

服务号的九大接口有哪些呢?

  1. 语音识别
  2. 客服接口
  3. OAuth 2.0网页授权
  4. 生成带参数的二维码
  5. 获取用户地理位置
  6. 获取用户基本信息
  7. 获取关注者列表
  8. 用户分组接口
  9. 上传下载多媒体文件

接入微信公众号

首先,要配置微信公众号后台,然后,需要验证公众号。

配置微信公众号

配置微信公众号需要填写URL,Token和EncodingAESKey,URL是开发者用来接收微信消息的接口URL,Token由开发者任意填写,来生成一个签名,与接口URL进行比对,保证安全。EncodingAESKey是随机生成,用作消息体加密和解密的密钥。

验证公众号

验证微信公众号的流程如下:

  1. 将微信服务器发来的token、timestamp、nonce三个参数进行字典排序;
  2. 将上面进行排序后的字符串拼接成一个字符串进行sha1加密;
  3. 将加密后的字符串与signature对比,如果相同表示这个请求来源于微信,直接原样返回echostr参数内容,验证成功。

部分代码实现如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
var config = {
wechat: {
appID: 'xxxxxxxxx',
appSecret: 'gggggggg',
token: 'wwwwwwwwww'
}
}
var app = new Koa()
app.use(function *(next) {
var token = config.wechat.token
var signature = this.query.signature
var nonce = this.query.nonce
var timestamp = this.query.timestamp
var ecostr = this.query.ecostr
var str = [token, timestamp, nonce].sort().join('')
var sha = sha1(str)
if (sha === signature) {
this.body = ecostr + ''
} else {
this.body = 'wrong'
}
})
app.listen(1234)

公众号消息类型

公众号可以发送的消息类型主要有文本消息,图片消息,语音消息,视频消息,小视频消息,地理位置消息和链接消息。消息内容都是XML格式的。

开发前注意事项

  1. 微信公众号接口只支持80端口;
  2. 微信后台配置的URL是唯一能接收到消息和事件的入口,在公众号中的所有操作都是基于这个URL进行交互的;
  3. 调用所有微信接口时几乎全部使用https协议;
  4. 用户向公众号发送消息时,会传来OpenID,该OpenID是用户微信号加密后的值,每个用户在每个公众号中的OpenID是唯一的;
  5. 在开发阶段要注意报错信息,全局返回码非常重要;
  6. 在和微信服务器交互的时候,需要满足各个接口的规范限制,调用频率限制,也要特别注意模板消息,用户数据等敏感信息的使用规范。

access_token

使用access_token要注意两点,access_token每两个小时自动失效,需要重新获取。access_token只要更新了,之前的那个就不能用了。所以,我们的系统需要每隔两个小时启动去刷新一次票据,这样无论何时我们内部调用接口,该票据始终是最新的。为了方便频繁调用,需要把票据存储在一个地方,并且是唯一的一个地方。有了access_token以后就可以做任何接口允许的事情啦。完成请求处理需要5个步骤:

  1. 处理POST类型的控制力逻辑,接收XML数据包
  2. 解析数据包,获得数据包里的数据
  3. 拼装定义好的消息
  4. 包装成XML的格式
  5. 5s内返回

微信中如何引入网页

  1. 绑定域名
  2. 引入JS文件
  3. JS SDK初始化

SDK与公众号的区别

公众号:是微信这个原生应用中,开发的特殊账号,让很多人可以通过原生的聊天界面,与公众号互动,其实就是与我们的服务器互动。
微信的SDK:不是在公众号中直接使用的,而是在微信内置浏览器中使用的。
SDK的作用:搭建了一座桥,让我们可以在微信内置浏览器的网页中调用微信的原生应用,以实现拍照、语音、及扫一扫等功能。
主要用到的SDK接口如下:

  1. 基础接口:判断当前微信客户端是否支持指定JS接口,有了这个判断,你就可以大胆的在网页中使用。
  2. 分享接口:可以自定义分享给好友的内容,比如标题啊,封面啊,甚至是描述,这样就可以实现每个人分享出去的同一个网页内容是不同的,千人千面。
  3. 图像接口:最强大最实用的一个功能,如果是做微信应用的话,这个可以大大增加你的发挥空间。可以让你通过手机拍照或者相册选图级预览,甚至上传和下载,连存图片的服务器你都不用准备。
  4. 音频接口:除图像接口外,另外一个更强大的接口,可以录音,可以播放语音,可以上传和下载语音。
  5. 智能接口:提供了设备信息,获取当前的网络状况。
  6. 地理位置接口
  7. 界面操作
  8. 摇一摇,扫一扫
本文总阅读量: