微信小程序模板消息推送

article/2025/9/10 10:47:15

时序图

​​​​​​​

 

首先,我们需要知道一件事情,小程序的模板推送分为“一次性订阅”和“长期订阅”

一次性订阅:用户订阅小程序后,程序只能对指定OpenId进行一次推送模板消息,无法多次推送

长期订阅:用户长期订阅,能够多次推送模板消息(长期订阅模板需要向微信官方发起申请)

推送模板消息前置配置

1.需要配置消息推送

2.需要根据AppId、AppSecret调用开发文档Api获取access_token 

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

2.需要使用access_token调用以下Api获取到微信用户的open_id

POST https://api.weixin.qq.com/wxa/getpluginopenpid?access_token=ACCESS_TOKEN

推送模板消息API

微信开发文档中的模板消息已经废弃不进行使用了,我们现在应该使用“订阅消息”——>“send”这个API(下方链接)

subscribeMessage.send | 微信开放文档

 其中参数的data属性,需要我们在代码中与之对应:

例如:

模板格式

参数类型:

 类型:(需要注意一些长度限制

 上边的准备好就可以进行代码编写。

代码实现

1.模板消息:(所要传的参数实体

public class WxSubscribeMsg {// 接收人idprivate String touser;// 模板idprivate String template_id;// 跳转小程序private String page;// 模板数据private Map<String, WxTemplateValue> data;// 跳转小程序类型 默认正式版private String miniprogram_state;// 语言类型 默认中文private String lang = "zh_CN";public String getTouser() {return touser;}public void setTouser(String touser) {this.touser = touser;}public String getTemplate_id() {return template_id;}public void setTemplate_id(String template_id) {this.template_id = template_id;}public String getPage() {return page;}public void setPage(String page) {this.page = page;}public Map<String, WxTemplateValue> getData() {return data;}public void setData(Map<String, WxTemplateValue> data) {this.data = data;}public String getMiniprogram_state() {return miniprogram_state;}public void setMiniprogram_state(String miniprogram_state) {this.miniprogram_state = miniprogram_state;}public String getLang() {return lang;}public void setLang(String lang) {this.lang = lang;}
}

 2.模板内容:(API中的data属性

public class WxTemplateValue {private String value;public String getValue() {return value;}public void setValue(String value) {this.value = value;}@Overridepublic String toString() {return "WxTemplateValue{" +"value='" + value + '\'' +'}';}
}

 3.返回数据接收

public class WxUserInfo {private String openid;private String session_key;private String unionid;private int errcode;private String errmsg;public String getOpenid() {return openid;}public void setOpenid(String openid) {this.openid = openid;}public String getSession_key() {return session_key;}public void setSession_key(String session_key) {this.session_key = session_key;}public String getUnionid() {return unionid;}public void setUnionid(String unionid) {this.unionid = unionid;}public int getErrcode() {return errcode;}public void setErrcode(int errcode) {this.errcode = errcode;}public String getErrmsg() {return errmsg;}public void setErrmsg(String errmsg) {this.errmsg = errmsg;}
}

 推送代码:

调用的API接口:

POST https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=ACCESS_TOKEN
WxSubscribeMsg wxSubscribeMsg = new WxSubscribeMsg();wxSubscribeMsg.setTouser(openId);wxSubscribeMsg.setTemplate_id(templateId);// 模板消息到小程序跳转页面wxSubscribeMsg.setPage("pages/workbench/workbench?id=" + dto.getId()+"&pageTpye=task");
//                             开发版
//                            wxSubscribeMsg.setMiniprogram_state("developer");
//                             跳转体验版wxSubscribeMsg.setMiniprogram_state("trial");
//                             跳转正式版
//                            wxSubscribeMsg.setMiniprogram_state("formal");// 模板消息Map<String, WxTemplateValue> map = new HashMap<>();// 发布内容WxTemplateValue keyword1 = new WxTemplateValue();keyword1.setValue(sendContent);map.put("thing1", keyword1);// 影响区域WxTemplateValue keyword2 = new WxTemplateValue();String taskArea = dto.getSecondAreaName()+dto.getThirdAreaName();if(taskArea.length() < 20){keyword2.setValue(taskArea);}else{keyword2.setValue("");}map.put("thing2", keyword2);// 发布时间WxTemplateValue keyword3 = new WxTemplateValue();String date = dto.getTaskStartTime()keyword3.setValue(date);map.put("date3", keyword3);// 发布单位WxTemplateValue keyword4 = new WxTemplateValue();String group = dto.getName();if(group.length() < 20){keyword4.setValue(group);}else{String substring = group.substring(0, 20);keyword4.setValue(substring);}map.put("thing4", keyword4);// 推送模板参数wxSubscribeMsg.setData(map);// 参数转jsonString json = JSONObject.toJSONString(wxSubscribeMsg);// 调用微信推送模板接口String doPostJson = HttpClientUtil.doPostJson(requestUrl, json);// 将获取到的数据进行判断进行日志写入JSONObject jsonObject = JSONObject.parseObject(doPostJson);LOGGER.info("调用微信模板消息回调结果:"+ com.wanwei.oneview.base.utils.JsonUtils.objectToJson(jsonObject));


http://chatgpt.dhexx.cn/article/IwbAMx0U.shtml

相关文章

小程序发送模板消息给用户 —— 一次性模板实现“长期订阅”

大家好&#xff01;我是我玩亚索我会C&#xff0c;在写小程序时&#xff0c;我们会有向用户发送消息的需求&#xff0c;比如发送提醒通知&#xff0c;或者是一些重要通知来形成一个服务的闭环。这就要用到微信的发送消息功能了&#xff0c;下面我使用Java语言来详细演示下如何使…

小程序发送模板消息详细步骤

小程序发送通模板消息详细步骤 步骤一&#xff1a;获取模板id步骤二&#xff1a;页面的form组件&#xff0c;属性report-submit为true时&#xff0c;可以声明为需发模板消息&#xff0c;此时点击按钮提交表单可以获取formId&#xff0c;用于发送模板消息。或者当用户完成支付行…

小程序模板消息

一,制定小程序订阅消息模板 示例图片 (图1) 首先我们来讲一下如何获取制定微信小程序的订阅消息模板, 如图1所示我们首先要登录到微信公众平台,如图 而后进入到图1所示的订阅消息这个页面, 如果你是首次进入的话那么需要开通, 这里比较简单就不用讲解了, 如果说进入之后…

微信小程序能实现盈利的7大流量主广告组件及其分成模式概览

前段时间涉足了微信小程序流量主广告的接入&#xff0c;所以就学习和了解了一下相关的介绍与接入场景。因此做一下笔记记录。 概览 微信小程序流量主广告组件有Banner 广告、激励视频广告、插屏广告、小程序视频广告、视频前贴广告、Grid 广告、原生模板广告等。 基础介绍 什…

小程序无限插屏广告实现方法

大家好啊&#xff0c;最近突然想到一个问题&#xff0c;自己做为一个程序员&#xff0c;每天发的公众号文章和程序根本没半毛钱关系&#xff0c;靠分享一些破解软件浑浑度日&#xff0c;再这样下去恐怕要废。所以今天给自己技术群的狗子们分享一个小知识点&#xff0c;如何让你…

我做的小程序,昨天赚了 2.06 元广告费

我做的小程序&#xff0c;昨天赚了 2.06 元广告费 先看一下广告上线三天的收益&#xff0c;虽然不多&#xff0c;但很快乐hhh。 2020 年 6月接触了小程序云开发&#xff0c; 那时候还不太会写太复杂的小程序界面&#xff0c;于是就找了几个开源的框架改了改。 因为当时所处的行…

小程序流量主运营

个人和小微企业可通过小程序流量主进行变现&#xff0c;如果你擅长推广&#xff0c;有较多的粉丝那么小程序变现无疑是一种很好的收入渠道。小程序流量主的开通渠道门槛并不高——满1000人即可开通流量主。 那么我们运营什么样的小程序开通流量主进行流量变现呢&#xff1f;以…

Uni-app 小程序 APP 的广告变现之路:插屏广告

插屏广告 插屏广告组件是由客户端原生的图片、文本、视频控件组成的&#xff1b;一般来说&#xff0c;插屏广告可以实现比传统信息流广告和banner广告展现更大的广告尺寸&#xff0c;同样能够满足您对大量曝光和用户转化的需求。 平台差异说明 AppH5微信小程序支付宝小程序百…

小程序进入首页时弹出广告

项目需求&#xff0c;判断用户是否开通会员&#xff0c;没开通会员的话每次进入小程序弹出一个引导开通会员的弹窗&#xff0c;已经开通会员的不在弹 先看下效果图 wxml代码 <!-- 广告展示 --><view class"mask" hidden"{{showAd}}"><view…

uniapp 小程序 加载显示激励视频广告

uniapp激励广告文档&#xff1a;uni-app官网https://uniapp.dcloud.io/api/a-d/rewarded-video微信官网激励广告文档&#xff1a;激励视频广告 | 微信开放文档微信开发者平台文档https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/ad/rewarded-video-a…

微信 小游戏/小程序 广告组件被驳回 审核不通过

最近做微信小游戏开发&#xff0c;接入广告时遇到一些问题&#xff0c;被驳回了好几次。 相信大家接过微信小游戏或者小程序广告都晓得&#xff0c;接入很简单&#xff0c;不论是banner广告还是激励视频广告只要在合适的位置合适的时机去展示广告&#xff0c;都会顺利审核通过…

微信小程序添加激励式广告

目录 微信小程序创建项目配置底部导航栏 微信小程序滚动播放内容 微信小程序功能中心模块开发 微信小程序个人中心页面开发 微信小程序获取电话号码 微信小程序显示列表数据 微信小程序显示分页列表 微信小程序添加插屏广告 微信小程序添加激励式广告 最终效果可扫码查看 遇…

微信小程序添加插屏广告

目录 微信小程序创建项目配置底部导航栏 微信小程序滚动播放内容 微信小程序功能中心模块开发 微信小程序个人中心页面开发 微信小程序获取电话号码 微信小程序显示列表数据 微信小程序显示分页列表 微信小程序添加插屏广告 微信小程序添加激励式广告 最终效果可扫码查看 遇…

小程序banner广告和激励广告

小程序banner广告和激励广告 1、小程序banner广告 1.1、先要在小程序公众后台获取广告位ID 代码片 <view class"empty"><ad unit-id"广告id"></ad></view>注意事项&#xff1a; Banner 广告不允许直接设置样式属性&#xff0c;…

小程序也能接广告了,微信小程序广告位投放指南!

小程序也能接广告了&#xff0c;微信小程序广告位投放指南! 3月15日消息&#xff0c;据爆料&#xff0c;微信已经开始秘密测试在小程序中投放广告&#xff0c;并且流传出了一份《微信小程序广告位投放指引》&#xff0c;意味着微信小程序已经准备开启广告投放权限。面向10亿用户…

做了个小程序,广告收益2.60元广告费

呜呜呜&#xff0c;做了个小程序&#xff0c;广告收益好少啊&#xff01; 第一天投放&#xff0c;曝光了一千多&#xff0c;只有两块的收益ecmp好低&#xff01;&#xff01;&#xff01; 这收入实在太低了&#xff0c;一千多的曝光量才两块哎 用的banner和视频广告两个 视频…

小程序流量主申请,如何增加小程序广告的点击率?

小程序开发者千千万&#xff0c;真正赚$的却没有多少&#xff0c;尤其是像我这种个人业余开发者。不过&#xff0c;有想法不去实现一把总会觉得心有不甘&#xff0c;送大家一句话&#xff1a;为道者&#xff0c;虽千万人吾往矣&#xff01; 相信大多数小程序开发者和我一样&am…

小程序设置激励广告

1、申请好广告&#xff0c;获取广告代码 2、在要放广告的wxml页面&#xff0c;放入点击弹出激励广告按钮 <view wx:if"{{isshow 0}}" bindtap"adshow" style"text-align: center;background-color: #F8F8F8;height: 70rpx;margin-top: 34rpx;lin…

微信小程序——添加广告

微信小程序——添加广告 要想在微信小程序中加入广告&#xff0c;首先要在微信小程序后台开通流量主 流量主需要满足&#xff1a;1、累计独立访问&#xff08;uv)不低于1000&#xff1b;2、有严重违规的小程序不与开通。 广告主要有&#xff1a;banner广告、激励视频广告、卡…

微信小程序广告接入

个人推荐: &#x1f4e2;&#x1f4e2;&#x1f4e2; 前些天发现了一个蛮有意思的人工智能学习网站,8个字形容一下 "通俗易懂&#xff0c;风趣幽默"&#xff0c;感觉非常有意思,忍不住分享一下给大家。点击跳转到教程。 1.广告接入 前天看了看以前写的微信小程序&am…