当前位置:   article > 正文

小程序消息推送(含源码)java实现小程序推送,springboot实现微信消息推送_微信小程序发送消息通知 java代码

微信小程序发送消息通知 java代码

最后

分布式技术专题+面试解析+相关的手写和学习的笔记pdf

还有更多Java笔记分享如下:

image

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

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

三,下面讲解实现步骤


我的java后台是基于springboot开发的,如果你不了解spring boot,建议你先去了解下springboot再回来接着学习。

还有RestTemplate是我们java后台做get和post请求必须的,我们和微信服务器交互就用的RestTemplate

  • 1 首先根据官方推送所需字段组装java-bean

    这里用到两个javabean


/*

* 小程序推送所需数据

* qcl 微信:2501902696

* */

@Data

public class WxMssVo {

    private String touser;//用户openid

    private String template_id;//模版id

    private String page = "index";//默认跳到小程序首页

    private String form_id;//收集到的用户formid

    private String emphasis_keyword = "keyword1.DATA";//放大那个推送字段

    private Map<String, TemplateData> data;//推送文字

}



  • 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

/*

* 设置推送的文字和颜色

* qcl 微信:2501902696

* */

@Data

public class TemplateData {

    //keyword1:订单类型,keyword2:下单金额,keyword3:配送地址,keyword4:取件地址,keyword5备注

    private String value;//,,依次排下去

//    private String color;//字段颜色(微信官方已废弃,设置没有效果)

}



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

到这里请求推送的数据就组装好了,解下来我们去实现推送功能。

奥不对,还有一个重要的字段需要获取到:access_token

access_token的获取


/*

    * 获取access_token

    * appid和appsecret到小程序后台获取,当然也可以让小程序开发人员给你传过来

    * */

    public String getAccess_token(String appid, String appsecret) {

        //获取access_token

        String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential" +

                "&appid=" + appid + "&secret=" + appsecret;

        String json = restTemplate.getForObject(url, String.class);

        AccessToken accessToken = new Gson().fromJson(json, AccessToken.class);

        return accessToken.getAccess_token();

    }



  • 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

这次是真正的可以来请求微信服务器来实现消息推送了


/*

    * 微信小程序推送单个用户

    * */

    public String pushOneUser(String openid, String formid) {





        //获取access_token

        String access_token = getAccess_token(ConstantUtils.SCHOOL_APPID, ConstantUtils.SCHOOL_APPSECRET);

        String url = "https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send" +

                "?access_token=" + access_token;



        //拼接推送的模版

        WxMssVo wxMssVo = new WxMssVo();

        wxMssVo.setTouser(openid);//用户openid

        wxMssVo.setTemplate_id("LzeDP0G5PLgHoOjCMfhu44wfUluhW11Zeezu3r_dC24");//模版id

        wxMssVo.setForm_id(formid);//formid





        Map<String, TemplateData> m = new HashMap<>(5);



        //keyword1:订单类型,keyword2:下单金额,keyword3:配送地址,keyword4:取件地址,keyword5备注

        TemplateData keyword1 = new TemplateData();

        keyword1.setValue("新下单待抢单");

        m.put("keyword1", keyword1);



        TemplateData keyword2 = new TemplateData();

        keyword2.setValue("这里填下单金额的值");

        m.put("keyword2", keyword2);

        wxMssVo.setData(m);



        TemplateData keyword3 = new TemplateData();

        keyword3.setValue("这里填配送地址");

        m.put("keyword3", keyword3);

        wxMssVo.setData(m);



        TemplateData keyword4 = new TemplateData();

        keyword4.setValue("这里填取件地址");

        m.put("keyword4", keyword4);

        wxMssVo.setData(m);



        TemplateData keyword5 = new TemplateData();

        keyword5.setValue("这里填备注");

        m.put("keyword5", keyword5);

        wxMssVo.setData(m);



        ResponseEntity<String> responseEntity =

                restTemplate.postForEntity(url, wxMssVo, String.class);

        log.error("小程序推送结果={}", responseEntity.getBody());

        return responseEntity.getBody();

    }



  • 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
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103

openid可以让小程序开发人员给你传过来,也可以自己获取。

formid需要小程序开发给你传过来,你也可以把formid存到数据库里,什么时候需要直接拿出来用就可以了。

注意:formid必须和用户openid对应。

下面贴出来完整代码


package com.qcl.paotuischool.wechat;



import com.google.gson.Gson;

import com.qcl.userwechat.bean.AccessToken;

import com.qcl.utils.ConstantUtils;



import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.http.ResponseEntity;

