首页 > 编程语言 >微信小程序订阅消息推送

微信小程序订阅消息推送

时间:2023-12-13 14:55:17浏览次数:23  
标签:订阅 String 微信 params put 推送

一、后台配置模板消息:

首先打开微信后台https://mp.weixin.qq.com/,找到订阅消息那里进行模板配置:

 点击选用按钮,选择指定的模板,选择字段,确定后可以看到下面的信息:

 复制上面的模板ID,这个在模板消息推送时要用的。点击详情,可以看到下面的信息:

这里面的模板ID和详细内容是需要记录下来的,推送消息时都要传递进去的。

 

二、前端小程序获取用户授权:

在小程序中获取用户订阅消息的授权:在小程序中,你需要调用wx.requestSubscribeMessage接口获取用户的订阅消息授权。用户同意授权后,你可以得到用户的订阅消息订阅状态:

1 uni.requestSubscribeMessage({
2  tmplIds: ['你的消息模板ID],
3   success (res) {
4       console.log(res);
5   }
6 })

点击调用了上述方法的按钮,就会弹出如下页面,选择允许后,就可以接收后端推送的通知消息了:

三、后端获取Token:

 1 private TokenObj getAccessToken() {
 2     Map<String, Object> params = new HashMap<>();
 3     params.put("grant_type", "client_credential");
 4     params.put("appid", appletsConfig.getWxAppId());
 5     params.put("secret", appletsConfig.getWxAppSecret());
 6     String wxAppletDomain = "https://api.weixin.qq.com/cgi-bin/token";
 7     String res = HttpClientUtils.get(HttpClientUtils.getDefaultPoolClient(),wxAppletDomain,params);
 8     TokenObj obj = null;
 9     if (StringUtils.hasText(res)) {
10         obj = JSON.parseObject(res, TokenObj.class);
11     }
12     if (obj == null || StringUtils.isEmpty(obj.getAccess_token())) {
13         throw new BusinessException("获取token失败:" + res);
14     }
15     return obj;
16 }

四、后端发送消息:

 1 public String sendMsg(HttpServletRequest request){    
 2     //请求 微信接口 获取 accessToken
 3     String accessToken = getAccessToken();
 4     String openid = "接收消息的微信用户的openId";
 5     String templateId = "微信订阅消息模板";
 6     String page = "点击消息的跳转路径";
 7     // 构建订阅消息内容的JSON对象
 8     // 构建订阅消息内容的JSON对象
 9     JSONObject messageData = new JSONObject();
10     messageData.put("name2", createDataItem("张三"));
11     messageData.put("name3", createDataItem("李四"));
12     messageData.put("time4", createDataItem("2023-06-30"));
13     // 将订阅消息内容转换为JSON字符串
14     String jsonData = messageData.toJSONString();
15     pushMessage(accessToken,openid,templateId,page,jsonData);
16     return "success";
17 }
18 private static Map<String, Object> createDataItem(String value) {
19     Map<String, Object> item = new HashMap<>();
20     item.put("value", value);
21     return item;
22 }
23 
24 public void pushMessage(String accessToken, String openId, String templateId, String page, Map<String, Map<String,Object>> jsonData) {
25     try {
26         Map<String, Object> params=new HashMap<>();
27         params.put("touser",openId);
28         params.put("data", jsonData);
29         if(StringUtils.hasText(page)){
30             params.put("page",page);
31         }
32         params.put("miniprogram_state", "trial");
33         params.put("template_id",templateId); 
34         String pushUrl = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=%s";
35         String result= HttpClientUtils.post(HttpClientUtils.getDefaultPoolClient(), String.format(pushUrl, accessToken), params);
36         logger.info("【微信推送】微信推送返回结果 ,{}",result);        
37     } catch (Exception e) {        
38         logger.error("【微信推送】微信推送请求失败", e);
39     }
40 }

 

标签:订阅,String,微信,params,put,推送
From: https://www.cnblogs.com/laoxia/p/17899016.html

相关文章

  • 为什么我认为订阅制软件是软件定制市场的优解
    传统软件定制的弊端我在2020年时参加了全国高校科学夏令营。当时因为某原因夏令营线上开展,因为是特殊项目,网页服务通过招标方式进行。现在依然记得当时夏令营官网由php开发,服务器在为期一月的活动中崩溃了许多次,而且最离谱的是活动竞赛的答案会打印在浏览器Console中。并且服务......
  • 微信私域引流
    微信作为当下最大的app流量来源,每日的日活超十亿,很多人都在里面进行客户引流,更是把微信作为自己产品流量的承接载体,也就是我们常说的私域流量。实际上微信本身就是一个超大的流量航母,自身就有很多可以进行引流的方式和入口,和大家分享微信本身自带引流入口:通信录导入:根据微信号综合......
  • H5网页跳转微信小程序
    获取scheme码该接口用于获取小程序scheme码,适用于短信、邮件、外部网页、微信内等拉起小程序的业务场景。目前仅针对国内非个人主体的小程序开放,详见获取URLscheme。 效果:https://www.youlingrc.com/minishare.html项目地址:https://github.com/yusheng9/openwxchat H......
  • uniapp+node.js+mysql前后端微信小程序授权登录
    文章目录一、前端代码?1.微信授权登录的页面(没有样式,自己写)2.”我的“页面3.封装request.js的页面4.vuex的状态管理的页面5.添加了识别有放token的没有登录就自动跳转登录的功能的main.js页面二、后端代码1.数据库连接页面(sql.js)2.数据库页面封装查询用户与插入用户信息的页面以及......
  • websocket使用方法|vue实时推送
    WebSocket实时推送创建一个WebSocket对象:准备变量mounted(){//初始化consturi=window.location.href;//获取网页urlconstprotocol=uri.split("/")[0];//https:确定当前传输协议constdomain=uri.split("/")[2];//Iip:portconstwsPr......
  • 微信公众号文章批量转pdf
    操作步骤步骤一:下载离线html网页文件1、登录微信公众号后台,打开“发表记录”。2、按Ctrl+S或右击网页选择“另存为”,保存离线的html网页文件。(网页的文件后缀名是html)3、记住html文件保存路径(如下图最上面红色方框),并设置【html文件名称】。注意:html文件由序号1~n,html文件名称格......
  • 使用dataX进行大数据推送
    针对大数据量推送,常规的推送工具推送效率很慢,比如kettle,上千万的数据用时太长,因此,我使用了datax进行推送,1600万用时10分钟,2800万用时20分钟。用datax推送的效率很高在datax安装好了之后,推送的配置文件主要是配置json文件,全量推送可以放置在/datax/job 中但是......
  • 【教程】制作 iOS 推送证书
    ​ 【教程】制作iOS推送证书如需向iOS设备推送数据,您首先需要在消息推送控制台上配置iOS推送证书。iOS推送证书用于推送通知,本文将介绍消息推送服务支持的证书类型,并引导您制作iOS推送证书。证书类型消息推送服务仅支持ApplePushService类型的证书。有关苹果证......
  • 微信小程序自定义顶部导航栏并适配不同机型
    前言在小程序中,顶部导航栏是一个非常重要的组件,它不仅可以方便用户进行页面切换,还可以提高用户体验。默认情况下,小程序的顶部导航栏是由系统自动生成的,我们只能修改一些基本的样式,如背景色、文字颜色等。但是,如果想要实现更加复杂的样式,如自定义图标、自定义背景等,而且在不同的手......
  • uview1 的u-tabs组件在微信小程序中会出现横向滚动条
    uview1的u-tabs组件在微信小程序中会出现横向滚动条,真机才会生效,微信开发者工具没问题包括官方示例也会原因:未屏蔽微信小程序的滚动条解决办法:uview-ui中uview-ui/components/u-tabs/u-tabs.vue文件把h5屏蔽滚动条的条件编译加上 ||MP-WEIXIN/*#ifdefH5||MP-WEIXIN*/......