当前位置:   article > 正文

5行java代码实现微信小程序模版消息推送 (含springboot后台和小程序源码)_java调用微信小程序消息推送

java调用微信小程序消息推送

最后

2020年在匆匆忙忙慌慌乱乱中就这么度过了,我们迎来了新一年,互联网的发展如此之快,技术日新月异,更新迭代成为了这个时代的代名词,坚持下来的技术体系会越来越健壮,JVM作为如今是跳槽大厂必备的技能,如果你还没掌握,更别提之后更新的新技术了。

更多JVM面试整理:

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

    <plugins>

        <plugin>

            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-maven-plugin</artifactId>

        </plugin>

    </plugins>

</build>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13



其实到这里我们java后台的推送功能,就已经实现了。我们只需要运行springboot项目,就可以实现推送了。  

下面贴出完整的PushController.java类。里面注释很详细了。



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

package com.qcl.wxapppush;

import org.springframework.web.bind.annotation.GetMapping;

import org.springframework.web.bind.annotation.RequestParam;

import org.springframework.web.bind.annotation.RestController;

import java.util.ArrayList;

import java.util.List;

import cn.binarywang.wx.miniapp.api.WxMaService;

import cn.binarywang.wx.miniapp.api.impl.WxMaServiceImpl;

import cn.binarywang.wx.miniapp.bean.WxMaTemplateData;

import cn.binarywang.wx.miniapp.bean.WxMaTemplateMessage;

import cn.binarywang.wx.miniapp.config.WxMaInMemoryConfig;

import me.chanjar.weixin.common.error.WxErrorException;

/**

  • Created by qcl on 2019-05-20

  • 微信:2501902696

  • desc: 微信小程序模版推送实现

*/

@RestController

