小程序消息推送(含源码)java实现小程序推送,springboot实现微信消息推送

最后

分布式技术专题+面试解析+相关的手写和学习的笔记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;//推送文字

}




/*

* 设置推送的文字和颜色

* qcl 微信:2501902696

* */

@Data

public class TemplateData {

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

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

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

}



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

奥不对,还有一个重要的字段需要获取到: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();

    }



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


/*

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

    * */

    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();

    }



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)**

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Java实现小程序消息,你可以按照以下步骤进行操作: 1. 创建一个Vo类来封装传的参数。你可以使用Lombok库来简化代码,例如创建一个名为TemplateDataVo的类,其中包一个value属性用于封装消息内容。 2. 创建一个名为WxMssVo的类,用于封装小程序所需的数据。该类应包以下属性: - touser:用户的openid - template_id:模板id - page:跳转路径(默认为小程序首页) - data:消息内容,使用Map<String, TemplateDataVo>来封装 3. 在WxMssVo类中定义好属性后,你可以将其提供给Java的其他代码调用,或者提供一个接口供外界传入openid并相应的消息。 总结起来,你需要定义好Vo类来封装传的参数,包括消息内容、用户openid、模板id等。然后,你就可以通过调用相关代码或提供接口来实现小程序消息功能。123 #### 引用[.reference_title] - *1* [java编写微信小程序消息提醒](https://blog.csdn.net/weixin_55823910/article/details/130558549)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}} ] [.reference_item] - *2* *3* [java实现小程序订阅消息(附码)](https://blog.csdn.net/qq_41940721/article/details/119945990)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值