微信公众号(测试号)开发
总体概述:
1.开发使用后台已经封装好的第三方sdk微信开发包开发,需要进行必要的jar引入,以及特定的spring配置及监控类开发,可拷贝git源代码
git链接:https://github.com/binarywang/weixin-java-mp-demo
<dependency>
<groupId>com.github.binarywang</groupId>
<artifactId>weixin-java-mp</artifactId>
<version>3.6.0</version>
</dependency>
测试号申请网址:微信公众平台
测试号配置:
接口配置信息:
url:第一次授权公众号为开发者模式的时候,微信服务器会调用这个地址去校验服务器是否存在且真实
url前半部分是开发服务器域名(本机开发一般是内网,微信服务器访问不到,需要搞一个内网穿透工具,将本机127.0.0.1映射到外网去,微信访问外网ip,外网ip再映射到本机地址上)
JS接口安全域名:
这个是我们本地调用微信接口的时候,再此将服务器域名告诉给微信,让他知道我们的域名是合法 的,才能调用微信开放接口(也是使用内网穿透生成的域名,此处要删去https:开头)
checkSignature接口实例(可查看文档,翻开该接口规则)
@RequestMapping(value = "/wx/checkSignature")
@ResponseBody
public String checkSignature(String signature, String timestamp, String nonce, String echostr) {
if (StringUtils.isAnyBlank(signature, timestamp, nonce, echostr)) {
throw new IllegalArgumentException("请求参数非法,请核实!");
}
if (wxService.checkSignature(timestamp, nonce, signature)) {
return echostr;
}
return "非法请求";
}
至此可在代码上执行添加一个按钮的操作(公众号就会出现一个新增的按钮),点击按钮之后,公众号就会自动跳转到自己设置的界面,并携带一个code参数,可根据这个code去获得用户openId(sdk有对应方法,可查看对应文档)
公众号发送微信号推送方法封装
/**
* 公众号发送微信号推送
*
* @param userId 本地用户ID
* @param templateId 微信推送模板ID
* @param url 推送点击详情,跳转url
* @param params 微信参数对象列表 模板通过{{key.DATA}} 插入占位符,key就是new WxMpTemplateData(key)
* @return
*/
public ResultMsg sendWxMsg(String userId, String templateId, String url, List<MsgParamModel> params) {
//将本地userId转换为微信用户的openId
WxUserModel wxUser = wxUserService.getByUserId(userId);
if (BeanUtil.isEmpty(wxUser)) {
String userName = tPubUserMapper.getUserNameByUserId(userId);
return new ResultMsg(false, null, "用户【" + userName + "】未关注公众号,推送失败!");
}
WxMpTemplateMessage templateMessage = WxMpTemplateMessage.builder()
.toUser(wxUser.getOpen_id())
.templateId(templateId)
.url(StringUtils.isNotEmpty(url) ? url : null)
.build();
/**
* 插入模板占位符参数
*/
for (MsgParamModel param : params) {
templateMessage = templateMessage.addData(new WxMpTemplateData(param.getName(), param.getValue(), param.getColor()));
}
String msgId = null;
try {
// 发送模板消息
msgId = wxService.getTemplateMsgService().sendTemplateMsg(templateMessage);
} catch (WxErrorException e) {
e.printStackTrace();
}
logger.info("用户【" + wxUser.getUser_id() + "】推送微信:" + msgId != null ? "推送成功" : "推送失败");
return new ResultMsg(msgId != null, "", msgId != null ? "推送成功" : "推送失败");
}
为占位符封装对象
/**
* 微信消息推送参数实体类
*
* @author lirong
* @date 2022-10-11 15:41
**/
@Data
@AllArgsConstructor
public class MsgParamModel {
/**
* 占位符key
*/
private String name;
/**
* 占位符value
*/
private String value;
/**
* 占位符文字输出颜色 为空为黑色
*/
private String color;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具