微信小程序uniapp+springboot实现小程序服务通知

news/2024/11/28 21:12:46/

微信小程序uniapp+springboot实现小程序服务通知

1. 实现效果

image-20230620165955759

2. 模板选用及字段类型判断

2.1 开通订阅消息,并选用模板

如果点击订阅消息让开启消息订阅开启后就可以出现以下页面,我本次使用的模板是月卡到期提醒模板,点击选用即可

image-20230620170127969

2.2 查看模板字段类型

TemplateId后续会使用,复制出来,点击详情查看模板信息

image-20230620171144528

image-20230620171518987

2.3 查询对应字段类型的限制

订阅消息参数值内容限制说明

我们的字段是character_string.DATA,time和thing,只需要遵守其规则即可

参数类别参数说明参数值限制说明
thing.DATA事物20个以内字符可汉字、数字、字母或符号组合
number.DATA数字32位以内数字只能数字,可带小数
letter.DATA字母32位以内字母只能字母
symbol.DATA符号5位以内符号只能符号
character_string.DATA字符串32位以内数字、字母或符号可数字、字母或符号组合
time.DATA时间24小时制时间格式(支持+年月日),支持填时间段,两个时间点之间用“~”符号连接例如:15:01,或:2019年10月1日 15:01
date.DATA日期年月日格式(支持+24小时制时间),支持填时间段,两个时间点之间用“~”符号连接例如:2019年10月1日,或:2019年10月1日 15:01
amount.DATA金额1个币种符号+10位以内纯数字,可带小数,结尾可带“元”可带小数
phone_number.DATA电话17位以内,数字、符号电话号码,例:+86-0766-66888866
car_number.DATA车牌8位以内,第一位与最后一位可为汉字,其余为字母或数字车牌号码:粤A8Z888挂
name.DATA姓名10个以内纯汉字或20个以内纯字母或符号中文名10个汉字内;纯英文名20个字母内;中文和字母混合按中文名算,10个字内
phrase.DATA汉字5个以内汉字5个以内纯汉字,例如:配送中
enum.DATA枚举值只能上传枚举值范围内的字段值调用接口获取参考枚举值

3. vue前端进行授权

官方文档

此段代码只需放在某个方法,然后填入对应的template_id即可

            wx.requestSubscribeMessage({tmplIds: ['xxxx'],success (res) {console.log('接口调用成功的回调函数', res)},fail (err) {console.log('接口调用失败的回调函数', err)},complete () {console.log('接口调用结束的回调函数(调用成功、失败都会执行)')}})

授权效果

点击允许后我们可以向该用户(open_id)发送一次订阅消息

image-20230620172918479

4. 后端向订阅用户发送订阅消息

官方文档

4.1 接口

POST https://api.weixin.qq.com/cgi-bin/message/wxopen/template/uniform_send?access_token=ACCESS_TOKEN

4.2 请求参数:

记得看清楚是小程序模板还是公众号模板

image-20230620174311144

4.3 编写测试代码

  • 主要就是封装模板数据然后发送给接口

  • accessToken的获取方法我这里就不写了

    获取就是调用这个接口,把APPID和APPSECRET替换成自己的就行了,返回值中有accessToken

    https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

