1申请微信测试号
1.1 测试号管理

使用微信扫码登录,自动生成APPID和APPsecret,设置URL和token
测试号管理页面:

用uTools工具进行内网穿透该工具会自动最小化到任务栏,同时按下ALT+空格唤出

点击连接,并复制地址

将该地址写入上面测试号管理里面的URL
在springboot工程里面的yml配置文件中填入配置好的APPID APPsecret 和token

1.2 初始化菜单
controller配置访问路径

启动springboot项目,重新关注一下测试号,即可发现自定义菜单已被初始化

2 微信返回多条消息
需求:点击早晚安打卡,返回消息,属于自定义菜单事件
2.1 发送一条消息

在MenuHandler里处理
返回图片
return WxMpXmlOutMessage.IMAGE()
.mediaId(media_id)
.fromUser(wxMessage.getToUser())
.toUser(wxMessage.getFromUser())
.build();
返回文本
return WxMpXmlOutMessage.TEXT().content("早安" + "\n\n" + threeUrl)
.fromUser(wxMessage.getToUser()).toUser(wxMessage.getFromUser())
.build();
这里只用返回图片和文本即可,微信还支持返回语音,视频,图文等内容,详情可见官方文档

2.2 发送多条消息
这种方式只能返回一条消息,如果有返回多条消息的需求,就需要用到客服推送,官方文档

另外值得一提的是,微信发送图片,语音等信息,必须要先上传至微信服务器,微信会返回一个media_id,在发送给用户消息的时候,通过该media_id完成对图片等文件的发送。
Java上传图片至微信服务器示例
官方调用微信接口地址为:https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=ACCESS_TOKEN 必须为post请求
在handler里调用微信接口,发送post请求,示例代码
String uploadResult = HttpRequest.post(uploadUrl) //微信接口地址
.header(Header.CONTENT_TYPE, content_type)//头信息,多个头信息多次调用此方法即可
.header(Header.CONNECTION, connection)
.header(Header.USER_AGENT, user_agent)
.form(paramMap)//表单内容 这里是一张图片
.timeout(20000)//超时,毫秒
.execute().body();
返回的uploadResult信息如下:
{"type":"image","media_id":"8JbJTT4d4Y2YDmLPB3AFY7D4M8cE_UlsUv6Z5wdkNn3dEOA8cRh9F7zSnDeejgIZ","created_at":1602572094,"item":[]}
是String类型的,先使用JSON.parseObject()方法把字符串转为Map,再通过get("media_id")去获取到media_id
再调用微信客服发消息
String kfStr = HttpRequest.post(kfUrl) //接口地址
.body(kfJson) // json格式的字符串
.execute().body();
kfJson示例
{
"touser":"oeR6H6KBJPAXo7s1tQdU5lOJ_fHo",
"msgtype":"image",
"image":
{
"media_id":"8JbJTT4d4Y2YDmLPB3AFY7D4M8cE_UlsUv6Z5wdkNn3dEOA8cRh9F7zSnDeejgIZ"
}
}
运行效果


本文介绍了微信公众号测试号的配置步骤,包括登录、设置URL和Token,以及SpringBoot中初始化菜单。同时,讲解了如何处理自定义菜单事件,实现返回一条或多条消息的功能。涉及的内容包括发送文本、图片消息,以及利用客服接口发送多条消息的场景。文章还展示了Java上传图片至微信服务器及客服消息推送的代码示例。
1万+





