小程序消息推送(含源码)java实现小程序推送,计算机程序设计python题库

本文是比较老得技术来实现,用最新技术实现小程序推送,请看

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

也可以看最新的视频讲解:https://edu.csdn.net/course/detail/23750

最近需要开发微信和小程序的推送功能,需要用java后台实现推送,自己本身java和小程序都做,所以就自己动手实现下小程序的模版推送功能推送。

实现思路


  • 1 小程序获取用户openid,收集formid传给java后台

  • 2 java推送消息给指定小程序用户

老规矩,还是先看效果图


在这里插入图片描述

我的这个是跑腿抢单推送,当用户新下单时,会给跑腿员推送消息。

下面开始讲解实现步骤

一,微信小程序管理后台开通模版推送

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

在这里插入图片描述

这里的模版id很重要,接下来我们推送的都是这个模版。

二,java后台实现推送所需字段

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

  • 1 看微信官方推送消息所需要的字段

    在这里插入图片描述

    在这里插入图片描述

  • 2 有了官方说明,我门接下来就去拿到官方所需要的这些字段,来组装请求数据就可以了。

三,下面讲解实现步骤


我的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);




**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**

**深知大多数同学面临毕业设计项目选题时,很多人都会感到无从下手,尤其是对于计算机专业的学生来说,选择一个合适的题目尤为重要。因为毕业设计不仅是我们在大学四年学习的一个总结,更是展示自己能力的重要机会。**

**因此收集整理了一份《2024年计算机毕业设计项目大全》,初衷也很简单,就是希望能够帮助提高效率,同时减轻大家的负担。**
![img](https://img-blog.csdnimg.cn/img_convert/812e61445c35e32b1259a60d443968a3.jpeg)
![img](https://img-blog.csdnimg.cn/img_convert/8fb6db857e2ddfd76b441ff71406f191.png)
![img](https://img-blog.csdnimg.cn/img_convert/aa35937f7bfe95f1928b993ae7910383.png)

**既有Java、Web、PHP、也有C、小程序、Python等项目供你选择,真正体系化!**

**由于项目比较多,这里只是将部分目录截图出来,每个节点里面都包含素材文档、项目源码、讲解视频**

**如果你觉得这些内容对你有帮助,可以添加VX:vip1024c (备注项目大全获取)**
![img](https://img-blog.csdnimg.cn/img_convert/ac35dbd759b56ed2a6d53d2c71391f08.png)

适的题目尤为重要。因为毕业设计不仅是我们在大学四年学习的一个总结,更是展示自己能力的重要机会。**

**因此收集整理了一份《2024年计算机毕业设计项目大全》,初衷也很简单,就是希望能够帮助提高效率,同时减轻大家的负担。**
[外链图片转存中...(img-CgHCZl73-1712577750538)]
[外链图片转存中...(img-SXK4RffN-1712577750539)]
[外链图片转存中...(img-u3SrDap1-1712577750539)]

**既有Java、Web、PHP、也有C、小程序、Python等项目供你选择,真正体系化!**

**由于项目比较多,这里只是将部分目录截图出来,每个节点里面都包含素材文档、项目源码、讲解视频**

**如果你觉得这些内容对你有帮助,可以添加VX:vip1024c (备注项目大全获取)**
[外链图片转存中...(img-UqYBkDwq-1712577750540)]

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值