import org.springframework.stereotype.Service;

import org.springframework.web.client.RestTemplate;



import java.util.HashMap;

import java.util.Map;



import lombok.extern.slf4j.Slf4j;



/**

 * Created by qcl on 2018/9/11.

 * 微信小程序推送服务,

 * 包含获取access_token的服务

 */

@Service

@Slf4j

public class WxPushServiceQcl {

    //用来请求微信的get和post

    @Autowired

    private RestTemplate restTemplate;





    /*

    * 微信小程序推送单个用户

    * */

    public String pushOneUser(String openid, String formid) {





        //获取access_token

        String access_token = getAccess_token(ConstantUtils.SCHOOL_APPID, ConstantUtils.SCHOOL_APPSECRET);

        String url = "https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send" +

                "?access_token=" + access_token;



        //拼接推送的模版

        WxMssVo wxMssVo = new WxMssVo();

        wxMssVo.setTouser(openid);//用户openid

        wxMssVo.setTemplate_id("LzeDP0G5PLgHoOjCMfhu44wfUluhW11Zeezu3r_dC24");//模版id

        wxMssVo.setForm_id(formid);//formid





        Map<String, TemplateData> m = new HashMap<>(5);



        //keyword1:订单类型,keyword2:下单金额,keyword3:配送地址,keyword4:取件地址,keyword5备注

        TemplateData keyword1 = new TemplateData();

        keyword1.setValue("新下单待抢单");

        m.put("keyword1", keyword1);



        TemplateData keyword2 = new TemplateData();

        keyword2.setValue("这里填下单金额的值");

        m.put("keyword2", keyword2);

        wxMssVo.setData(m);



        TemplateData keyword3 = new TemplateData();

        keyword3.setValue("这里填配送地址");

        m.put("keyword3", keyword3);

        wxMssVo.setData(m);



        TemplateData keyword4 = new TemplateData();

        keyword4.setValue("这里填取件地址");

        m.put("keyword4", keyword4);

        wxMssVo.setData(m);



        TemplateData keyword5 = new TemplateData();

        keyword5.setValue("这里填备注");

        m.put("keyword5", keyword5);

        wxMssVo.setData(m);



        ResponseEntity<String> responseEntity =

                restTemplate.postForEntity(url, wxMssVo, String.class);

        log.error("小程序推送结果={}", responseEntity.getBody());

        return responseEntity.getBody();

    }



    /*

    * 获取access_token

    * appid和appsecret到小程序后台获取,当然也可以让小程序开发人员给你传过来

    * */

    public String getAccess_token(String appid, String appsecret) {

        //获取access_token



### 最后

光给面试题不给答案不是我的风格。这里面的面试题也只是凤毛麟角,还有答案的话会极大的**增加文章的篇幅**,减少文章的可读性

# Java面试宝典2021版

![](https://img-blog.csdnimg.cn/img_convert/b8b6cc42b9608ddffcf9c648d473ac68.webp?x-oss-process=image/format,png)

![](https://img-blog.csdnimg.cn/img_convert/7436801337b039513504b123e5fc6676.webp?x-oss-process=image/format,png)

# 最常见Java面试题解析(2021最新版)

![](https://img-blog.csdnimg.cn/img_convert/72df55cfe18d4c711fcee2297ce494f7.webp?x-oss-process=image/format,png)

![](https://img-blog.csdnimg.cn/img_convert/9dc7f3ca65283108047d595313622b94.webp?x-oss-process=image/format,png)

# 2021企业Java面试题精选

![](https://img-blog.csdnimg.cn/img_convert/55a1feb9e7eb372c38318892c47395e7.webp?x-oss-process=image/format,png)

![](https://img-blog.csdnimg.cn/img_convert/d27a92257e2dc26e2ac66100eb3837b1.webp?x-oss-process=image/format,png)

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

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

15536710486)]

# 最常见Java面试题解析(2021最新版)

[外链图片转存中...(img-tOsOA6Xk-1715536710486)]

[外链图片转存中...(img-rHUlIXlm-1715536710486)]

# 2021企业Java面试题精选

[外链图片转存中...(img-L5Avy22Y-1715536710487)]

[外链图片转存中...(img-pY8Jk4dv-1715536710487)]

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

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

  • 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
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
  • 198
  • 199
  • 200
  • 201
  • 202
  • 203
  • 204
  • 205
  • 206
  • 207
  • 208
  • 209
  • 210
  • 211
  • 212
  • 213
  • 214
  • 215
  • 216
  • 217
  • 218
  • 219
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/849405
推荐阅读
相关标签
  

闽ICP备14008679号