微信公众号分为订阅号和服务号,订阅号不支持模板消息,但是每天可以群发消息;而服务号一个月可以群发四次消息。认证过的服务号是可以使用模板消息的,认证需要 money,而订阅号就需要有内测的权限,微信对订阅号正在启用模板消息灰度测试,所以很多是不能自己测试的。但是可以使用测试号。不过值得注意的是,测试号只能用于测试,不能用于向正是号推送消息等。
功能实现
- 首先申请测试号,测试号申请地址
- 申请登录之后,可以看到已经生成的
appID
和 appsecret
,这两个是获取公众号的 accessToken 信息必不可少的。
- 对于公众号模板消息测试而言,接口配置信息 和 JS接口安全域名 可以略过不用配置。
- 测试号二维码需要关注,接收模板消息必须关注。模板消息接口需要按照要求增加一个模板。这样,准备工作就做好了,接下来可以进行代码了。
- 对应请求信息的 url 可以在
体验接口权限表
中点击对应的链接进行查看。
1 2 3 4 5 6 7 8 9 10 11 12
| private static String tokenApi = "https://api.weixin.qq.com/cgi-bin/token?grant_type=" + grant_type + "&appid=" + appid + "&secret=" + secret;
private static String userListUrl = "https://api.weixin.qq.com/cgi-bin/user/get?access_token=";
private static String userInfoUrl = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=";
private static String sendUrl = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=";
|
问题解决
- 出现
"errcode":40003,"errmsg":"invalid openid rid: 61b87426-7ecce312-0478a848"
的错误:
解决方案: 设置发送对象的键为 touser
,不要为 toUser
或者 openid
示例如下:
1 2 3 4 5
| paramData.put("touser", openid); paramData.put("template_id", templateId); paramData.put("url", "xxx/login");
paramData.put("data", data);
|