java对接微信公众号模板消息推送(代码片段)

最小的帆也能远航 最小的帆也能远航     2022-12-20     333

关键词:

最近公司的有这个业务需求,又很凑巧让我来完成:

首先想要对接,先要一个公众号,再就是开发文档了:https://developers.weixin.qq.com/doc/offiaccount/Getting_Started/Overview.html

 不过请注意这一点

ok,我们继续:再来完成公众号的基本配置:

   服务器地址(URL):必须以http://或https://开头,分别支持80端口和443端口。这个URL是很重要的,需要响应微信发送的token验证

    令牌(Token):必须为英文或数字,长度为3-32字符。上面说过做验证的

    消息加解密密钥:可以直接随机生成

    消息加解密方式:明文、兼容、安全  看业务需求选择:我觉得明文省事点(个人见解)

详解微信开发文档:https://developers.weixin.qq.com/doc/offiaccount/Getting_Started/Overview.html

如果一直用微信的接口调用,会有点麻烦所以这边我就引用了     ---》WxJava《---         

github:https://github.com/Wechat-Group/WxJava 

gitee:https://gitee.com/binary/weixin-java-tools

先来看看官方文档对于推送模板消息参数说明:

 ok,下一步template_id:模板Id;对于这个可以自己申请 or 选用已有的

选择一个进去添加模板就行了

 ok,模板id也拿到了,现在就开始

请大家也详细的看看 WxJava 的文档

---先建立 SpringBoot 项目---

导入wxjava公众号 对应的pom

<!-- WxJava公众号 -->
<dependency>
   <groupId>com.github.binarywang</groupId>
   <artifactId>weixin-java-mp</artifactId>
   <version>3.6.0</version></dependency>

 

 然后就需要配置公众号相关的信息了,我个人比较喜欢在 yml 里面配置

# 微信公众号配置
wx:
  appid: 11111
  secret: 22222
  token: 33333
  aeskey: 44444

配置了这个就需要对应这个配置的Component了(实体类)

/**
 * @Date 2021/1/10 15:44
 **/
@Data
@Component
@ConfigurationProperties(prefix = "wx")
public class WxMpProperties 

    /**
     * 公众号appId
     */
    private String appId;

    /**
     * 公众号appSecret
     */
    private String secret;

    /**
     * 公众号token
     */
    private String token;

    /**
     * 公众号aesKey
     */
    private String aesKey;

 

 先给大家一步一步分析

 刚刚我们选择的模板,这些key都一个一个参数,文档上面说的很明白,赋值替换!!! 明白了这点就ok了。

好,再来回头看 WxJava

/**
 * 微信消息推送
 *
 * @Date 2021/1/10 16:20
 **/
    @Slf4j
    @Component
    public class WxMsgPush 

    /**
     * 微信公众号API的Service
     */
    private final WxMpService wxMpService;

    /**
     * 构造注入
     */
    WxMsgPush(WxMpService wxMpService) 
        this.wxMpService = wxMpService;
    


    /**
     * 发送微信模板信息
     *
     * @param openId 接受者openId
     * @return 是否推送成功
     */
    public Boolean SendWxMsg(String openId) 
        // 发送模板消息接口
        WxMpTemplateMessage templateMessage = WxMpTemplateMessage.builder()
                // 接收者openid
                .toUser(openId)
                // 模板id
                .templateId("xxxxxxxxxxxxxxxxxxxxxxxxxxx")
                // 模板跳转链接
                .url("http://www.baidu.com")
                .build();
        // 添加模板数据
        templateMessage.addData(new WxMpTemplateData("first", "您好", "#FF00FF"))
                .addData(new WxMpTemplateData("keyword1", "这是个测试", "#A9A9A9"))
                .addData(new WxMpTemplateData("keyword2", "这又是个测试", "#FF00FF"))
                .addData(new WxMpTemplateData("remark", "这还是个测试", "#000000"));
        String msgId = null;
        try 
            // 发送模板消息
            msgId = wxMpService.getTemplateMsgService().sendTemplateMsg(templateMessage);
         catch (WxErrorException e) 
            e.printStackTrace();
        
        log.warn("·==++--·推送微信模板信息:·--++==·", msgId != null ? "成功" : "失败");
        return msgId != null;
    

 需要自己写个config,把这个实现类@Bean注入

