微信小程序开发笔记 进阶篇⑧——Java后端推送订阅消息 | HTTPS调用,消息卡片,跳转页面

news2024/11/23 15:12:17

文章目录

  • 一、前言
  • 二、接口说明
  • 三、access_token 获取
  • 四、消息模板
  • 五、参数page
  • 六、参考

一、前言

微信小程序开发笔记——导读

微信小程序开发笔记 进阶篇⑦——小程序订阅消息 | 发起订阅,获取当前设置

  • 小程序前端做好消息订阅的准备工作
  • Java后端将数据按照消息模板的格式,推送给微信用户

本博文主要讲述:Java后端如何将数据按照消息模板的格式,推送给微信用户

二、接口说明

  • 发送订阅消息 | 微信开放文档
  • HTTPS 调用
    • POST https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=ACCESS_TOKEN
  • 请求参数
属性类型必填说明
access_tokenstring接口调用凭证,该参数为 URL 参数,非 Body 参数。使用access_token或者authorizer_access_token
template_idstring所需下发的订阅模板id
pagestring点击模板卡片后的跳转页面,仅限本小程序内的页面。支持带参数,(示例index?foo=bar)。该字段不填则模板无跳转
touserstring接收者(用户)的 openid
datastring模板内容,格式形如 { “key1”: { “value”: any }, “key2”: { “value”: any } }的object
miniprogram_statestring跳转小程序类型:developer为开发版;trial为体验版;formal为正式版;默认为正式版
langstring进入小程序查看”的语言类型,支持zh_CN(简体中文)、en_US(英文)、zh_HK(繁体中文)、zh_TW(繁体中文),默认为zh_CN
  • 返回参数
属性类型说明
errcodenumber错误码
errmsgstring错误信息
public static JSONObject getBillData(Bill bill){
    JSONObject createTime = new JSONObject();
    createTime.put("value", DateUtils.parseDateToStr("yyyy/MM/dd HH:mm:ss", bill.getCreateTime()));

    JSONObject houseName = new JSONObject();
    houseName.put("value", bill.getTenantHouseName());

    JSONObject landlordName = new JSONObject();
    landlordName.put("value", bill.getLandlordName());

    JSONObject totalCost = new JSONObject();
    totalCost.put("value", bill.getTotalCost()+"元");

    JSONObject jsonObject = new JSONObject();
    jsonObject.put("time5", createTime);
    jsonObject.put("thing1", houseName);
    jsonObject.put("thing2", landlordName);
    jsonObject.put("amount3", totalCost);
    log.info(jsonObject.toJSONString());
    return jsonObject;
}

public static JSONObject sentBillMessage(RestTemplateUtils restTemplateUtils, User user, Bill bill){
    try {
        String accessToken = getAccessToken(TENANT_APPID);
        JSONObject paramMap = new JSONObject();
        paramMap.put("access_token", accessToken);
        paramMap.put("touser", user.getTenantOpenId());
        paramMap.put("template_id", "zrnNqXdbDZFVlhEew5LfQ2nOW8pUG5CdJ4Vw1J__S5Q");
        paramMap.put("data", getBillData(bill));
        paramMap.put("page", "pages/main/main");

        JSONObject body = restTemplateUtils.getRestTemplate().postForEntity("https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token="+accessToken, paramMap, JSONObject.class).getBody();
        log.info(body.toJSONString());
        return body;
    }catch (Exception e){
        e.printStackTrace();
        log.error("sentMessage bill="+bill.toString()+", user="+ user.toString());
    }
    return null;
}

三、access_token 获取

  • 获取接口调用凭据| 微信开放文档
public static String getAccessToken(String appId){
    String objectStr="";
    try {
        objectStr = HttpUtil.get(String.format("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s",appId, getAppSecret(appId)));
        JSONObject jsonObject = JSON.parseObject(objectStr);
        return jsonObject.getString("access_token");
    }catch (Exception e){
        e.printStackTrace();
    }
    return null;
}

四、消息模板

  • 登录小程序
  • 功能—>订阅消息
  • 选用模块,复制模板ID

在这里插入图片描述

在这里插入图片描述

五、参数page

  • page参数不填的话,默认否。即没有进入小程序查看的按钮

在这里插入图片描述

在这里插入图片描述

六、参考

  • 发送订阅消息 | 微信开放文档
  • 获取接口调用凭据| 微信开放文档

觉得好,就一键三连呗(点赞+收藏+关注)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/344298.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot依赖管理特性

我们注意到,在项目的 pom.xml 配置文件中,引入的依赖 spring-boot-starter-web 并没有指定其版本号 而在 maven 依赖中却可以发现其版本号为 2.3.4.RELEASE,这说明 SpringBoot 自动帮我们引入了对应版本的依赖,那么在哪儿可以找到…

ChatGPT横空出世|超强大功能写代码、写情书、写文章、做设计火爆全网

会被人工智能替代的行业 不是孩子未来的发展方向 因为我们在有限的时间里 无法穷尽对技术的学习 那么人工智能无法替代的是什么? 最近火热的ChatGPT,是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人…

新来一个卷王,天天加班到2点,太让人崩溃......

在程序员职场上,什么样的人最让人反感呢?是技术不好的人吗?并不是。技术不好的同事,我们可以帮他。是技术太强的人吗?也不是。技术很强的同事,可遇不可求,向他学习还来不及呢。真正让人反感的&a…

第39天| 70. 爬楼梯 (进阶)、LeetCode322. 零钱兑换、LeetCode279.完全平方数