public class PushController {

@GetMapping("/push")

public String push(@RequestParam String openid, @RequestParam String formid) {

    //1,配置小程序信息

    WxMaInMemoryConfig wxConfig = new WxMaInMemoryConfig();

    wxConfig.setAppid("wx7c54942dfc87f4d8");//小程序appid

    wxConfig.setSecret("5873a729c365b65ab42bb5fc82d2ed49");//小程序AppSecret



    WxMaService wxMaService = new WxMaServiceImpl();

    wxMaService.setWxMaConfig(wxConfig);



    //2,设置模版信息(keyword1:类型,keyword2:内容)

    List<WxMaTemplateData> templateDataList = new ArrayList<>(2);

    WxMaTemplateData data1 = new WxMaTemplateData("keyword1", "获取老师微信");

    WxMaTemplateData data2 = new WxMaTemplateData("keyword2", "2501902696");

    templateDataList.add(data1);

    templateDataList.add(data2);



    //3,设置推送消息

    WxMaTemplateMessage templateMessage = WxMaTemplateMessage.builder()

            .toUser(openid)//要推送的用户openid

            .formId(formid)//收集到的formid

            .templateId("eDZCu__qIz64Xx19dAoKg0Taf5AAoDmhUHprF6CAd4A")//推送的模版id(在小程序后台设置)

            .data(templateDataList)//模版信息

            .page("pages/index/index")//要跳转到小程序那个页面

            .build();

    //4,发起推送

    try {            wxMaService.getMsgService().sendTemplateMsg(templateMessage);

    } catch (WxErrorException e) {

        System.out.println("推送失败:" + e.getMessage());

        return e.getMessage();

    }

    return "推送成功";

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65

}




看代码我们可以知道,我们需要做一些配置,需要下面信息  

1,小程序appid  

2,小程序AppSecret(密匙)  

3,小程序推送模版id  

4,用户的openid  

5,用户的formid(一个formid只能用一次)



[]( )下面就是小程序部分,来教大家如何获取上面所需的5个信息。

=========================================================================================



1,appid和AppSecret的获取(登录小程序管理后台)  

![在这里插入图片描述](https://img-blog.csdnimg.cn/20190611150503894.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FpdXNoaV8xOTkw,size_16,color_FFFFFF,t_70)  

2,推送模版id  

![在这里插入图片描述](https://img-blog.csdnimg.cn/20190611150516407.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FpdXNoaV8xOTkw,size_16,color_FFFFFF,t_70)  

3,用户openid的获取,可以看下面的这篇文章,也可以看源码,这里不做具体讲解  

[小程序开发如何获取用户openid]( )  

4,获取formid  

![在这里插入图片描述](https://img-blog.csdnimg.cn/20190611150530405.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FpdXNoaV8xOTkw,size_16,color_FFFFFF,t_70)  

看官方文档,可以知道我们的formid有效期是7天,并且一个form\_id只能使用一次,所以我们小程序端所需要做的就是尽可能的多拿些formid,然后传个后台,让后台存到数据库中,这样7天有效期内,想怎么用就怎么用了。



### []( )所以接下来要讲的就是小程序开发怎么尽可能多的拿到formid了



![在这里插入图片描述](https://img-blog.csdnimg.cn/2019061115054673.png)  

看下官方提供的,只有在表单提交时把report-submit设为true时才能拿到formid,比如这样



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53

获取formid




所以我们就要在这里下功夫了,既然只能在form组件获取,我们能不能把我们小程序里用到最多的地方用form来伪装呢。



### []( )下面简单写个获取formid和openid的完整示例,方便大家学习



效果图  

![在这里插入图片描述](https://img-blog.csdnimg.cn/20190611150606445.png)  

我们要做的就是点击获取formid按钮,可以获取到用户的formid和openid,正常我们开发时,是需要把openid和formid传给后台的,这里简单起见,我们直接用获取到的formid和openid实现推送功能



##### []( )下面来看小程序端的实现代码



1,index.wxml  

![在这里插入图片描述](https://img-blog.csdnimg.cn/2019061115061947.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FpdXNoaV8xOTkw,size_16,color_FFFFFF,t_70)  

2,index.js  

![在这里插入图片描述](https://img-blog.csdnimg.cn/20190611150632172.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FpdXNoaV8xOTkw,size_16,color_FFFFFF,t_70)



到这里我们小程序端的代码也实现了,接下来测试下推送。



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37

formid: 6ee9ce80c1ed4a2f887fccddf87686eb

openid o3DoL0Uusu1URBJK0NJ4jD1LrRe0




![在这里插入图片描述](https://img-blog.csdnimg.cn/20190611150650714.png)  

可以看到我们用了上面获取到的openid和formid做了一次推送,显示推送成功



![在这里插入图片描述](https://img-blog.csdnimg.cn/20190611150711720.png)  

![在这里插入图片描述](https://img-blog.csdnimg.cn/2019061115072313.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FpdXNoaV8xOTkw,size_16,color_FFFFFF,t_70)



到这里我们小程序消息推送的后台和小程序端都讲完了。



[]( )这里有两点需要大家注意

------------------------------------------------------------------------



1,推送的openid和formid必须对应。  

2,一个formid只能用一次,多次使用会报一下错误。



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

{“errcode”:41029,“errmsg”:“form id used count reach limit hint: [ssun8a09984113]”}




这里就不单独贴出源码下载链接了,大家感兴趣的话,可以私信我,或者在底部留言,我会把源码下载链接贴在留言区。  

单独找我要源码也行(微信2501902696)



> 编程小石头,码农一枚,非著名全栈开发人员。分享自己的一些经验,学习心得,希望后来人少走弯路,少填坑。



源码链接:[https://github.com/qiushi123/wxapppush]( )



视频讲解地址:[https://edu.csdn.net/course/play/23750/268139]( )



 





## 最后

还有Java核心知识点+全套架构师学习资料和视频+一线大厂面试宝典+面试简历模板可以领取+阿里美团网易腾讯小米爱奇艺快手哔哩哔哩面试题+Spring源码合集+Java架构实战电子书+2021年最新大厂面试题。
![在这里插入图片描述](https://img-blog.csdnimg.cn/img_convert/06d6f3103e9857fb40dcc6533829c582.webp?x-oss-process=image/format,png)

> **本文已被[CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】](https://bbs.csdn.net/topics/618154847)收录**

**[需要这份系统化的资料的朋友,可以点击这里获取](https://bbs.csdn.net/topics/618154847)**

 





## 最后

还有Java核心知识点+全套架构师学习资料和视频+一线大厂面试宝典+面试简历模板可以领取+阿里美团网易腾讯小米爱奇艺快手哔哩哔哩面试题+Spring源码合集+Java架构实战电子书+2021年最新大厂面试题。
[外链图片转存中...(img-Lp0f76yT-1715797506101)]

> **本文已被[CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】](https://bbs.csdn.net/topics/618154847)收录**

**[需要这份系统化的资料的朋友,可以点击这里获取](https://bbs.csdn.net/topics/618154847)**

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/849466
推荐阅读
相关标签
  

闽ICP备14008679号