/**
 * @Date 2021/1/11 09:23
 **/
@Configuration
public class WxConfig 

    /**
     * 声明实例
     *
     * @return
     */
    @Bean
    public WxMpService wxMpService() 
        WxMpService wxMpService = new WxMpServiceImpl();
        return wxMpService;
    

 好了,知道了对应方法的作用,终于可以推送了。但是但是,到现在,我才想起一件事情,我配置的公众号信息,他能自己读?很显然我们少配置了信息。

/**
 * @Date 2021/1/11 09:23
 **/
@Configuration
public class WxConfig 

    private final WxMpProperties wxMpProperties;

    /**
     * 构造注入
     *
     * @param wxMpProperties
     */
    WxConfig(WxMpProperties wxMpProperties) 
        this.wxMpProperties = wxMpProperties;
    

    /**
     * 微信客户端配置存储
     *
     * @return
     */
    @Bean
    public WxMpConfigStorage wxMpConfigStorage() 
        WxMpDefaultConfigImpl configStorage = new WxMpDefaultConfigImpl();
        // 公众号appId
        configStorage.setAppId(wxMpProperties.getAppId());
        // 公众号appSecret
        configStorage.setSecret(wxMpProperties.getSecret());
        // 公众号Token
        configStorage.setToken(wxMpProperties.getToken());
        // 公众号EncodingAESKey
        configStorage.setAesKey(wxMpProperties.getAesKey());
        return configStorage;
    

    /**
     * 声明实例
     *
     * @return
     */
    @Bean
    public WxMpService wxMpService() 
        WxMpService wxMpService = new WxMpServiceImpl();
        wxMpService.setWxMpConfigStorage(wxMpConfigStorage());
        return wxMpService;
    
 

 

 ok,主要 code 部分都完成了,开始测试吧。请自己建一个Controller

/**
 * 微信消息推送
 */
private final WxMsgPush wxMsgPush;

/**
 * 构造注入
 */
protected PushMsgApi(WxMsgPush wxMsgPush) 
    this.wxMsgPush = wxMsgPush;


/**
     * 发送微信模板消息
     */
    @ApiOperation("发送微信模板消息")
    @ApiImplicitParams(
            @ApiImplicitParam(name = "openId", value = "接受者openId", dataType = "String", paramType = "query")
    )
    @PostMapping("/sendWxInfo")
    public void sendWxInfo(String openId) 
        // 执行发送
        Boolean aBoolean = wxMsgPush.SendWxMsg(openId);
        System.out.println(aBoolean);
    

ok!推送完成!!完整代码可以去这:https://download.csdn.net/download/weixin_44364444/20934413 

java对接微信公众号模板消息推送(代码片段)

...这个业务需求,又很凑巧让我来完成:首先想要对接,先要一个公众号,再就是开发文档了:https://developers.weixin.qq.com/doc/offiaccount/Getting_Started/Overview.html 不过请注意这一点ok,我们继续:再来完成公众... 查看详情

公众号推送早安问候以及天气预报(java)(代码片段)

...pringboot实现后台微信测试账号的申请微信模版推送的配置对接百度天气api对接彩虹屁api对接优美句子api源码开放GiteeGitHub②注册微信测试账号,编辑推送模板使用微信扫码登录此网站https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=san... 查看详情

简单使用java实现微信公众号推送模板消息

原文链接: https://blog.csdn.net/qq_41936224/article/details/108076005以下例子是简单的使用Java代码实现微信公众号推送模板消息,不包含跳转到小程序网页代码1、pom.xml文件中添加依赖<!--lombok--><depend 查看详情

java微信公众号消息推送(从零开始)(代码片段)

...ff0c;获取其openId(重要)这一步非常重要,只有是跟微信对接,都需要 查看详情

asp群发微信公众号模板消息代码

刚刚做的一个项目需要用到asp群发微信公众号的模板消息,以前没做过,想了一会用了下面这种方法实现的模板消息群发推送,效果很好。asp群发微信公众号模板消息代码 查看详情

