** 通讯机制 **
** 接入步骤 **
1、填写服务器配置
2、验证服务器地址的有效性
3、依据接口文档实现业务逻辑
第1步中服务器配置包含服务器地址(URL)、令牌(Token) 和 消息加解密密钥(EncodingAESKey)。 可在开发–>基本配置–>服务器配置中配置,测试号没有EncodingAESKey
服务器地址即公众号后台提供业务逻辑的入口地址,目前只支持80端口,之后包括接入验证以及任何其它的操作的请求(例如消息的发送、菜单管理、素材管理等)都要从这个地址进入。接入验证和其它请求的区别就是,接入验证时是get请求,其它时候是post请求;
Token可由开发者可以任意填写,用作生成签名(该Token会和接口URL中包含的Token进行比对,从而验证安全性);
EncodingAESKey由开发者手动填写或随机生成,将用作消息体加解密密钥。本例中全部以未加密的明文消息方式,不涉及此配置项。
第2步 开发者提交信息后,微信服务器将发送GET请求到填写的服务器地址URL上,GET请求携带参数如下表所示:
1 | 参数 描述 |
开发者通过检验signature对请求进行校验(下面有校验方式)。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。加密/校验流程如下:
1)将token、timestamp、nonce三个参数进行字典序排序
2)将三个参数字符串拼接成一个字符串进行sha1加密
3)开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
Spring Boot实现:
1 | "weixin.do") ( |
1 | package com.hu.utils; |
启动后保证在本地访问没问题,之后使用内网映射工具(如Ngrok)到公网。然后,在测试号中配置:
配置成功后说明,公众号应用已经能够和微信服务器正常通信,公众号已经接入到微信公众平台了。
** access_token **
access_token是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用access_token。开发者需要进行妥善保存。access_token的存储至少要保留512个字符空间。access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效。
接口调用上限每天2000次,所以不能调用太频繁。
公众号可以使用AppID和AppSecret调用本接口来获取access_token。AppID和AppSecret可在“微信公众平台-开发-基本配置”页中获得(需要已经成为开发者,且帐号没有异常状态)。
调用接口时,请登录“微信公众平台-开发-基本配置”提前将服务器IP地址添加到IP白名单中,点击查看设置方法,否则将无法调用成功。
接口调用请求说明
https请求方式: GET https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
1 | 参数 是否必须 说明 |
返回说明
正常情况下,微信会返回下述JSON数据包给公众号:
1 | {"access_token":"ACCESS_TOKEN","expires_in":7200} |
参数说明
1 | 参数 说明 |
1 | {"errcode":40013,"errmsg":"invalid appid"} |
返回码说明
1 | 返回码 说明 |
代码实现获取access_token
1 |
|
启动项目,浏览器访问,控制台:
1 | ----启动AccessTokenController----- |
OK!