1.题目描述: 给定n阶台阶的楼梯,一次能跳m阶问跳到楼顶有多少种方法?假设m可以是1~9任意一种,weight[i] {1,2,3,4,5,6,7,8,9} 解法: 1.五步曲: ①将本题转换成背包问题---即给定容量为n的背包&#xff0c…

MySQL系统变量和自定义变量

1 系统变量1.1 查看系统变量可以使用以下命令查看 MySQL 中所有的全局变量信息。SHOW GLOBAL VARIABLES; MySQL 中的系统变量以两个“”开头。global 仅仅用于标记全局变量;session 仅仅用于标记会话变量;首先标记会话变量,如果会话变量不存在…

TCP实现可靠传输的实现

TCP实现可靠传输的实现 目录TCP实现可靠传输的实现ARQ协议停止等待协议(古老)连续ARQ协议累计重传(回退N帧的ARQ协议)缓存确认(选择重传ARQ协议)超时重传的时间选择TCP的流量控制零窗口探测报文段Nagle算法…

4.8 注解与自定义注解

文章目录1.概述2.注解的分类2.1 JDK注解2.2 元注解2.2.1 Target ElementType…2.2.2 Retention RetentionPolicy…3 自定义注解1.概述 在注解刚出现时,曾受到过好多程序员的鄙夷,觉得这就是多此一举的操作; 但随着时间的推移,越…

电子技术——电流镜负载的差分放大器

电子技术——电流镜负载的差分放大器 目前我们学习的差分放大器都是使用的是差分输出的方式,即在两个漏极之间获取电压。差分输出主要有以下优势: 降低了共模信号的增益,提高了共模抑制比。降低了输入偏移电压。提升了差分输入的增益。 由于…

【单目标优化算法】食肉植物优化算法(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

vant 4 正式发布,支持暗黑主题,那么是如何实现的呢

2022年10月25日首发于掘金,现在同步到公众号。11. 前言大家好,我是若川。我倾力持续组织了一年多源码共读,感兴趣的可以加我微信 lxchuan12 参与。另外,想学源码,极力推荐关注我写的专栏《学习源码整体架构系列》&…

八股文总是忘?一张图牢记JVM内存结构|金三银四系列

金三银四又来啦!八股文还是得复习起来,最近准备把一些常见的八股文知识点聊聊。本文详解了JVM内存结构和各个部分详细内容,应付面试绰绰有余!点击上方“后端开发技术”,选择“设为星标” ,优质资源及时送达…

visual studio2022配置opencv

标题:在vs下配置使用opencv 流程: 1、下载安装opencv 2、添加环境变量 3、vs中配置属性 4、使用 5、可能遇到的报错和解决 1、 下载安装opencv 官网下载地址: https://opencv.org/releases/ 我这里是windows环境,所以选择点击w…

Java数据结构之优先级队列

前言总是忘了优先队列的一些应用,其实这都是很基础的了。为了再加强印象,抄一遍吧。PriorityQueue简介PriorityQueue,即优先级队列。优先级队列可以保证每次取出来的元素都是队列中的最小或最大的元素(Java优先级队列默认每次取出…

微信小程序 if语法、for循环 条件渲染、列表渲染等讲解

这篇文章我想给大家学习的就是如何使用 if 去判断 组件的是显示和隐藏,如何使用for循环来渲染列表等重复的内容。 1.if语法的使用 在小程序中,我们可以使用wx:if"{{条件}}"来判断是否需要渲染该代码块 也可以用 wx:elif 和wx:else 来添加 el…

【java】Spring Boot -- Spring的IOC实现原理

文章目录IOC定义理解IOC不使用IOC:使用IOC:使用IOC的好处IOC提供被依赖对象的方式构造器注入setter 方法注入接口方式注入简单模拟IOC总结IOC定义 IoC 全称为 Inversion of Control,翻译为 “控制反转”,它还有一个别名为 DI&…

【Selenium】十分钟手把手带你学会WebDriver API

目录 1、定位元素【8种】 2、操作测试对象 3、添加等待 4、弹窗类型 5、浏览器的操作 6、键盘事件 7、选择框 8、上传文件 1、定位元素【8种】 元素定位是自动化测试的核心,想要去操作一个对象,第一步就是需要我们先去识别这个对象。每个对象就会…

全民ChatGPT热:快来解锁你的“全能网友”

前 言 2021年11月30日,OpenAI推出人工智能聊天原型ChatGPT,赚足了眼球,在AI界引发了类似AIGC让艺术家失业的大讨论。 据报道,ChatGPT在开放试用的短短几天,就吸引了超过 100 万互联网注册用户。并且社交网络流传出各种…

html5标签

图片:image 主要属性: src:源属性的值是图像的 URL 地址。 alt:用来为图像定义一串预备的可替换的文本。 注意事项: 注意: 假如某个 HTML 文件包含十个图像,那么为了正确显示这个页面,需要加…

速通Spring

尚硅谷2023最新版Spring6课程_bilibili 1 Spring 【强制】Spring是什么? 1) Spring是一款主流的Java EE轻量级开源框架。 轻量级:体积很小,且不需要依赖于其他组件。 2) 狭义的Spring。 Spring Framework。 3) 广义的Spring。 以Spring F…

python对多个csv文件进行合并(表头需一致)

之前写过python对【多个Excel文件】中的【单个sheet】进行合并,参考:点我 之前也写过python对【多个Excel文件】中的【多个sheet】进行合并,参考:点我 今天再写一个python对多个csv格式的文件进行合并的小工具 但是大家切记&am…