微信公众号模板消息推送

...通access_token的区别获取普通access_token的接口模板id需要在微信官方申请自己企业的推送模板,成功会获得一个模板id1、模板消息实体类2、access_token实体类1、获取access_token方法2、消息推送方法 查看详情

php实现微信模板消息推送

...1.net/article/137428.htm这篇文章主要为大家详细介绍了php实现微信模板消息推送,具有一定的参考价值,感兴趣的小伙伴们可以参考一下本文实例为大家分享了php微信模板消息推送的具体代码,供大家参考,具体内容如下1.微信公众... 查看详情

.net微信公众号开发——模板消息

   本文介绍微信公众号中的模板消息,包括以下内容:(1)TemplateMessage类简介;(2)设置所属行业;(3)获得模板id;(4)发送模板消息;(5)接收推送模板消息发送结果事件。  本文演示地址:http://xrwang.... 查看详情

微信公众号发送模板消息(代码片段)

目录1开发中遇到的问题汇总2模板消息创建3调试接口3.1微信公众号消息模板3.1.1基本信息3.2请求参数3.2.1Query参数及说明3.2.2body参数及说明4测试结果5工具类封装1开发中遇到的问题汇总首先是在测试中,遇到最多的就是41003->appid... 查看详情

微信消息推送神器pushplus介绍,让消息推送更简单(代码片段)

很早之前曾经做过微信公众号消息推送,实现了一些有意思的小功能。如设备报警消息推送、每日天气预报和大盘资讯简报推送等,使用的是微信官方的api。后台使用golang做了个简单的服务,操作使用上是有点儿麻烦... 查看详情

活用微信公众号的推送功能

...标,一般来说,APP推送可尝试使用效果较好的三方渠道;微信内推送应建立适当的推送时间避免Formid过期。据了解,APP的推送触达率在75%左右,微信的触达率在90%左右。3.推送点击率:这个和推送人群、推送时间、推送素材紧密... 查看详情

公众号推送模板消息,跳转小程序报错invalidweapppagepath

invalidweapppagepathrid:62d930f0-50070964-005e3fc6这是微信示例:在检查自己代码发现路径写错了。pagepath 要写对,前面可以不加斜线 查看详情

公众号推送模板消息,跳转小程序报错invalidweapppagepath

invalidweapppagepathrid:62d930f0-50070964-005e3fc6这是微信示例:在检查自己代码发现路径写错了。pagepath 要写对,前面可以不加斜线 查看详情

公众号推送模板消息,跳转小程序报错invalidweapppagepath

invalidweapppagepathrid:62d930f0-50070964-005e3fc6这是微信示例:在检查自己代码发现路径写错了。pagepath 要写对,前面可以不加斜线 查看详情

公众号推送模板消息,跳转小程序报错invalidweapppagepath

invalidweapppagepathrid:62d930f0-50070964-005e3fc6这是微信示例:在检查自己代码发现路径写错了。pagepath 要写对,前面可以不加斜线 查看详情

微信公众号推送天气教程,自动定时推送java版开发者和小白详细教程(代码片段)

...击打开目录:1.通用准备2.面向开发者通用准备1.1申请微信公众号点击跳转申请得到这个页面:滑到下面,扫码关注公众号新增模板,【中文】的可以改,xxx.DATA不能改,但可以移动位置。first.DATA城市:city.DA... 查看详情

微信公众号之主动给用户发送消息(代码片段)

...消息不就得了。后来在写代码的过程中却发现,并不行。微信公众号中模板消息有很严格的限制。1.必须有用户主动触发事件方可发送模板消息2.模板消息一分钟只能发送六十条,超过六十条,不好意思。你懂。于是乎,就想 查看详情

《用微信测试公众号慰问你的好兄弟/姐妹》:用java简单实现微信公众号消息推送(入门且详细且有效)(代码片段)

文章目录一、前言二、注册微信测试号并配置信息1.获取appID和appsecret:2.获取关注微信号ID:3.生成并获取模板ID:三、代码解读1.新建一个springboot项目2.引入pom依赖3.编写代码最后点击运行,这样就搞定了!... 查看详情