使用微信订阅消息给用户发送通知

前提:

1):第一个前提是你已经拿到了 appid和appsceart

2)  :第二个前提是去微信公众平台申请一个消息模板

 

内容:

1):首先获得AcesssToken 这里采用rest请求

        

   public static String getAccessToken() {
        RestTemplate restTemplate = new RestTemplate();
        Map<String, String> params = new HashMap<>();
        params.put("APPID", "你的appid");  //
        params.put("APPSECRET", "你的APPSECRET");  //
        ResponseEntity<String> responseEntity = restTemplate.getForEntity(
                "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={APPID}&secret={APPSECRET}", String.class, params);
        String body = responseEntity.getBody();
        JSONObject object = JSON.parseObject(body);
        String Access_Token = object.getString("access_token");
//        String expires_in = object.getString("expires_in"); //token保留时间为2个小时  需要定时去刷新
//        System.o
### 实现微信小程序订阅消息服务通知的方法 #### 小程序后台申请模板并获取模板 ID 为了能够发送订阅消息,在小程序管理后台需要先申请相应的消息模板,并从中获得模板 ID。这一步骤对于确保后续的消息推送合法性至关重要[^2]。 #### 用户订阅操作处理 当用户首次访问涉及订阅功能的小程序页面时,应展示订阅窗口让用户确认是否接收特定类型的通知。此过程通常通过调用微信 API `requestSubscribeMessage` 来实现,该接口允许请求用户授权同意接受来自指定模板的一次性或长期性的订阅消息[^3]。 ```javascript wx.requestSubscribeMessage({ tmplIds: ['your_template_id'], // 替换成实际取得的模板ID success(res) { console.log('User agreed:', res); }, fail(err) { console.error('Failed to subscribe', err); } }); ``` #### 后台服务器配置与云函数编写 利用微信提供的云开发能力,可以在云端创建一个负责处理订阅逻辑以及真正执行消息发送动作的云函数。这个过程中涉及到验证用户订阅状态、准备要传递的数据包等内容。具体来说: - **检查订阅权限**:每次尝试发送之前都要核实目标用户确实已经给予了相应类型的订阅许可; - **构建数据体**:按照官方文档定义好的格式组装好待发送的信息内容; - **发起 POST 请求至 WeChat Server**:最终借助 HTTP 客户端工具像 axios 或者 fetch 这样的库去触达微信公众平台所提供的 RESTful 接口完成消息投递工作[^1]。 ```javascript // 假设这是位于 cloudfunctions/send-subscribe-message/index.js 中的部分代码片段 const axios = require('axios'); exports.main = async(event, context) => { const { OPENID, FORM_ID, TEMPLATE_ID } = event; try { let response = await axios.post(`https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=${process.env.ACCESS_TOKEN}`, { touser: OPENID, template_id: TEMPLATE_ID, page: 'pages/index/index', data: { thing1: { value: "您的订单已发货" }, phrase2: { value: "感谢您购买我们的产品!" } } }); return response.data; } catch(error){ throw new Error(JSON.stringify(error)); } }; ``` #### 调试与发布上线 在整个流程搭建完毕之后,建议采用真实环境下的手机终端来进行完整的测试周期,包括但不限于模拟不同场景下触发条件的变化情况,观察预期之外的行为表现等。只有经过充分检验无误后才考虑正式对外提供此项特性给广大的使用者群体体验。
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xixililicm

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值