package com.admin;import cn.hutool.core.date.DateUtil;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONUtil;
import com.admin.domain.Card;
import com.admin.mapper.CardMapper;
import com.admin.util.WxUtils;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;import java.util.Date;
import java.util.HashMap;
import java.util.Map;/*** @author zr* @date 2023/6/20 15:23*/
@RunWith(SpringRunner.class)
@SpringBootTest
public class ExpireNotifyTest {@Autowiredprivate CardMapper cardMapper;@Testvoid name() {Card card = cardMapper.selectById(10);String today = DateUtil.formatDate(new Date());Map map = new HashMap();map.put("template_id","xxxx");map.put("page","");//点击详细跳转小程序页面,不填就没有查看详情map.put("touser","xxxx");//发送用户的open_id//跳转小程序类型:developer为开发版;trial为体验版;formal为正式版;默认为正式版map.put("miniprogram_state","developer");map.put("lang","zh_CN");Map data = new HashMap();Map character_string1 = new HashMap();character_string1.put("value",card.getCardNo());//15487517Map time2 = new HashMap();time2.put("value",card.getDoorValidEnd());//2023-06-20Map thing3 = new HashMap();thing3.put("value",card.getDoorValidEnd().compareTo(today)>0?"":"月卡已过期,请尽快延期");//月卡已过期,请尽快延期data.put("character_string1",character_string1);data.put("time2",time2);data.put("thing3",thing3);map.put("data",data);String accessToken = WxUtils.getXcxAccessToken();//获取小程序的accessTokenString url = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=ACCESS_TOKEN";String sendUrl = url.replace("ACCESS_TOKEN", accessToken);String post = HttpUtil.post(sendUrl, JSONUtil.toJsonStr(map));System.out.println(post);}
}

image-20230620175646729

5. 测试

因为之前在章节3时就允许了一次我们后端直接调用测试方法

image-20230620165955759


http://www.ppmy.cn/news/485905.html

相关文章

开放主板,开源‍服务器操作系统、数据库……华为在下一盘大棋?

又是一年华为全联接大会,这两天各种被刷屏,不仔细看,会觉得和往年差不多,新产品、新技术、新解决方案、新生态计划,年年都有。而认真回味一下发现又不对,今年的风向标完全变了,华为大谈特谈鲲鹏…

华南主板超频设置图解_支持XMP2.0,3000稳超3733MHz,威刚龙耀D60G超频体验

听说内存好像又要涨价了,但是看了看发现内存条价格似乎还是都比较便宜,现在很多RGB内存条似乎和常规的马甲条和普条价格都差不太多,RGB内存条有比较炫酷的灯光效果,配合主板的灯控可以展示不一样的灯光效果。最近入手了威刚XPG龙耀D60G RGB DDR4 3000 8G*2,以下将简称威刚…

重复消费和堆积

接受消息会重复这一现状,然后通过一些方法来消除重复消息对业务的影响 利用幂等性解决重复消息问题 幂等(其任意多次执行所产生的影响均与一次执行的影响相同。) 一个幂等的方法,使用同样的参数,对它进行多次调用和一…

Swift 周报 第三十一期

文章目录 前言新闻和社区注册 WWDC23 实验室和活动Apple Vision Pro 和 visionOS 撼世登场App Store 中新增的隐私功能 提案正在审查的提案 Swift论坛推荐博文话题讨论关于我们 前言 本期是 Swift 编辑组自主整理周报的第二十二期,每个模块已初步成型。各位读者如果…

6.16 map和set接口

目录 1 Map接口1.2 特点1.3 继承结构1.4 常用方法1.5 练习:Map常用方法测试2 HashMap2.3 练习:获取HashMap的数据2.4 练习:字符串中字符统计3、 set接口3.1 概述3.2 Set集合的特点3.3 常用方法3.4 HashSet3.5 练习: Set相关测试3.6 练习: Set…

在 Navicat Premium 中管理 MySQL 用户-第 1 部分:保护 Root 帐号

第 1 部分:保护 Root 帐号 管理数据库用户是数据库管理员(DBA)的主要职责之一。协调组织中的用户访问数据库的方式通常需要执行许多单独的任务,包括添加新用户,阻止已离开组织的用户的访问权限以及帮助无法登录的用户…

渗透测试思路总结

一、说明 《Metasploit 渗透测试魔鬼训练营》等书已经对渗透测试的步骤流程划分得比较合理透彻了,但感觉在多次通读该类书藉之后仍总感觉不得要领----要对一台给定的主机进行渗透还是不懂到底该如何着手。想来主要是存在以下两个问题。 第一个是在渗透操作系统时&…

本地搭建简单服务器运行静态页面

http-server http-server 服务依赖于node,要先安装node.js。 1、全局安装http-server npm install http-server -g 2、安装完成,查看版本 npm http-server --version 3、进入到需要访问的文件目录下,打开powershell窗口~运行命令&#xf…